Codeforces Round #395 (Div. 2)(未完)
2.2.2017 9:35~11:35
?
A - Taymyr is calling you
直接模擬
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; typedef long long ll; const int N=1e4+5; inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}return x*f; } int n,m,z,ans; int vis[N]; int main(int argc, const char * argv[]) {n=read();m=read();z=read();for(int i=n;i<=z;i+=n) vis[i]=1;for(int i=m;i<=z;i+=m) ans+=vis[i];printf("%d",ans);return 0; } View CodeB - Timofey and cubes
奇數(shù)位置反轉(zhuǎn),偶數(shù)位置不變
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; typedef long long ll; const int N=2e5+5; inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}return x*f; } int n,a[N]; int main(int argc, const char * argv[]) {n=read();for(int i=1;i<=n;i++) a[i]=read();for(int i=1;i<=n/2;i++) if(i&1) swap(a[i],a[n-i+1]);for(int i=1;i<=n;i++) printf("%d ",a[i]);return 0; } View CodeC - Timofey and a tree
題意:選一個(gè)根使得所有子樹同色(每個(gè)子樹中節(jié)點(diǎn)同色 不同子樹可以不同色)
比賽時(shí)先打了個(gè)傻逼樹形DP發(fā)現(xiàn)不對(duì) ?然后就用對(duì)于一個(gè)點(diǎn)i它的子樹用樹形DP,它的上面的樹用DFS序+線段樹/ST表詢問(wèn)顏色相同......反正A掉了
// // main.cpp // C // // Created by Candy on 2017/2/2. // Copyright ? 2017年 Candy. All rights reserved. // #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; #define mid ((l+r)>>1) #define lson x<<1,l,mid #define rson x<<1|1,mid+1,r #define lc x<<1 #define rc x<<1|1 typedef long long ll; const int N=2e5+5; inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}return x*f; } int n,u,v,c[N],a[N]; struct edge{int v,ne; }e[N<<1]; int h[N],cnt=0; inline void ins(int u,int v){cnt++;e[cnt].v=v;e[cnt].ne=h[u];h[u]=cnt;cnt++;e[cnt].v=u;e[cnt].ne=h[v];h[v]=cnt; } struct node{int same; }t[N<<2]; void build(int x,int l,int r){if(l==r) t[x].same=a[l];else{build(lson);build(rson);if(t[lc].same==0||t[rc].same==0||t[lc].same!=t[rc].same) t[x].same=0;else t[x].same=t[lc].same;} } int segSame(int x,int l,int r,int ql,int qr){if(ql>qr) return -1;if(t[x].same) return t[x].same;if(ql<=l&&r<=qr) return t[x].same;else{int same=-1;if(ql<=mid) same=segSame(lson,ql,qr);if(mid<qr){int _=segSame(rson,ql,qr);if(same==-1||same==_) same=_;else same=0;}return same;} } int d[N],L[N],R[N],dfc; void dfs(int u,int fa){L[u]=++dfc; a[dfc]=c[u];d[u]=c[u];for(int i=h[u];i;i=e[i].ne){int v=e[i].v;if(v==fa) continue;dfs(v,u);if(d[u]!=0&&d[v]!=d[u]) d[u]=0;}R[u]=dfc; } int ans; void dfsSol(int u,int fa){//printf("dfsSol %d %d\n",u,fa);if(ans) return;int flag=1;for(int i=h[u];i;i=e[i].ne) if(e[i].v!=fa)if(d[e[i].v]==0) {flag=0;break;}if(flag){int s1=segSame(1,1,n,1,L[u]-1),s2=segSame(1,1,n,R[u]+1,n);flag=0;if(s1!=0&&s2!=0&&(s1==-1||s2==-1||s1==s2)) flag=1; // printf("hi %d %d %d %d %d %d\n",u,L[u],R[u],s1,s2,flag);if(flag) {ans=u;return;}}for(int i=h[u];i;i=e[i].ne)if(e[i].v!=fa) dfsSol(e[i].v,u); } int main(int argc, const char * argv[]) {n=read();for(int i=1;i<=n-1;i++) u=read(),v=read(),ins(u,v);for(int i=1;i<=n;i++) c[i]=read();dfs(1,0);build(1,1,n); // for(int i=1;i<=n;i++) printf("hi %d %d %d %d\n",i,d[i],L[i],R[i]); // for(int i=1;i<=n;i++) printf("a %d %d\n",i,a[i]);dfsSol(1,0);if(ans) printf("YES\n%d",ans);else puts("NO");return 0; } 比賽代碼實(shí)際上可以發(fā)現(xiàn)如果一條邊兩邊節(jié)點(diǎn)的顏色不對(duì)一定是這兩個(gè)節(jié)點(diǎn)中的一個(gè)做根,三遍DFS就行了....好簡(jiǎn)單
dfsD - Timofey and rectangles
題意:一些不相交矩形邊長(zhǎng)都是奇數(shù) 4種顏色染色 判斷可行及一種方案
....最后才看到洛谷群有這道題題解然后最后10s提交失敗嗚嗚嗚
超簡(jiǎn)單 邊長(zhǎng)奇數(shù),所以橫邊相鄰的矩形y坐標(biāo)奇偶性不同 x同理 所以按左下角奇偶性染色就行了
// // main.cpp // C // // Created by Candy on 2017/2/2. // Copyright ? 2017年 Candy. All rights reserved. // #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; typedef long long ll; inline int read(){char c=getchar();int x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}return x*f; } int n,x,y; int main(int argc, const char * argv[]) {n=read();puts("YES");for(int i=1;i<=n;i++){x=read();y=read();x=min(x,read());y=min(y,read());x+=1e9;y+=1e9;if(x&1){if(y&1) puts("1");else puts("2");}else{if(y&1) puts("3");else puts("4");}} } View Code未完
?
轉(zhuǎn)載于:https://www.cnblogs.com/candy99/p/6362422.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #395 (Div. 2)(未完)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring中的容器
- 下一篇: DCi11发动机的喷油工作顺序是:1—5