전에 일부 중요하지 않은 (체) 소개 (단)
아니나 다를까, 선수와 공식 부사장 플레이어의 사고 방식은 완전히 다르다. . 단지 트럼펫과 튜바 연주 대형 오픈 완전히 다른 느낌입니다. .
노인 아아 빨리 다음 손 속도를 죽지 않았다. . 나는 ABC를 통해 부담없이 중학교 15 분에있을 때 나는 기억한다. .
A : ABS (XY) / (A + B를)? ? 나는이 (가)를 잘라 속도를 0시 1분을 서둘러 수 있다고 생각
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #INCLUDE <STDIO.H>
2 INT T;
3 긴 길이 X, Y, A, B, DIS;
4 INT 의 main () {
5 는 scanf ( " %의 D ' , T);
6 동안 (T-- ) {
7 는 scanf ( " % LLD % LLD % LLD % LLD " , X, Y, A, 및 B);
8 DIS = (x> Y XY : YX)와, + = B;
9 DIS % 둔다 (? " -1 " )의 printf ( " %의 LLD \ n " , DIS / a);
11 반환 0 ;
12 }
B : 모든 회문과 마찬가지로, 한 쌍의 하나가 될 수 있습니다. 더 회문 자체의 중간보다 될 수 있습니다.
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #INCLUDE <STDIO.H>
2 #INCLUDE < 문자열 .H>
3 #DEFINE 가 등록 INT
4 #DEFINE CT CONST INT
5 #DEFINE IL 인라인
6 이용한 스페이스 성병;
7 CONST의 INT N = 105 ;
8 INT N, M, O [N * N], CNT, 플래그 [N], ANS [N * N];
9 문자 S [N] [N];
10 인라인 부울 CK (CT 피 코네티컷 Q) {
11 대 ( INT는 난 = 1 ; I <= m; ++ I)
12 경우 (! S [P]가 [I] S = [Q]는 [m-난 + 1 ]) 반환 0 ;
13 창 1 ;
14 }
15 INT의 주 () {
16 는 scanf ( " % D % D " , 및 N, m); int로 , I, J를;
(17) 에 대한이 (전 = 1 ; I <= N; ++ I)는 scanf ( " % S " s가 [I] + 1 );
(18) 에 대한이 (ⅰ = 1 ; I <= N; ++ i)가
19 일 경우 (! 플래그 [I])
(20) 에 대한 (j = 1이 + 1 , J <= N; ++ j)의
21 일 경우 (플래그 [J] && CK (I, J)!) {O [++ CNT = I, O [++ CNT = J, 플래그 [I] = 플래그 [j]가 = 1 ; 침입 }
22 대를 (ⅰ = 1 ; 나는 <= N; ++ i)는 경우 (플래그 [I] && (CK)을 (I, I)!) {O [++ CNT] = 1; 침입 }
23 에서 printf ( " % D \ n " , CNT의 * m);
24 INT HD = 0 , TL = CNT;
(25) 에 대한이 (전 = 1 ; I <= (CNT), I + = 2 )
26 ANS [TL -] = O [I + 1 ], ANS [++ HD] = O [I];
(27) 에 대한이 (ⅰ = 1; I <= CNT; I ++)의 printf는 ( " % S는 " s가 [ANS를 [I] + 1 );
28 반환 0 ;
29 }
C : 범위에 대한 각 업데이트. 예 마지막 범위 (L, R), 새로운 착신 고객의 범위가된다 (최대 (1- DIS, nowl), 분 (R + DIS, nowr)) 경우, 중간 L>의 R의 그것은 불법이 아닙니다.
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
D:画图理解波峰波谷,或者说作上升下降曲线,反正就是找到连续一段上升的最高点,并且标记这个最高点往前推多长是上升的。然后LIS最小嘛肯定是只有最长上升的一段是LIS,最大那就尽量保证同样上升的情况下优先考虑把小的放在前面,也就是把所有满足大于关系的数中尽量把小的往前排。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
E:这次E又比D先做出来。有点像今年pj的T4啊。先判断一下加进来的是奇环还是偶环,然后根据路上奇偶性判断即可。代码附注释。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
全世界都会的F系列。。今天真的是套路场+手速场。。
怕fst了明天再更F吧。。前五题都过了systemtest所以光明正大地放出来。。