Codeforces Round #451 (Div. 2)题解
来源:互联网 发布:菲律宾跳水队 知乎 编辑:程序博客网 时间:2024/06/05 14:09
比赛时间
2017 12 16 19:35-21:35。
结果
+133rating。
感想
这是第一次打cf,两个小时实际上因为回寝时间只打了一个半小时。
总共六道题写了五道,感觉还可以,英文直接看(借助有道词典)大多也能看懂。
最后+133rating还是挺高兴的,也没有被hack掉(当然也没时间hack别人)。
题解
A Rounding
一个简单的四舍五入,没啥好说。
#include<bits/stdc++.h>#include<cstdio>using namespace std;long long n;int main(){ cin>>n;//不能%lld真的很奇怪? if(n%10>=5)n=(n/10+1)*10; else n=n/10*10; cout<<n; return 0;}
B Proper Nutrition
一眼ex-gcd,两眼暴力加模拟。
#include<bits/stdc++.h>using namespace std;int n,a,b;int read(){ int num=0;char c=getchar(); for(;c<'0'||c>'9';c=getchar()); for(;c>='0'&&c<='9';c=getchar()) num=(num<<3)+(num<<1)+c-48; return num;}void end(){ printf("NO"); exit(0);}int main(){ n=read();a=read();b=read(); for(int i=0;;++i){ if(1LL*i*a>n)end(); if((n-i*a)%b==0){ printf("YES\n"); printf("%d %d\n",i,(n-i*a)/b); exit(0); } } return 0;}
C Phone Numbers
绝妙的暴力+字符串处理。
#include<bits/stdc++.h>using namespace std;struct people{ int num; string in,s[1000];}p[25];int n,cnt;string s;int read(){ int num=0;char c=getchar(); for(;c<'0'||c>'9';c=getchar()); for(;c>='0'&&c<='9';c=getchar()) num=(num<<3)+(num<<1)+c-48; return num;}void init(){ n=read(); for(int i=1;i<=n;++i){ cin>>s;int j,t; for(j=1;j<=cnt;++j) if(p[j].in==s)break; p[j].in=s; cnt=max(cnt,j); t=read(); for(int k=1;k<=t;++k) cin>>p[j].s[p[j].num+k]; p[j].num+=t; } for(int i=1;i<=cnt;++i){ for(int j=1;j<=p[i].num;++j) for(int k=1,flag=1;k<=p[i].num;++k){ int lena=p[i].s[j].length(); int lenb=p[i].s[k].length(); flag=1; if(j==k) continue; if(!lena||!lenb)continue; if(lena<lenb) continue; for(int o=1;o<=lenb;++o) if(p[i].s[j][lena-lenb+o-1]!=p[i].s[k][o-1]){ flag=0; break; } if(!flag)continue; p[i].s[k]=""; } } printf("%d\n",cnt); for(int i=1;i<=cnt;++i){ cout<<p[i].in<<' '; int temp=0; for(int j=1;j<=p[i].num;++j) if(p[i].s[j]!="")++temp; printf("%d",temp); for(int j=1;j<=p[i].num;++j) if(p[i].s[j]!="") cout<<' '<<p[i].s[j]; printf("\n"); }}int main(){ init(); return 0;}
D Alarm Clock
贪心与查分思想的简单运用。
#include<bits/stdc++.h>using namespace std;int n,m,k,sum=0,ans,maxx,flag[1000010]={};int read(){ int num=0;char c=getchar(); for(;c<'0'||c>'9';c=getchar()); for(;c>='0'&&c<='9';c=getchar()) num=(num<<3)+(num<<1)+c-48; return num;}void work(){ n=read();m=read();k=read(); for(int i=1;i<=n;++i){ int x=read(); maxx=max(maxx,x); flag[x]=1; } for(int i=1;i<=maxx;++i){ if(i>=m)sum-=flag[i-m]; sum+=flag[i]; if(sum>=k){ ++ans; --sum; flag[i]=0; } } printf("%d",ans);}int main(){ work(); return 0;}
E Squares and not squares
计算两种情况的花费之后用了两个队列,每次取更小的队头。
#include<bits/stdc++.h>using namespace std;struct point{ int lo,hi,in; int yes,no;}a[200010];int n,b[200010],c[200010];long long ans=0;int read(){ int num=0;char c=getchar(); for(;c<'0'||c>'9';c=getchar()); for(;c>='0'&&c<='9';c=getchar()) num=(num<<3)+(num<<1)+c-48; return num;}void init(){ n=read(); for(int i=1;i<=n;++i){ a[i].in=read(); int lo=(int)sqrt(a[i].in); int hi=lo+1; a[i].lo=a[i].in-lo*lo; a[i].hi=hi*hi-a[i].in; a[i].yes=min(a[i].lo,a[i].hi); if(a[i].lo&&a[i].hi)a[i].no=0; else a[i].no=a[i].in?1:2; }}void work(){ for(int i=1;i<=n;++i){ b[i]=a[i].yes; c[i]=a[i].no; } sort(b+1,b+n+1); sort(c+1,c+n+1); int hb=1,hc=1; while(hb<=n/2||hc<=n/2){ //printf("%d %d %d %d\n",hb,hc,b[hb],c[hc]); if(hb>n/2){ ans+=c[hc]; ++hc; }else if(hc>n/2){ ans+=b[hb]; ++hb; }else if(b[hb]<c[hc]){ ans+=b[hb]; ++hb; }else{ ans+=c[hc]; ++hc; } } cout<<ans;}int main(){ init(); work(); return 0;}
F Restoring the Expression
暂时还没有做过。
阅读全文
0 0
- Codeforces Round #451 (Div. 2)题解
- 【codeforces】Codeforces Round #276 (Div. 2) 题解
- 【codeforces】Codeforces Round #277 (Div. 2) 题解
- 【codeforces】Codeforces Round #279 (Div. 2) 题解
- 【codeforces】Codeforces Round #283 (Div. 2) 【题解】
- 【codeforces】Codeforces Round #291 (Div. 2) 题解
- Codeforces Round #451 (Div. 2) A-C题解
- Codeforces Round #451 (Div. 2) A-B 题解
- Codeforces Round #131 (Div. 2) 完整题解
- Codeforces Round #135 (Div. 2)题解
- Codeforces Round #192 (Div. 2) 题解报告
- Codeforces Round #194 (Div. 2) 题解
- Codeforces Round #216 (Div. 2)部分题解
- Codeforces Round #226 (Div. 2) 题解
- Codeforces Round #177 (Div. 2) 题解
- Codeforces Round #FF (Div. 2) 题解
- Codeforces Round #256 (Div. 2) 题解
- Codeforces Round #257 (Div. 2) 题解
- bzoj2661:[BeiJing wc2012]连连看——费用流 + 拆点
- win10系统下,python中Numpy包的安装及使用
- 生日悖论扩展引申1-c++代码实现
- iOS开发网络篇 一一 JSON解析
- Codeforces Round #451 (Div. 2) A-C题解
- Codeforces Round #451 (Div. 2)题解
- Visual Studio的语言服务器协议
- 1003. Emergency (25)(floyd)
- 自动类型安全的REST .NET标准库refit
- 使用Windows兼容包简化向.NET Core的迁移
- hibernate配置文件
- haskell学习笔记(1)
- 页面呈现
- 单例模式浅谈