Codeforces Global Round 13
A K-th Largest Value (1491A)
签到题
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include<iostream> using namespace std;
bool a[200000000];
int main() { int n,x=0,m; cin>>n>>m; for(int i=1;i<n+1;i++) { int c; cin>>c; a[i]=bool(c); if(c)x++; } while(m--) { int p1,p2; cin>>p1>>p2; if(p1==1) { if(a[p2])x--; else x++; a[p2]=!a[p2]; } else { if(p2>x)cout<<"0"<<endl; else cout<<"1"<<endl; } } }
|
B Minimal Cost (1491B)
如果有相邻输入相差大于 1 的情况,可直接通过,花费为 0 ;
如果输入值全相同,那么将某一个障碍先横向移动一次,然后将其横向移动或者纵向移动一次均可
花费 min(v+v , u+v);
其余情况把某个合适障碍横向或者纵向移动一次均可,花费 min(u , v) 。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include<iostream> using namespace std;
int main() { int t; cin>>t; while(t--) { int n,u,v,test=0,x=0; cin>>n>>u>>v; int a[n+1]; cin>>a[0]; for(int i=1;i<n;i++) { cin>>a[i]; if(abs(a[i]-a[i-1])>=2)test=1; if(a[i]==a[i-1])x++; } if(test)cout<<"0"<<endl; else if(x==n-1)cout<<min(v+v,u+v)<<endl; else cout<<min(u,v)<<endl; } }
|
C Pekora and Trampoline (1491C)
题解如下(官方题解)(等我自己看懂了再补上吧……)