当前位置: 首页 > news >正文

Codeforces Round 957 (Div. 3)(A~E题解)

这次比赛只能用抽象来形容,前五道题都没有什么算法,都是思维加模拟都能过,然后第四题卡住了,第五题不知道为什么做出来的人那么少,就是纯暴力就能过,但是没抓住上分的机会,有些可惜,但是还好打完比赛把第四个重新补出来了,感觉大模拟的题还是不太擅长,以后可以练习一下

话不多说,直接看题

A. Only Pluses

 

 题意:就是给你三个数,三个数一共可以增加的次数为5,问你增加完之后,其三个数的乘积最大值为多少

思路:思路就是小学数学题,但是因为实现有问题,也是卡了我20分钟,我就知道这次比赛直接白搭

每次选取出来三个数里面最小的一个加上1就可以

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int a,b,c;int solve(int a,int b,int c)
{return min(min(b,c),a);
}signed main()
{cin>>t;while(t--){cin>>a>>b>>c;for(int i=1;i<=5;i++){int flag=solve(a,b,c);if(a==flag){a++;continue;}else if(b==flag){b++;continue;}else if(c==flag){c++;continue;}}cout<<a*b*c<<"\n";}return 0;
}

B. Angry Monk

 题意:就是说每次操作只能将一块蛋糕分成1和w-1或者将一个重量为w,另一个重量为1的拼起来

思路:很明显就能想到,除了最大的一块外,别的都是分割操作w-1次,拼接操作w次,因此就可以直接写出来了

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,k;
int a[100005];
signed main()
{cin>>t;while(t--){int maxn=0;int flag=0;cin>>n>>k;int ans=0;for(int i=1;i<=k;i++){cin>>a[i];if(a[i]>maxn){maxn=a[i];flag=i;}}for(int i=1;i<=k;i++){if(i==flag)continue;ans+=a[i]*2-1;}cout<<ans<<"\n";}return 0;
}

C. Gorilla and Permutation

 

题意:给你一个n,m,k,然后f函数里面是前i个数里面不小于k的值的和,因此前面就从大到小倒着来就可以,然后当轮到倒数第m个后,要从前往后来,确保前面的数更小,累加值更大

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,m,k;
int a[100005];
signed main()
{cin>>t;while(t--){cin>>n>>m>>k;for(int i=n;i>=m+1;i--){a[i]=i;}for(int i=1;i<=m;i++){a[i]=m-i+1;}for(int i=n;i>=1;i--){cout<<a[i]<<" ";}cout<<"\n";}return 0;
}

D. Test of Love

 纯模拟的题,一开始忘了区分当前位置在水里还是在木头上,错了好几次,后面打完比赛也是想到这个问题了,后面才改对的

pair<int,int> old,第一个数存的是当前位置的下标,第二个存的是当前在水里还是在木头上

如果木头上,我们需要判断下一个木头距离当前位置的的距离,如果小于m则直接更新old的first即可,然后如果大于m,则需要判断当前位置+m后在哪里,如果是鳄鱼,那么肯定是no

如果是水,判断水和下一个木头的位置,如果中间存在鳄鱼,那么也是不可能的,如果没有鳄鱼,则需要判断如果游泳,会不会超过k,如果总游泳没有超过k,则可以,更新old的first和second即可

#include<bits/stdc++.h>
using namespace std;
#define int long long
int t;
int n,m,k;
char s[200005];
int sum=0;
int ans=0;void solve()
{sum=0;//在水中游的距离 cin>>n>>m>>k;for(int i=1;i<=n;i++){cin>>s[i];}if(m>n){cout<<"YES\n";return;}s[n+1]='L';pair<int,int> old;old.first=0;old.second=0;for(int i=1;i<=n+1;i++){if(s[i]=='L'&&old.second==0)//现在位置在陆地上 {if(i-old.first<=m){old.first=i;old.second=0;continue;}else{if(s[old.first+m]=='C'){cout<<"NO\n";return ;}else{old.first+=m;old.second=1;i--;}}}if(s[i]=='L'&&old.second==1){for(int j=old.first;j<i;j++){if(s[j]=='C'){cout<<"NO\n";return;}sum++;if(sum>k){cout<<"NO\n";return ;}}old.first=i;old.second=0;}}cout<<"YES\n";return ;
}signed main()
{cin>>t;while(t--){solve();}return 0;
}

