Codeforces Global Round 13

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)

题解如下(官方题解)(等我自己看懂了再补上吧……)