Codeforces Round #368
来源:互联网 发布:单机版五子棋游戏源码 编辑:程序博客网 时间:2024/06/05 18:39
自从上次366没有A掉C题以后,我对CF的C题一直有恐惧感,没错,367的C就是一道DP(还好我没打,要不得跪)。晚上八点左右吧,我被zzs神犇拉去打了368,本以为9点30开始,于是9点开电脑,没想到是9:05开始。。。。只好等Extra Resignation了。
好不容易熬完10分钟(此时zzs已经A了A题),终于进了比赛页面。
A题是给出一个字符矩阵,判断是不是彩色图像(有CMY)。水~~~~
代码如下:
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<vector>int n,m;using namespace std;int main(){ cin>>n>>m; char c; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>c; if(c=='C'||c=='M'||c=='Y'){ printf("#Color"); return 0; } } } printf("#Black&White"); return 0;}
然后马上看B。卧槽,这是什么?数据范围10^5?好吧,只能写spfa了。。。
然后花将近一小时YY出了一个spfa,交上去结果wa on test 2.好吧,放弃。这次肯定掉成pupil。。
之后看了一眼C,卧槽?什么鬼?好水啊。。。只是求直角三角形另外两条边啊。。有公式有木有。。。然后神速写完代码,A了这道题。
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>int n;long long ans1,ans2;int main(){ scanf("%d",&n); if(n<=2){ printf("-1"); return 0; } if(n%2==1){ long long x=(n-1)/2; ans1=2*x*x+2*x; ans2=ans1+1; } if(n%2==0){ long long x=n/2; ans1=x*x-1; ans2=x*x+1; } printf("%I64d %I64d",ans1,ans2); return 0;}
之后看D,主席树。。。放弃,看B
这次终于发现B的精髓所在,只是枚举一遍所有的边。。。好一个伪图论。坑死我了。。
然后YY完代码交了上去,wa on test13
好吧。。当我准备放弃的时候,突然发现只能是仓库连城市的边才可以选。。。
处理好以后,终于A了:
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;struct edge{ int u,v,w;}e[1000001];int n,m,k,ck[100001],Ans=0x3f3f3f3f;int cmp(edge x,edge y){ return x.w<y.w;}int main(){ memset(ck,0,sizeof(ck)); scanf("%d%d%d",&n,&m,&k); int u,v,w; for(int i=1;i<=m;i++){ scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); } int x; for(int i=1;i<=k;i++){ scanf("%d",&x); ck[x]=1; } if(k==0&&k==n){ printf("-1"); return 0; } sort(e+1,e+m+1,cmp); for(int i=1;i<=m;i++){ if(ck[e[i].u]&&!ck[e[i].v]||!ck[e[i].u]&&ck[e[i].v]){ printf("%d",e[i].w); return 0; } } printf("-1"); return 0;}
尽管A了3道题,但是现在排名才1800多。。完了,要变pupil
Menci:40分钟A3T
zzs:30分钟A3T
Chentsuei:30分钟A3T
好吧。。只能等system test拉回点分。。不,别FST就行。。
万幸的是,我最终没有fst,rating反而升了。。
估计下一次就要掉了吧。
附:D题代码
#include<cstring>#include<iostream>#include<cstdlib>#include<cstdio>#include<vector>#include<queue>#include<cmath>#include<map>#include<set>#include<algorithm>using namespace std;#define ll long longchar c;bool flag;inline void read(int&a){a=0;do c=getchar();while(c!='-'&&(c<'0'||c>'9'));c=c=='-'?flag=true,getchar():c;while(c<='9'&&c>='0')a=(a<<3)+(a<<1)+c-'0',c=getchar();a=flag?flag=false,-a:a;}inline int min(int a,int b){return a<b?a:b;}inline int max(int a,int b){return a>b?a:b;}inline int Min(double &a,double b){return a<b?a:a=b;}inline int Max(int &a,int b){return a>b?a:a=b;}struct Node{ Node *lc,*rc; int l,r; int val; int sum; Node *Val;};Node *Root[200001];inline void up(Node *A){ if(A->l==A->r)A->sum=A->val; else { A->sum=A->lc->sum+A->rc->sum; if(A->val)A->sum=A->r-A->l+1-A->sum; }}inline void up2(Node *A){ if(A->l==A->r) A->sum=A->Val->sum; else { A->sum=A->lc->sum+A->rc->sum; }}Node *N;Node *Build(int l,int r){ Node *A=new Node; A->l=l,A->r=r; A->val=0; A->sum=0; A->lc=A->rc=NULL; if(l==r) return A; A->lc=Build(l,l+r>>1); A->rc=Build((l+r>>1)+1,r); return A;}Node *New(Node *A){ Node *R=new Node; *R=*A; return R;}Node *Build2(int l,int r){ Node *A=new Node; A->l=l,A->r=r; A->val=0; A->sum=0; A->lc=A->rc=NULL; if(l==r) { A->Val=New(N); return A; } A->lc=Build2(l,l+r>>1); A->rc=Build2((l+r>>1)+1,r); return A;}Node *Modify(Node *Cur,int l,int data,int Sum){ Node *N=New(Cur); Sum^=Cur->val; if(Cur->l!=Cur->r) { if(Cur->lc->r>=l)N->lc=Modify(Cur->lc,l,data,Sum); else N->rc=Modify(Cur->rc,l,data,Sum); return up(N),N; } else { if(Sum&&data)return up(N),N; if(Sum&&!data) { Sum^=Cur->val; return N->val=Sum?1:0,up(N),N; } if(data) { Sum^=Cur->val; return N->val=Sum?0:1,up(N),N; } return up(N),N; }}Node *Modify2(Node *Cur,int l,int lly,int data){ if(Cur->l==Cur->r) { Node *N=New(Cur); N->Val=Modify(Cur->Val,lly,data,0); return up2(N),N; } Node *N=New(Cur); if(l<=Cur->lc->r)N->lc=Modify2(Cur->lc,l,lly,data); else N->rc=Modify2(Cur->rc,l,lly,data); return up2(N),N;}Node *Rotato(Node *Cur,int l){ if(Cur->l==Cur->r) { Node *N=New(Cur); N->Val=New(N->Val); N->Val->val^=1; up(N->Val); return up2(N),N; } Node *N=New(Cur); if(l<=Cur->lc->r)N->lc=Rotato(Cur->lc,l); else N->rc=Rotato(Cur->rc,l); return up2(N),N;}int n,m,q;int main(){ read(n),read(m),read(q); N=Build(1,m); Root[0]=Build2(1,n); for(int i=1;i<=q;i++) { int op;read(op); if(op==1) { int u,v; read(u),read(v); Root[i]=Modify2(Root[i-1],u,v,1); } else if(op==2) { int u,v; read(u),read(v); Root[i]=Modify2(Root[i-1],u,v,0); } else if(op==3) { int u; read(u); Root[i]=Rotato(Root[i-1],u); } else {int u;read(u);Root[i]=Root[u];} int Ans=Root[i]->sum; printf("%d\n",Ans); } return 0;}
0 0
- Codeforces Round #368
- 【codeforces】Codeforces Round #368 (Div. 2)
- Codeforces Round #368 (DIV 2)
- Codeforces Round #368 (Div. 2)
- Codeforces Round #368 (Div. 2)
- Codeforces Round #368 (Div. 2)
- Codeforces Round #368 (Div. 2)
- Codeforces Round #368 (Div. 2)
- Codeforces Round #368 (Div. 2)
- Codeforces Round #368 (Div. 2)
- Codeforces Round #368 (Div.2)
- Codeforces Round #368 (Div. 2)
- Codeforces Round #368 (Div. 2)
- Codeforces Round #368 (Div. 2)
- 【codeforces】Codeforces Round #363
- Codeforces Round #368 (Div. 2) C
- Codeforces Round #368-C - Pythagorean Triples-数学
- Codeforces Round #368 (Div. 2) Bakery
- 安卓中的Model-View-Presenter模式介绍
- ENJOY的Apple Pay应用内支付接入实践
- startActivityForResult的详细用法及详细使用说明
- PBOC/EMV中TLV的构造和解析
- ruby system命令不会加载环境变量
- Codeforces Round #368
- rtmp协议(1)--消息语法
- Python安装报错
- View.VISIBLE、INVISIBLE、GONE的区别
- C#实现所有经典排序算法
- 侧栏自动定位的导航菜单代码实例详解
- AndroidStudio中如何修改完整包名?
- 系统拆分解耦利器之消息队列---RabbitMQ-Configuration
- mybatis中的高级映射一对一、一对多、多对多