感冒了,考试的时候跟去世了一样,头晕脑胀只会打暴力了,真的头疼
可恶,明天就走了,希望能在后天之前差不多好,不是说感冒一般七天吗?已经五天了,差不多得了。。。。
千万不要考场上还头昏脑胀,$rp++$吧,(希望在链式前向星加边的时候已经加够了。。。。)
T1 魔法
考场上想到了使用队列, 但是后来发现不好判断区间是否合法,于是就打了乱搞做法
然后在$Arbiter$上测居然有$70pts$?
正解就是栈,然后维护栈内的前缀和,表示红球有几个,在栈顶往下数$R+B$个球,如果里面红球个数正好就弹栈记答案
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 inline int read(){ 7 int x=0,f=1; char ch=getchar(); 8 while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} 9 while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();} 10 return x*f; 11 } 12 const int NN=1e5+5; 13 int n,R,B,s[NN],sm[NN],c0,c1; 14 int top,stk[NN]; 15 char ch[NN]; 16 inline void task1(){ 17 if((B==0)||(c1!=0)||(c0%B!=0)) return puts("NO"),void(); 18 int cnt=1,tmp=c0/B;puts("YES");printf("%d\n",tmp); 19 for(int i=1;i<=tmp;i++){for(int j=1;j<=B;j++)printf("%d ",cnt),++cnt;puts("");} 20 } 21 inline void task2(){ 22 if((R==0)||(c0!=0)||(c1%R!=0)) return puts("NO"),void(); 23 int cnt=1,tmp=c1/R;puts("YES");printf("%d\n",tmp); 24 for(int i=1;i<=tmp;i++){for(int j=1;j<=R;j++)printf("%d ",cnt),++cnt;puts("");} 25 } 26 int ans[NN],tot,tag[NN]; 27 namespace WSN{ 28 inline short main(){ 29 freopen("magic.in","r",stdin); 30 freopen("magic.out","w",stdout); 31 n=read();R=read();B=read();scanf("%s",ch+1);n=strlen(ch+1); 32 if((!R)&&(!B)) return puts("NO"),0; 33 for(int i=1;i<=n;i++){ 34 s[i]=(ch[i]=='R'); 35 if(ch[i]=='R') ++c1; else ++c0; 36 } 37 if(R==0)return task1(),0;if(B==0)return task2(),0; 38 if((c0%B!=0)||(c1%R!=0)) return puts("NO"),0; 39 if(c0/B!=c1/R) return puts("NO"),0; 40 int tmp=c0/B; 41 for(int i=1;i<=n;i++){ 42 stk[++top]=i; 43 sm[stk[top]]=sm[stk[top-1]]+s[i]; 44 if(top>=R+B&&sm[stk[top]]-sm[stk[top-(R+B)]]==R){ 45 tag[tot+1]=1; 46 for(int j=i;j>=i-(R+B)+1;j--) 47 ans[++tot]=stk[top--]; 48 } 49 } 50 // cout<<top<<endl; 51 // for(int i=1;i<=top;i++) cout<<stk[i]<<" ";cout<<endl; 52 if(top) return puts("No"),0; 53 puts("YES");printf("%d\n",tmp); 54 for(int i=tot;i;i--){ 55 printf("%d ",ans[i]); 56 if(tag[i]) puts(""); 57 } 58 return 0; 59 } 60 } 61 signed main(){return WSN::main();}View Code
T2 连通性