問題Codeforcesラウンド#620(本部2)へのソリューション

 

(CHE)はじめに(ダン)の前にいくつかの重要でありません

案の定、選手と公式VP選手のメンタリティは完全に異なっています。唯一のトランペットやチューバの演奏を持つ大規模なオープンは全く違う感じです。

昔の人ALAS速いその後、手の速度を死にませんでした。私はABCの上に何気なく中学校の15分にいたとき、私は覚えています。

A:ABS(XY)/(+ b)は?私はAをカットするスピード午前0時01分を急いことができると思います

1の#include <stdio.hの>
 2  INT T。
3  長い 長いX、Y、A、B、DIS。
4  INT メイン(){
 5      のscanf(" %dの"、&T)。
6      一方(T-- ){
 7          のscanf(" %LLD%LLD%LLD%LLD "、およびX&Y、&、&B)。
8つの          DIS =(X> Y XY:YX)+ = B。
9          DIS%Aプット(?" -1 "):のprintf(" %のLLD \ n "、DIS / )。
 11      リターン 0 ;
12 }
A

B:すべての回文のように、1組ずつをすることができます。それはより多くの回文自体の真ん中よりも構いません。

1の#include <stdio.hの> 
 2の#include < ストリング・H>
 3  の#defineが登録INT
 4  の#define CTのconst int型
 5  の#define ILインライン
 6  使って 名前空間STDを、
7  のconst  int型 N = 105 8  整数 N、M、O [N * N]、CNT、フラグ[N]、ANS [N * N]。
9  チャーS [N]、[N]。
10インラインブールCK(CT P、CT Q){
 11      のためにINTは iは= 1 ; I <= M; ++ I)
 12         もし(S [P] [I] = S [Q] [M-I +!1 ])戻り 0 13      リターン 1 14  }
 15  INT メイン(){ 
 16      のscanf(" %D%D "、&​​N、&M)。int型私は、jは、
17      のためには、(iは= 1 ; I <= N; ++ I)のscanf(" %S "、S [I] + 1 )。
18      のためには、式(I = 1 ; I <= N; ++ i)が
 19          であれば(!フラグ[i])と
 20              のための(j = iは+ 1、J <= N; ++ j)は
21                  なら {O [++ CNT] = I、O [++ CNT] = J、フラグ[I] =フラグ[J] =(フラグ[J] && CK(i、j)は!)1ブレーク;}
 22      のための式(I = 1 ; iが<= N; ++ i)があれば(フラグ[i]が&& CKを(I、I)!){O [++ CNT] = I。ブレーク;}
 23      のprintf(" %dの\ n "、CNT * M)。
24      INT HD = 0、TL = CNT。
25      のためには(iは= 1 ; I <= CNT; I + = 2 26の          ANS [TL - ] = O [I + 1 ]、ANS [++ HD = O [i]は、
27      のための iは=(1; I <= CNT; ++ I)のprintf(" %S "、S [ANS [I] + 1 )。
28      リターン 0 ;
29 }
B

C:範囲について各更新。例えば、最後の範囲(L、R)、新しい着信ゲスト、範囲となる(最大(L-DIS、nowl)、MIN(R + DIS、NOWR))場合、途中L> Rそれは違法ではありません。 

 1 #include<stdio.h> 
 2 #include<string.h>
 3 #define it register int
 4 #define ct const int
 5 #define il inline
 6 using namespace std;
 7 int n,m,T,l,r,L,R,t,dis,flag,lstt;
 8 inline int Min(ct p,ct q){return p<q?p:q;}
 9 inline int Max(ct p,ct q){return p>q?p:q;}
10 namespace io{
11     il char nc(){
12         static char buf[100000],*p1=buf,*p2=buf;
13         return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++; 
14     }
15     template <class I> 
16     il void fr(I &num){
17         num=0;register char c=nc();it p=1;
18         while(c<'0'||c>'9') c=='-'?p=-1,c=nc():c=nc();
19         while(c>='0'&&c<='9') num=num*10+c-'0',c=nc();
20         num*=p;
21     } 
22 }
23 using io ::fr;
24 int main(){
25     fr(T);
26     while(T--){
27         fr(n),fr(m),l=m,r=m,flag=1,lstt=0;
28         for(it i=1;i<=n;++i){
29             fr(t),fr(L),fr(R);
30             dis=t-lstt,l=Max(l-dis,L),r=Min(r+dis,R),lstt=t;
31             if(l>r) flag=0;
32         }
33         flag?puts("YES"):puts("NO");
34     }
35     return 0;
36 }
C

D:画图理解波峰波谷,或者说作上升下降曲线,反正就是找到连续一段上升的最高点,并且标记这个最高点往前推多长是上升的。然后LIS最小嘛肯定是只有最长上升的一段是LIS,最大那就尽量保证同样上升的情况下优先考虑把小的放在前面,也就是把所有满足大于关系的数中尽量把小的往前排。

 1 #include<stdio.h> 
 2 #include<string.h>
 3 #define it register int
 4 #define ct const int
 5 #define il inline
 6 using namespace std; 
 7 const int N=1000005;
 8 char s[N];
 9 int n,f[N],xy,dy,now,ans[N],a[N],T;
10 int main(){
11     scanf("%d",&T);
12     while(T--){
13         scanf("%d%s",&n,s+2);it i,j;
14         a[1]=1,xy=dy=0,a[n+1]=0,f[1]=0;
15         for(i=2;i<=n;++i) f[i]=0,s[i]=='<'?(++xy,a[i]=1):(++dy,a[i]=0);
16         for(i=1,j=1;i<=n;i=j){
17             j=i+1;
18             if(a[i]){while(a[j]) ++j;f[j-1]=j-i;}
19         }
20         now=1;
21         for(i=n;i;--i) if(!a[i]) ans[i]=now++;
22         now=n;
23         for(i=1;i<=n;++i) if(f[i]) for(j=i;j>=i-f[i]+1;--j) ans[j]=now--;
24         for(i=1;i<=n;++i) printf("%d ",ans[i]);puts("");
25         now=dy+1;
26         for(i=1;i<=n;++i) if(a[i]) ans[i]=now++;
27         for(i=1;i<=n;++i) printf("%d ",ans[i]);puts("");
28     }
29     return 0;
30 }
D

E:这次E比D先做出来。有点像今年pj的T4啊。先判断一下加进来的是奇环还是偶环,然后根据路上奇偶性判断即可。代码附注释。

 1 #include<stdio.h> 
 2 #include<string.h>
 3 #define it register int
 4 #define ct const int
 5 #define il inline
 6 using namespace std; 
 7 const int N=1000005;
 8 int h[N],nxt[N],adj[N],t,n,Q,u,v,f[N][20],fa[N],d[N],top[N],son[N],sz[N];
 9 namespace io{
10     il char nc(){
11         static char buf[100000],*p1=buf,*p2=buf;
12         return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++; 
13     }
14     template <class I> 
15     il void fr(I &num){
16         num=0;register char c=nc();it p=1;
17         while(c<'0'||c>'9') c=='-'?p=-1,c=nc():c=nc();
18         while(c>='0'&&c<='9') num=num*10+c-'0',c=nc();
19         num*=p;
20     } 
21 }
22 using io ::fr;
23 il int Min(ct p,ct q){return p<q?p:q;}
24 il void sp(int &p,int &q){p+=q,q=p-q,p-=q;}
25 il void add(){nxt[++t]=h[u],h[u]=t,adj[t]=v,nxt[++t]=h[v],h[v]=t,adj[t]=u;}
26 il void DFS(ct x){
27     d[x]=d[fa[x]]+1,sz[x]=1;
28     for(it i=h[x],j;i;i=nxt[i])
29         if((j=adj[i])^fa[x])
30             fa[j]=f[j][0]=x,DFS(j),sz[x]+=sz[j],son[x]=(sz[j]>sz[son[x]]?j:son[x]);
31 }
32 il void dfs(ct x){
33     if(!top[x]) top[x]=x;
34     if(!son[x]) return;
35     top[son[x]]=top[x],dfs(son[x]);
36     for(it i=h[x],j;i;i=nxt[i])
37         if(((j=adj[i])^fa[x])&&(j^son[x])) dfs(j);
38 }
39 void lca(it u,it v,int &lc){
40     while(top[u]^top[v]) d[top[u]]<d[top[v]]?v=fa[top[v]]:u=fa[top[u]];
41     lc=(d[u]<d[v]?u:v);
42 }
43 void calfa(){
44     for(it i,j=1;(1<<j)<=n;++j)
45         for(i=1;i<=n;++i) f[i][j]=f[f[i][j-1]][j-1];
46 }
47 int dis(ct u,ct v){it Lca;lca(u,v,Lca);return d[u]+d[v]-(d[Lca]<<1);}
48 bool isfa(it x,ct fa,ct ds){
49     for(it i=19;~i;--i) if(ds&(1<<i)) x=f[x][i];
50     return x==fa;
51 }
52 int main(){
53     fr(n);it i,dis1,dis2,x,y,k;
54     for(i=1;i<n;++i) fr(u),fr(v),add();
55     DFS(1),dfs(1),calfa(),fr(Q);
56     while(Q--){
57         fr(x),fr(y),fr(u),fr(v),fr(k); 
58         dis1=Min(dis(u,x)+dis(v,y)+1,dis(u,y)+dis(v,x)+1),dis2=dis(u,v);
59         if((d[x]&1)^(d[y]&1)){((k&1)==(dis2&1))&&(Min(dis1,dis2)<=k)?puts("YES"):puts("NO");continue;}
60         (dis1<=k&&((dis1&1)==(k&1)))||(dis2<=k&&((dis2&1)==(k&1)))?puts("YES"):puts("NO");
61     }
62     return 0;
63 }
E

全世界都会的F系列。。今天真的是套路场+手速场。。

怕fst了明天再更F吧。。前五题都过了systemtest所以光明正大地放出来。。

おすすめ

転載: www.cnblogs.com/Kylin-xy/p/tijieCF1304.html