Educational Codeforces Round 118 (Rated for Div. 2) A-C
D的难度跨度太大了,先不写了。
A. Long Comparison
给出一个数字x1,后面添加p1个0,一个数字x2,后面添加p2个0。比较两个数字的大小,输出比较的情况。
x和p都是10的6次方的范围,直接乘肯定炸,那我们肯定是一边比一边乘,分情况讨论。
1.如果后面加0的个数相同,那么只要比较x1和x2的大小就可以了
2.如果加的0个数不同,我们要再分两种情况讨论,具体的看代码吧。
#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int main()
{ll t,n,x1,x2,p1,p2;cin>>t;while(t--){cin>>x1>>p1;cin>>x2>>p2;if(p1==p2) //直接比较x1,x2就可以了{if(x1>x2) {cout<<">"<<endl;continue;}if(x1==x2) {cout<<"="<<endl;continue;}if(x1<x2) {cout<<"<"<<endl;continue;}}if(p1>p2) //如果x1的0多{ll i;int f=0;i=p1-p2;if(x1>=x2) {cout<<">"<<endl;continue;} //x1比x2还大,x1后面的0也多else{while(i--) //如果x1比x2小,就开始乘0{ x1=x1*10;if(x1>x2) {f=1;break;} //乘到x1比x2大,输出就行}if(f==1) {cout<<">"<<endl;continue;} if(f==0){ //到最后都乘完都没x2大if(x1==x2) {cout<<"="<<endl;continue;}if(x1<x2) {cout<<"<"<<endl;continue;}}}}if(p1<p2) //和上面的道理一样{ll i;int f=0;i=p2-p1;if(x1<=x2) {cout<<"<"<<endl;continue;}else{while(i--){ x2=x2*10;if(x2>x1) {f=1;break;}}if(f==1) {cout<<"<"<<endl;continue;}if(f==0){if(x1==x2) {cout<<"="<<endl;continue;}if(x1>x2) {cout<<">"<<endl;continue;}}}}}
}
本来十分钟就可以ac的,手打太快了导致有个符号写成了”-“,wr了一次还花了一分钟检查,多了11的罚时…
B. Absent Remainder
给出几组大小为n的数组,要在其中找到x,y需满足三个条件1.x!=y。2.x,y都是数组中的元素。3.xmody的余数不存在于数组中,输出n/2组答案即可。
比赛的时候我并没有想到简单的方法,直接用二重循环暴力查找,用map来记录数组中的数,只要找到n/2组数据就打破循环,这样虽然复杂度很高,但是只要找到n/2组数据就行了,所以还是ac了。
后来闲的没事去看别人的视频,发现人家排序完用其他的数余第一个数直接就过了…
#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int a[200001];
int main()
{int i,n,t,j;cin>>t;while(t--){cin>>n;int ans=0,num=0;int k=0;ans=n/2;map<int,int>b;for(i=0;i<n;i++){cin>>a[i];b[a[i]]=1;}sort(a,a+n);for(i=0;i<n;i++){for(j=i+1;j<n;j++){if(num==ans) {k=1;break;}int x=a[j];int y=a[i];if(b[x%y]==0) {cout<<x<<" "<<y<<endl;num++;}}if(k==1) break;}}
}
C. Poisoned Dagger
打一个杀龙的游戏,你可以给龙使毒。给出t组数据,每组数据包含一个数组的大小n和龙的血量h,这个数组表示在这些时间你可以毒一次龙,在龙中毒期间毒它就刷新毒素但并不叠加。输出毒死这只龙,这个毒药应该持续的最短时间。
血量h最大为10的18次方,肯定不能直接遍历。我首先想到了二分答案,但是t的大小有1000,n有100,还要二分10的18次方,我选择用贪心去做了(其实二分完全能过,我想多了)。
贪心的想法是,我们要找到毒药的最小持续时间,最小的情况是什么?肯定是每一段毒的持续时间都没有浪费(即最小区间大于血量h除毒的次数的这个平均值)。但是对于一些情况,并没有满足我们想要的这个平均值,该人物就又再次使毒了,这样我们就只能减去它,然后再次使用这样的贪心思想。这时我们已经用掉了一个区间,所以求平均值的时候分母要减1了。从小到大一直采用这种思想,直到找到这些区间的最小值都大于这个平均值,那么接下来我们就可以把这些毒平分给每个区间了。以前减掉的那些区间不用管,对于我们现在找到的最小值肯定比以前减去的那些区间要大,那些毒浪费了就浪费了,我们没有办法。
我这里说的浪费毒是一种平均的思想,前面如果你小于平均值来毒龙,后面你就要用更长持续时间的毒药来毒死它,这样毒持续的最短时间就要加大。
#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int main()
{int i,n,t,j;cin>>t;while(t--){ll a[101];ll b[101];ll h;cin>>n>>h;for(i=0;i<n;i++){cin>>a[i];}for(i=0;i<n;i++){b[i]=a[i+1]-a[i]; //我们把这些使毒的时间之差取出来再排个序}b[n-1]=100000000000000000000; //和龙的战斗时间非常长,最后一个区间是非常大的sort(b,b+n);int k=n;ll aver;int q=0;for(i=0;i<n;i++){aver=h/k; if(h%k!=0) aver=aver+1; //如果平均值还有余数,那么平均值就要加一if(aver<=b[i]) {break;}//后面的区间毒不会被浪费了,平均分就可以了if(aver>b[i]) {h=h-b[i]; //我们想要平分的毒会被浪费掉,只能把它减去,继续分析下一次平分的情况k--;}}cout<<aver<<endl;//输出这个我们千辛万苦找到的平均分配的值}
}
我怀疑有同学偷看我cf的代码,咳咳。
Educational Codeforces Round 118 (Rated for Div. 2) A-C相关推荐
- Educational Codeforces Round 118 (Rated for Div. 2)/C. Poisoned Dagger
记录自己两个月前打CF以来第一个在时限内过掉的C题(好耶!) 简单二分 #include<bits/stdc++.h> using namespace std; #define ll lo ...
- Educational Codeforces Round 118 (Rated for Div. 2) C. Poisoned Dagger(二分或搜索)
C. Poisoned Dagger 题意: Monocarp is playing yet another computer game. In this game, his character ha ...
- 【CodeForces】Educational Codeforces Round 118 (Rated for Div. 2)【A-C】
A. Long Comparison 思路 先判断字符长度 相等的字符长度判断填满0后判断字典序 AC代码 #pragma GCC optimize("Ofast") #pragm ...
- Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...
- Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...
- Educational Codeforces Round 37 (Rated for Div. 2) 1
Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...
- Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)
Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...
- Educational Codeforces Round 89 (Rated for Div. 2)(A, B, C, D)
Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords 思路 题意非常简单,就是得到最多的物品嘛,我们假定a, ...
- Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs
传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...
最新文章
- VSTO之旅系列(一):VSTO入门
- mySql安装时常见问题处理
- mongodb简单的函数
- 一家创业公司发展历程-真实记录
- openssl工具的使用以及创建私有CA
- div中的table内容过多时不超出div的范围解决方法
- uni-app获取腾讯地图计算两经纬度的实际距离(可批量)
- angularjs详解
- s905各种型号的区别_2020榨汁机推荐,榨汁机、原汁机和破壁机有什么区别?高性价比榨汁机、原汁机怎么选?...
- 一转眼,距 2021 竟然就不到 65 天了,你准备好了么?
- mongodb-Configuration
- wacom数位板怎么调压感_手绘板压感是什么 数位板压感怎么调【教程】
- C#开发WebService实例和发布
- 计算机除了冯诺依曼架构,什么是实用的非冯·诺依曼架构?
- 媒体:28省份已开展不动产登记机构整合工作
- 鸿蒙系统桌面壁纸,华为鸿蒙桌面怎么设置好看
- 中文谚语 enlish version
- Matlab实现蚂蚁群算法
- C++ string乱码可能解决方案
- 武汉好地科技浅析军工保密资质与涉密资质的区别
热门文章
- 数据可视化:对比漏斗图多维度分析大学在校实际开销情况
- 宁波保税区通证经济产业园开园,33复杂美CEO吴思进应邀出席
- 多智能体协同:实现智能系统的合作与共赢
- WebApp开发实践
- wireshark拦截手机数据包
- 静默安装ogg12.3提示ACTION: Specify an empty directory or an Oracle home containing the selected Oracle Gol
- 【BZOJ2893】征服王
- errmsg:config:invalid signat
- 女生适合学计算机应用技术,计算机应用技术专业 好就业吗?适合女生学吗?...
- android小工具-系统音量管理器