8月11日 集训测试
B
题目链接
http://acm.hust.edu.cn/vjudge/problem/24840
题意
给出一个天枰的文字描述,问最少修改多少次可以使天枰的所有支点都是平衡的。
题解
找一个基准(depth*weigh),把其他所有的重量的基准都修改为这个值,那么只要这个基准的出现次数最多,那么修改的次数也就越少。sum-基准次数。
代码
#include<iostream>
#include<queue>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<string>#include<cctype>#include<algorithm>#include<vector>#include<map>
using namespace std;int main()
{ int t;scanf("%d",&t);while(t--){string st;cin>>st;int n=st.size();int cnt1=0,cnt2=0;map<long long,int>num;int cnt3=0;for(int i=0;i<n;i++){if(st[i]=='['){cnt1++;cnt2++;} //出现一个'['深度就+1else if(isdigit(st[i])) //只要是数字就开始“基准”处理{ long long numm=st[i]-'0';i++;while(isdigit(st[i])){numm=numm*10+st[i]-'0';i++;if(i>=n){break;}}i--;long long aa=1;for(int j=0;j<cnt1;j++)aa*=2;numm*=aa;num[numm]++;cnt3++;}else if(st[i]==']')cnt1--; //出现一个']'深度-1}map<long long,int>::iterator it=num.begin();//用一个map映射基准出现的次数,最后找到出现次数最多的基准。int ans=-1;for(;it!=num.end();it++){ans=max(ans,it->second);}if(cnt2==0)printf("0\n");else printf("%d\n",cnt3-ans);}return 0;
}
C
题目链接
http://acm.hust.edu.cn/vjudge/problem/22883
题意
切披萨,问n刀下去,披萨可以被切成几块。
题解
ans=1+((n+1)*n)/2;
D
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=4334
题意
给出5个数的集合,问能否从每个集合中选出一个数,使5个数之后等于0。
题解
先把前两个集合的数的和依次求出来,得到新集合n1,然后同样处理第三第四个集合得到新集合n2,遍历第五个集合中的每个元素x,n=n1+x,二分查找在n2集合中是否存在n的相反数。
代码
#include<iostream>
#include<queue>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<string>#include<cctype>#include<algorithm>#include<vector>using namespace std;long long a[7][300];int main(){int t;scanf("%d",&t);while(t--){for(int i=0;i<7;i++)for(int j=0;j<300;j++)a[i][j]=0;int n;scanf("%d",&n);for(int i=0;i<5;i++)for(int j=0;j<n;j++)scanf("%lld",&a[i][j]);vector<long long>s1;vector<long long>s2;for(int i=0;i<n;i++){for(int j=0;j<n;j++){long long t=a[0][i]+a[1][j];s1.push_back(t);}} //处理第一第二个集合for(int i=0;i<n;i++){for(int j=0;j<n;j++){long long t=a[3][i]+a[4][j];s2.push_back(t);}} //处理第三第四个集合sort(s1.begin(),s1.end()); //排序后二分查找sort(s2.begin(),s2.end());int ok=0;for(int i=0;i<n;i++){for(int j=0;j<s1.size();j++){long long t=a[2][i]+s1[j];int op=lower_bound(s2.begin(),s2.end(),-t)-s2.begin();//二分查找if(s2[op]+t==0){ok=1;break;}}if(ok==1)break;}if(ok==1)printf("Yes\n");else printf("No\n");}return 0;}
F
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=4346
题意
只要存在i位置为R,j位置也为R,并且(i+j)/2位置为G,那么这条路就是美丽的,问最多可以构造出多少条美丽的路。
题解
正面构造感觉特别难,不能把所有情况按某种思路一次找出来。所有就反着来了,美丽的串=总的串数-不美丽的串。而不美丽的串,首先满足条件,相邻的两个R之间的距离为奇数,易得。其次,所有的R之间的距离应该是相同的。反正法,假如R1,R2,R3,R1与R2之间的距离不等于R2与R3之间的距离,因为奇数+奇数=偶数,那么R1与R3之间距离是偶数,存在(R1+R3)/2点,但这个点不是R2,是G,所有事美丽串,与条件矛盾。简而言之就是R1与R3中间的判断点一个要是个R。
然后就好了,遍历R的起点,遍历所有奇数距离,判定是否所有的R都满足不美丽串条件,最后total-unbea。
代码
#include<iostream>
#include<queue>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<string>#include<cctype>#include<algorithm>#include<vector>using namespace std;const long long mod=1e9+7;int main(){ std::ios::sync_with_stdio(false);int t;cin>>t;while(t--){string st;cin>>st;int unknow=0,r_num=0;for(int i=0;i<st.size();i++){if(st[i]=='R')r_num++;if(st[i]=='?')unknow++;}int n=st.size();long long unbea=0;if(r_num==0)unbea++; //R为0时,一种不美丽串特判for(int i=0;i<n;i++){ if(st[i]=='R'||st[i]=='?'){int zz=0;if(st[i]=='R')zz=1; //判断初始的一个R是否满足if(zz==r_num){unbea=(unbea+1)%mod;}for(int j=1;j+i<n;j+=2){ int z=zz;for(int k=i+j;k<n;k+=j){if(st[k]=='R')z++;if(st[k]=='G')break;if(z==r_num){unbea=(unbea+1)%mod;} //满足一次就+1}}}}long long cc=1;for(int i=0;i<unknow;i++){cc=(cc*2)%mod;} //这开始的时候写傻逼了 居然写成了cc*=2%mod; 这分明就没有Mod嘛。。。long long ans=cc-unbea;cout<<ans<<endl;}return 0;}
G
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=4371
题意
一个博弈问题,一个人x开始写0=s1,然后另外一个人y任选一个数加上去得到s2,然后x可以有两个选择,一个在n的基础上可以任意加一个数得到s3,s3不能大于n,或者任意减一个数得到s3,但减的时候s3>s1,即s3必须大于前前个数。当一个人无法操作时,即认输。
题解
一个贪心的博弈,首先我们排除选大的数的情况- -,因为你选大数,别人就选小的数求差,那么你就只能一直选大的数,直到最后输。这个游戏是由最小的数和上限来决定输赢的,上限/最小的数=奇数,则Alice赢,偶数则Bob赢。上面已经分析了,选大数一点赢的希望都没有,那就只有选最小的数,两个人都一直选最小的数,知道最后一个人没办法选了,决出胜负。
代码
#include<iostream>
#include<queue>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<string>#include<cctype>#include<algorithm>#include<vector>using namespace std;int main(){int t;scanf("%d",&t);for(int i=1;i<=t;i++){int n,m;scanf("%d%d",&n,&m);int minx=1e9+9;for(int j=0;j<m;j++){int z;scanf("%d",&z);minx=min(minx,z);}int t=n/minx;if(t%2==1)printf("Case #%d: Bob\n",i);else printf("Case #%d: Alice\n",i);}return 0;}
8月11日 集训测试相关推荐
- 【名企招聘】5月11日18点,学科网岗位招聘来啦~Java、前端、UI、测试等众多岗位供你选择
为了帮助企业更好的应对用人难的挑战,CSDN面向所有企业全新升级了CSDN2022雇主品牌计划,在企业发展.吸引人才.连接人才.宣传公司多个维度提供专属的支持. ----本次为学科网专场---- 直播 ...
- 第二期安全狗讲坛3月11日开始
2019独角兽企业重金招聘Python工程师标准>>> 3月4日下午3点,第一期"安全狗讲坛"在安全狗论坛开展,在广大枸杞的热心参与下,整个讲坛火热且有序,并在一 ...
- 鸿蒙生态系统第一梯队,鸿蒙系统9月11日,将有望正式成为国际第三大手机操作生态系统...
原标题:鸿蒙系统9月11日,将有望正式成为国际第三大手机操作生态系统 众所周知,当时华为鸿蒙系统还处于1.0版本的时候,这项技术就已经被运用到了荣耀智能屏上,目前该系统也已经过渡到了华为的手表上,经过 ...
- 鸿蒙系统手机9月11日,鸿蒙系统9月11日,将有望正式成为国际第三大手机操作生态系统...
原标题:鸿蒙系统9月11日,将有望正式成为国际第三大手机操作生态系统 众所周知,当时华为鸿蒙系统还处于1.0版本的时候,这项技术就已经被运用到了荣耀智能屏上,目前该系统也已经过渡到了华为的手表上,经过 ...
- 鸿蒙系统9月11号上市吗,9月11日鸿蒙系统2.0要搭载华为全家桶来了,你期待吗?...
如何看待华为将于2020年9月11日发布鸿蒙系统2.0版本?对此你有何据<科创板日报>消息,华为鸿蒙系统(HarmonyOS)将于今年9月11日举行的华为开发者大会上发布2.0版本.201 ...
- 阴阳师服务器维修拖延,阴阳师12月11日更新维护公告 阴阳师百闻牌联动开启
原标题:阴阳师12月11日更新维护公告 阴阳师百闻牌联动开启 12月11日,阴阳师进行了新版本的更新维护,此次的更新开启了终章以及阴阳师百闻牌的联动活动,很多玩家还不清楚具体的更新内容,下面就来为大家 ...
- 【历史上的今天】9 月 11 日:Adobe 公司联合创始人出生;现代游戏机鼻祖诞生;谷歌推出 Android Pay
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 9 月 11 日,21 年前,一起事件除了改变美国的许多家庭,也一定程度上改变了全世界以航天业为主的 ...
- dnf手游服务器维护时效,DNF手游延期到2021年2月11日是真的吗 延期日期详细说明...
DNF手游延期大家都已经知道了,但是很多玩家看到贴吧上写的期到2021年2月11日,本次就为大家带来了DNF手游延期到2021年2月11日是真的吗,也是延期日期详细说明,希望能帮到大家. DNF手游延 ...
- 6月12gta5服务器维护,gta520176月11日这会更新什么了 | 手游网游页游攻略大全
发布时间:2016-02-29 CF2016年8月11日对服务器进行例行维护.这次维护大家会感觉没什么可更新的呀.来看看99单机小编熊卜卜的CF8月11日服务器维护更新公告 修复火线币商城bug哈. ...
最新文章
- mysql在电脑哪里启动项_所有电脑和主板开机选择启动项的快捷键
- python代码大全o-python文件编码及执行
- [SCOI2007] 蜥蜴 (最大流)
- QT写入cmd命令并且调用,以及指定路径新建文件夹
- 泛型与操作符重载杂谈
- iOS开发零碎知识点
- 如何判断数据背离正态分布?
- SharePoint 2013的REST编程基础
- 数据特征分析:2.对比分析
- centos6.8 安装python3.6
- Android学习小Demo(9)一个To Do List的实现
- 关于jenkins打包部署
- windows 安装 win32 win32com模块
- PID解释与离散化算法公式
- windbg分析BSOD dump文件实战
- 计算机专业分数线最新,计算机专业近三年录取分数线分析
- 动画练习-360度旋转-animation
- Android opengles 动态调节高斯模糊
- c++ opencv保存图片
- 在cygwin安装HOMER和最全使用说明