Codeforces Round #387 (Div. 2) A+B+C+D!
水题,暴力(数据都是水题)。0:04
int main()
{
int n;
while(~scanf("%d",&n))
{
int mi=n;
int a=0,b=0;
for(int i=1;i<=n;i++)
if(n%i==0)
{
int k=n/i;
if(k>=i)
{
if(k-i<mi)
{
a=i;
b=k;
mi=k-i;
}
}
else
{
if(i-k<mi)
{
a=k;
b=i;
mi=i-k;
}
}
}
printf("%d %d\n",a,b);
}
return 0;
}
也是水题,模拟。0:15
题意:给定一个只包含A、C、T、G这几种核苷酸及‘?’的字符串,把?用这四种核苷酸代替要求这个字符串每种核苷酸的数量都相同,如果存在解输出任意一种,反之-1.
思路:先看长度n是否为4的倍数,然后求出平均数,再求出每种字符的数量,如果这四种字符最多的一种数量比平均数大则不行,反之一层循环遇到?补过去即可。
int main()
{
int n;
while(~scanf("%d%s",&n,s))
{
if(n%4) printf("===\n");
else
{
int k=n/4;
int num=0;
int a=0,g=0,c=0,t=0;
int a1=0,g1=0,c1=0,t1=0;
for(int i=0;i<n;i++)
{
if(s[i]=='A') a++;
if(s[i]=='G') g++;
if(s[i]=='C') c++;
if(s[i]=='T') t++;
if(s[i]=='?') num++;
}
if(max(a,max(g,max(c,t)))>k) printf("===\n");
else
{
a1=k-a;
if(a1<0) a1=0;
g1=k-g;
if(g1<0) g1=0;
c1=k-c;
if(c1<0) c1=0;
t1=k-t;
if(t1<0) t1=0;
for(int i=0;i<n;i++)
{
if(s[i]!='?') printf("%c",s[i]);
else
{
if(a1)
{
printf("A");
a1--;
continue;
}
if(g1)
{
printf("G");
g1--;
continue;
}
if(c1)
{
printf("C");
c1--;
continue;
}
if(t1)
{
printf("T");
t1--;
continue;
}
}
}
printf("\n");
} } }
return 0;
}
还是水题,模拟。写的时候还担心10^7会不会超时,暴力一发初判过了(0:45)。看来就就这样写,但忽略的一个细节问题终判跪了。。
题意:n台机器编号1-n,有q个任务每个任务有一个出现时间t和需要k台机器一起完成及需要d时间完成。每次都是从编号小的并且没有被占用的机器中选,如果某个任务能完成则输出所有机器的编号总和,反之-1。
思路:用一个数组存每台机器做任务的结束时间,开始清0。每次一个任务的开始时间如果比这台机器的结束时间大则可以占用这台机器,并把这台机器的结束时间调至t+d-1。如果不够k台机器则输出-1。
这里需要注意的是每个任务下来要先判断是否至少有k台机器空闲。博主为了简化代码直接找k台机器并改掉相应时间,而如果某个任务需要的机器数满足不了但又把一些机器的时间改了这样就会出错的。
int a[N];
int main()
{
int n,q;
while(~scanf("%d%d",&n,&q))
{
memset(a,0,sizeof(a));
int t,k,d;
while(q--)
{
scanf("%d%d%d",&t,&k,&d);
int sum=0;
int j=1,x=k;
while(j<=n&&k)//先判断是否至少有k台机器空闲。
{
if(a[j]<t) k--;
j++;
}
if(k) printf("-1\n");
else
{
for(int i=1; i<=n&&x; i++)
if(t>a[i])
{
a[i]=t+d-1;
sum+=i;
x--;
}
printf("%d\n",sum);
}
}
}
return 0;
}
莫名其妙的熟悉感。凛冬将至--中山大学某队名
贪心题,C题水过后发现这题并不难,理清思路怼一发过了(初判1:45),然后终判跪在第43组,昨晚的悲剧重演。我把D题都做出来了容易吗,昨晚D题跪在第50组,今天D题跪在43组。咸鱼永不翻身啊!CF的套路总是那么深,温馨提示(仅对新手):如果样例能过20组以上,思路基本是正确的,细节问题需要注意一下,比如数据范围或者特殊数据,而一般思路有问题10组以内必跪。还有不用想着钻CF的数据空子,前人血的教训!不说了,看题!
题意:贝尔兰冬天很冷,那么司机要换上冬天专用轮胎才能开车。假设冬天一共有n天,有一套冬天专用轮胎,仅能使用k天,这套轮胎不管什么温度都能用,而夏天用的轮胎只能在温度非负的日子里使用,问要平安开n天的车最少需要换几次轮胎(穿上和脱下都算)。
思路:开始想着一个一个贪心:就是假设温度为负只出现一次,看情况讨论,假设温度为负的天气有多天再分情况。然而却发现如果把所有温度为负的天数提取出来(连续的算一次),先算最坏的。然后再补回去(这里需要按两次时间间隔排序)。
const int N=2e5+7;
struct s
{
int dis,c,d;
} b[N];
int a[N];
int cmp(s a,s b)
{
return a.dis<b.dis;
}
int main()
{
int n,k;
while(~scanf("%d%d",&n,&k))
{
int len=0,sum=0;
memset(b,0,sizeof(b));
b[0].dis=INF;
for(int i=1; i<=n; i++) scanf("%d",&a[i]);
for(int i=1; i<=n; i++)
if(a[i]<0)
{
int j=i;
while(a[j]<0&&j<=n) j++;
b[len].c=j-i;//一次持续时间
b[len].d=j-1;//截止日期;
if(len) b[len].dis=i-b[len-1].d-1;//间隔时间,不可能为0
len++;
i=j-1;
}
if(len==0)//没有0下的温度不用换,急于求成忘了考虑了。。
{
printf("0\n");
continue;
}
int finally=b[len-1].d;//最后的截止时间;
int distent=n-finally;
sum+=2*len;//最坏的情况
for(int i=0; i<len; i++) k-=b[i].c;//温度为负只能用冬用轮胎
if(k<0)
{
printf("-1\n");
continue;
}
sort(b,b+len,cmp);
for(int i=0;i<len;i++)
{
if(k)
{
if(k>=b[i].dis)
{
k-=b[i].dis;
sum-=2;//少了一次穿上和一次脱下;
}
}
}
if(k>=distent) sum--;
printf("%d\n",sum);
}
return 0;
}
其实就是这么简单,初判过了还剩14分钟,看了看E题发现也是很水的不过没时间做了,接下来补了E题吧!
第一次直接怼出四个题本想着咸鱼翻身结果悲剧重演终判直接掉了两个,欲哭无泪啊!
总结:手速有待提高,A题B题思路秒有但代码实现还是有点慢,C题读题慢了,读懂了发现暴力10^7,担心2s过不去,但700+人过了,怼一发秒过。结果忽略了一种情况。D题读题也有点慢了,理解了题意思路还是不够敏捷,还好前面的题A的快,留下了足够的时间。发现了一种思路实现有点麻烦代码没有很快写出来,debug费时。样例过了却没有考虑特殊数据直接交,虽然A了但终判还是跪了。。。不能急于求成啊,一直都是这样,被利益迷惑了。手速又跟不上思维,况且思维还慢。。再战!总有一天咸鱼会一跃而起的!
Codeforces Round #387 (Div. 2) A+B+C+D!的更多相关文章
- Codeforces Round #387(div 2)
A =w= B VOV C QoQ D 题意:贝尔兰冬天很冷,那么司机要换上冬天专用轮胎才能开车.假设冬天一共有n天,有一套冬天专用轮胎,仅能使用k天,这套轮胎不管什么温度都能用,而夏天用的轮胎只能在 ...
- Codeforces Round #387 (Div. 2) 747F(数位DP)
题目大意 给出整数k和t,需要产生一个满足以下要求的第k个十六进制数 即十六进制数每一位上的数出现的次数不超过t 首先我们先这样考虑,如果给你了0~f每个数字可以使用的次数num[i],如何求长度为L ...
- Codeforces Round #387 (Div. 2) 747E
这题本身是个水题,但是写了半天 题意就是给出一个树的生成方式,让你还原这棵树,然后按深度输出结点 这个还原过程还是比较有趣的(没有用递归) PS:getline的新姿势get #include < ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- Codeforces Round #262 (Div. 2) 1003
Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...
随机推荐
- iOS7改变状态栏文字颜色
1在Info.plist中设置UIViewControllerBasedStatusBarAppearance 为NO2 在需要改变状态栏颜色的 AppDelegate中在 didFinishLaun ...
- SpringMVC之基于注解的Controller
参考博客:https://www.cnblogs.com/qq78292959/p/3760560.html Controller注解: 传统风格的Controller需要实现Controller接口 ...
- Backbone.js入门教程第二版笔记(3)
视图渲染 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- Unity Mesh 初体验
什么是Mesh Mesh是Unity中的一个组件,称为网格组件.通俗的讲,Mesh是指模型的网格,3D模型是由多边形拼接而成,而一个复杂的多边形,实际上是由多个三角面拼接而成.所以一个3D模型的表面是 ...
- 使用vbScript 链接SQLserver数据库和基础操作
使用vbs链接SQLserver数据库 数据库的创建.设计使用 management studio完成 1.本地链接数据库 set oCon = server.createObject("a ...
- Oracle EXPDP and IMPDP
一.特点 • 可通过 DBMS_DATAPUMP 调用 • 可提供以下工具: – expdp – impdp – 基于 Web 的界面 • 提供四种数据移动方法: – 数据文件复制 – 直接路径 – ...
- css 两列 左侧列固定 width: 100px; float: left; 右侧列自适应 margin-left:100px; 注意要用在div上的style
css 两列 左侧列固定 width: 100px; float: left; 右侧列自适应 margin-left:100px; 注意要用在div上的style .con1{ width: 100p ...
- 微信公众号:theTree20181123
哈哈哈哈~我开通了一个微信公众号,以后的文章会发在公众号内啦~走过路过的小伙伴们过来围观一下呀~~ 主要是分为三个模块:视觉SLAM,ACM,变美树洞 这里面写下来的文章都是我再读研阶段的所学所想当然 ...
- Openjudge-4110-圣诞老人的礼物
这一题是一道贪心的题目,但是它比较特殊的地方在于糖果可以分开拿,我们不必整箱拿,所以我们可以直接就把糖果按照价值比从大到小排序,然后整箱装不下的时候,剩余重量乘以它的价值比,这样就算出来了. 对于结构 ...
- windows中彻底卸载mysql
1)停止MySQL服务 打开控制面板→管理工具→服务(找到MySQL) 2)卸掉mysql server 打开控制面板→程序与功能→找到mysql server然后卸载 3)将mysql目录下的安装文 ...