[Codeforces Round #530 (Div. 2)] A,B,C
前言:
这是一场十分难受的cf,分数1551 → 1548
,基本上算是变化不大,4min
出的A,有点慢,但是考虑到题意稍微有点坑人,总的来说能够接受,9min
莽了一发B,然后就开始开C,C的做法不是特别好,在调试的时候出了一点问题,WA了几发,45min
出的C,(这个时候就开始被队友陆陆续续超过了,后期乏力,我恨啊),到最后D都没有调的出来,赛后学长告诉我这个地方用DFS的写法可能会更好一点,还是重新去补一下好了。前期题的速度基本上算是可以保证了,下面补题的重心应该在三四两题了,蓝瘦香菇。
A. Snowball
题意
从某个高度开始有一个雪球滚落,会根据高度不断积攒自己的重量,途中有两块石头,撞到石头要减去石头的重量,如果不足,则置零,但是注意,即使质量为零,雪球也不会停止滚动。
做法
按题意暴力模拟就好了
代码
#include <cstdio>
using namespace std;
int main()
{
int n,h;
scanf("%d%d",&n,&h);
int u1,u2,d1,d2;
scanf("%d%d%d%d",&u1,&d1,&u2,&d2);
for(int i=h;i>0;i--)
{
n+=i;
if(i==d1)
n = max(0,n-u1);
if(i==d2)
n = max(0,n-u2);
}
printf("%d",n);
}
B. Squares and Segments
题意
Sofia想做出n个小正方形,问她最少需要用尺规做出几条边。
理解下来的意思就是说,我们需要一个使得(x+y)尽可能小的x*y的表格可以放下n个小正方形。
做法
对n开根号,求出一条边x,另一条对n除x做上取整。
代码
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
int ans = sqrt(n);
ans += (n+ans-1)/ans;
printf("%d",ans);
}
C. Postcard
题意
给定一个字符串,对于每一个‘ ? ’可以删去或保留前面的一个字符,对于每一个’ * ',可以删去或保留或重复多次前一个字符。再给定一个数,问,是否有满足长度要求和操作要求的串,如果有,输出,如果没有,返回-1。
做法
统计?和*的个数,对不同的情况进行分类处理。
代码
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
char a[1000];
int main()
{
scanf("%s",a);
int k;
scanf("%d",&k);
int len = strlen(a);
int cntc = 0;
int cnts = 0;
for(int i=0; i<len; i++)
{
if(a[i]=='?')
cntc++;
if(a[i]=='*')
cnts++;
}
if(k<len-2*cntc-2*cnts)
{
printf("Impossible\n");
return 0;
}
if(cnts==0)
{
int tmp = len - cntc - k;
if(tmp<0)
{
printf("Impossible\n");
return 0;
}
for(int i=0; i<len; i++)
{
if(a[i+1]=='?')
{
if(tmp)
tmp--;
else
printf("%c",a[i]);
i++;
}
else
{
printf("%c",a[i]);
}
}
}
else
{
int tmp = len - cntc -cnts - k;
if(tmp>0)
{
for(int i=0; i<len; i++)
{
if(a[i+1]=='?'||a[i+1]=='*')
{
if(tmp)
tmp--;
else
printf("%c",a[i]);
i++;
}
else
{
printf("%c",a[i]);
}
}
}
else
{
for(int i=0; i<len; i++)
{
if(a[i+1]=='?')
{
printf("%c",a[i]);
i++;
}
else if(a[i+1]=='*')
{
while(tmp<0)
{
printf("%c",a[i]);
tmp++;
}
printf("%c",a[i]);
i++;
}
else
{
printf("%c",a[i]);
}
}
}
}
}