E. Novice's Mistake

 

题意:就是说你一个字符串乘以一个数等于a个n链接在一起,减去一个数,就相当于减去一部分,如果减的太多了,那字符串没了,直接就是0

思路:这题数据很小纯暴力就能过

首先可以说明,对于100这个数据,无论你选什么数,你都无法正确得出结果,因此为0个解,直接输出0即可

对于别的数,再分是否小于10,和大于10就行(太困了,明天再补全)

#include <bits/stdc++.h>
using namespace std;
#define int long long
int t; 
int n; int jie() 
{cin>>n; if(n == 100) return 3;vector<pair<int, int>> ans;if(n<10) {for(int a = 1; a <= 10000; a++) {for(int b = max(1LL, a - 6); b < a; b++) {int res = n * a - b;bool flag = true;for(int i = 1; i <= a - b; i++) {if(res % 10 != n) flag = false;res /= 10;}if(res) flag = false;if(flag) ans.emplace_back(a, b);}}} else {for(int a = 1; a <= 10000; a++) {for(int b = max(1LL, a + a - 6); b < a + a; b++) {int res = n * a - b;bool flag = true;for(int i = 1; i <= a + a - b; i++) {if((i + b) & 1) {if(res % 10 != n % 10) flag = false;} else {if(res % 10 != n / 10) flag = false;}res /= 10;}if(res!=0) flag = false;if(flag) ans.emplace_back(a, b);}}}cout<<ans.size()<<"\n";for(int i = 0; i<ans.size();i++){cout<<ans[i].first<<" "<<ans[i].second<<'\n';}return 0;
}signed main() {cin>>t;while(t--) {int d=jie();if(d==3){cout<<"0\n";}}return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Flutter【组件】标签
  • 【数据结构】初探数据结构面纱:栈和队列全面剖析
  • uniapp中使用uni-ui组件库
  • NLP任务中三个概念标记、样本映射和偏移映射三个概念的浅析
  • 【MIT 6.5840/6.824】Lab1 MapReduce
  • 【记录】CSS|Tailwind 的主题定义的颜色的使用方法(--color啥的)
  • 昇思25天学习打卡营第17天|应用实践之SSD目标检测
  • GPT生成文本的实际案例 - Transformer教程
  • 【Cesium开发实战】飞行漫游功能的实现,可设置漫游路径,漫游高度,暂停,继续,删除路径
  • Python爬虫并输出
  • 在若依框架基础上开发新功能
  • 基于YOLOV8的数粒机视觉计数解决方案
  • C# 实现基于exe内嵌HTTPS监听服务、从HTTP升级到HTTPS 后端windows服务
  • 【C++】CMake入门
  • React_自定义组件_下拉框
  • C学习-枚举(九)
  • download使用浅析
  • Fabric架构演变之路
  • node.js
  • PHP面试之三:MySQL数据库
  • Spark学习笔记之相关记录
  • vue 个人积累(使用工具,组件)
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 动态规划入门(以爬楼梯为例)
  • 对JS继承的一点思考
  • 模型微调
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 什么是Javascript函数节流?
  • 怎样选择前端框架
  • ​2020 年大前端技术趋势解读
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • (1) caustics\
  • (Java入门)抽象类,接口,内部类
  • (多级缓存)缓存同步
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (杂交版)植物大战僵尸
  • .gitignore文件---让git自动忽略指定文件
  • .net core 6 redis操作类
  • .NET 解决重复提交问题
  • .net下简单快捷的数值高低位切换
  • .NET学习教程二——.net基础定义+VS常用设置
  • .NET运行机制
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @Autowired自动装配
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [BZOJ3223]文艺平衡树
  • [C#]OpenCvSharp 实现Bitmap和Mat的格式相互转换
  • [C#]winform部署官方yolov10目标检测的onnx模型
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [ERR] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘(已解决)
  • [GN] 后端接口已经写好 初次布局前端需要的操作(例)
  • [hive]中的字段的数据类型有哪些
  • [JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制
  • [LeetCode][138]【学习日记】深拷贝带有随机指针的链表