Codeforces Round #418 (Div. 2) ABCD
来源:互联网 发布:淘宝的trw轮毂好用么 编辑:程序博客网 时间:2024/06/05 00:23
一个小时做了三道题…第四道结束的时候wxl给我讲了一下贪心做法…当时看到题目吓虚了压根不敢写…结果也不是特别麻烦
【A】
An abandoned sentiment from past
构造一个序列,如果序列只能严格上升输出No,否则输出Yes
好像很可做的样子…大家自己YY吧,我这题被hack了艹
【B】
An express train to reveries
给两个数列,每个数列只能改动一个数字,使最终两个数列完全相同,输出改动后的数列。
分类讨论…好像很可做的样子…大家自己YY吧,我这题又被hack了艹
【C】
An impassioned circulation of affection
额这题没被hack,这是我唯一真正A掉的题233…
枚举每个数字,dp[k][cnt]表示字母k可以染色cnt次所能get到的最长连续字母串。O(26n^2)暴力扫一遍就可以处理出来…
终于可以上个代码了
//C#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define ll long long#define M(a) memset(a,0,sizeof a)#define fo(i,j,k) for(i=j;i<=k;i++)using namespace std;const int mxn=1505;char s[mxn],ch;int n,q,c;int a[mxn],dp[28][mxn];int main(){ int i,j,x,k; scanf("%d",&n); scanf("%s",s+1); scanf("%d",&q); fo(i,1,n) a[i]=s[i]-'a'+1; fo(k,1,26) fo(i,1,n) { int cnt=0; for(j=i;j>=1;j--) { if(a[j]!=k) cnt++; dp[k][cnt]=max(dp[k][cnt],i-j+1); } } fo(k,1,26) fo(i,1,n) if(!dp[k][i]) dp[k][i]=dp[k][i-1]; while(q--) { scanf("%d",&x); cin>>ch; c=ch-'a'+1; printf("%d\n",dp[c][x]); } return 0;}
【D】
An overnight dance in discotheque
给出一堆不相交的圆…分成两个集合,最大化两个集合圆面积异或并的和
如果一个圆覆盖一个小圆,那么大圆向小圆连边,拓扑排序一发后可以发现这些圆套圆可以变成很多个森林,把每个森林拿出来单独考虑。
考虑贪心,深度为1,深度为2的圆要放在两个集合中,下面深度奇数的圆减去,深度偶数的圆加上即可。
//CF D. An overnight dance in discotheque#include<queue>#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define pi acos(-1)#define eps 1e-10#define ll long long#define M(a) memset(a,0,sizeof a)#define fo(i,j,k) for(i=j;i<=k;i++)using namespace std;queue <int> q;const int mxn=1005;double ans;int n,cnt,du[mxn],step[mxn],head[mxn];struct edge {int to,next;} f[mxn*mxn]; inline void add(int u,int v){ f[++cnt].to=v,f[cnt].next=head[u],head[u]=cnt;}struct circle{ double x,y,r;}c[mxn];inline double dis(circle a,circle b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}inline double calc(circle a){ return pi*a.r*a.r;}inline void topsort(){ int i,j; fo(i,1,n) if(!du[i]) q.push(i); while(!q.empty()) { int u=q.front();q.pop(); for(i=head[u];i;i=f[i].next) { int v=f[i].to; du[v]--; if(!du[v]) step[v]=step[u]+1,q.push(v); } } fo(i,1,n) if(!step[i] || step[i]&1) ans+=calc(c[i]); else ans-=calc(c[i]);}int main(){ int i,j; scanf("%d",&n); fo(i,1,n) scanf("%lf%lf%lf",&c[i].x,&c[i].y,&c[i].r); fo(i,1,n) fo(j,1,i-1) if(dis(c[i],c[j])<c[i].r+c[j].r-eps) { if(c[i].r>c[j].r) add(i,j),du[j]++; else add(j,i),du[i]++; } topsort(); printf("%.8lf\n",ans); return 0;}
阅读全文
1 0
- Codeforces Round #418 (Div. 2) ABCD
- Codeforces Beta Round #67 (Div. 2) ABCD
- Codeforces Round #191 (Div. 2) ABCD
- Codeforces Round #193 (Div. 2) ABCD
- Codeforces Round #211 (Div. 2) ABCD
- Codeforces Round #208 (Div. 2) ABCD
- Codeforces Round #220 (Div. 2) ABCD
- Codeforces Round #222 (Div. 2) ABCD
- Codeforces Round #257 (Div. 2) ABCD
- Codeforces Round #258 (Div. 2)[ABCD]
- Codeforces Round #264 (Div. 2) | ABCD
- Codeforces Round #302 (Div. 2) (ABCD题解)
- Codeforces Round #250 (Div. 2) (ABCD题解)
- Codeforces Round #248 (Div. 2) (ABCD题解)
- Codeforces Round #249 (Div. 2) (ABCD题解)
- Codeforces Round #313 (Div. 2) (ABCD)
- Codeforces Round #Pi (Div. 2) (ABCD)
- Codeforces Round #Pi (Div. 2) ABCD
- SSM框架学习之(三)Mybatis——SqlMapConfig配置文件
- xml注释和取消注释快捷键
- 用命令行编译java文件
- Android5.0 Recovery源代码分析与定制---recovery UI相关(二)
- Java反射机制
- Codeforces Round #418 (Div. 2) ABCD
- 三分查找
- Android 代码库(自定义一套 Dialog通用提示框 )
- USB接口图和工作原理
- 谈谈mysql的事务
- 高质量的代码
- 如何绘制业务流程图
- 计蒜客复赛D题 百度地图导航
- Http协议基础之HTTP响应首部字段