Codeforces Round #575 (Div. 3)·
是真的蠢啊,在AB两题签到题卡了一个小时,QAQ
A. Three Piles of Candies
签到题,其实把三个加起来除以二就可以了
# include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
	int q;
	scanf("%d",&q);
	while(q--){
		LL a[3];
		cin>>a[0]>>a[1]>>a[2];
		sort(a,a+3);
		cout<<a[1]+(a[2]-(a[1]-a[0]))/2<<endl;
	}
	
	return 0;
}
B - Odd Sum Segments
明白奇+奇=偶,偶+偶=偶,奇+偶=奇,奇数个奇数相加是奇数,偶数个奇数相加是偶数;先判断是有几个奇数,如果奇数的个数比k小,那么必然不可以;如果刚好等于k,那么必然可以;如果比k大,那么先搞出来k-1个奇数,然后再判断有多少个剩下的奇数,如果有奇数个那么就可以,如果没有那么就不可以
# include <bits/stdc++.h>
using namespace std;
int main()
{
	int q;
	scanf("%d",&q);
	while(q--){
		queue<int> a;
		int n,k;
		scanf("%d %d",&n,&k);
		for(int i=1;i<=n;i++){
			int x;
			scanf("%d",&x);
			if(x&1){
				a.push(i);
				//cout<<"@@@"<<i<<endl;
			}
		}
		if(a.size()<k){
			cout<<"NO"<<endl;
		}else if(a.size()==k){
			cout<<"YES"<<endl;
			//cout<<a.size()<<"##"<<endl;
			for(int i=1;i<=a.size();i++){
				cout<<a.front()<<" ";
				a.pop();
			}
			cout<<n<<endl;
		}else{
			queue<int> b;
			for(int i=0;i<k-1;i++){
				b.push(a.front());
				a.pop();
			}
			if(a.size()&1){
				cout<<"YES"<<endl;
				for(int i=0;i<b.size();i++){
					cout<<b.front()<<" ";
				}
				cout<<n<<endl;
			}else{
				cout<<"NO"<<endl; 
			}
		}
	}
	
	return 0;
 } 
C. Robot Breakout
如果这个机器人不能向左走(即1操作位0),那么坐标的能够到达的最左端就是和以前的比较大的那个;如果这个机器人不能向右走(即3操作位0),那么坐标的能够到达的最右端就是和以前的比较小的那个;如果这个机器人不能向上走(即2操作位0),那么坐标的能够到达的最上端就是和以前的比较小的那个;如果这个机器人不能向下走(即4操作位0),那么坐标的能够到达的最下端就是和以前的比较大的那个。最后比较是否在绝对值位1e5的范围内存在这样一个坐标点,就阔以啦
# include <bits/stdc++.h>
using namespace std;
const int MAXN=1e5+100;
int x[MAXN];
int y[MAXN];
int f[MAXN][5];
int main()
{
	int q;
	scanf("%d",&q);
	while(q--){
		int n;
		scanf("%d",&n);
		for(int i=1;i<=n;i++){
			scanf("%d %d %d %d %d %d",&x[i],&y[i],&f[i][1],&f[i][2],&f[i][3],&f[i][4]);
		}
		int lx=-1e5,rx=1e5,ly=-1e5,ry=1e5;
		int flag=1;
		for(int i=1;i<=n;i++){
			if(f[i][1]==0) lx=max(lx,x[i]);	
			if(f[i][3]==0) rx=min(rx,x[i]);
			if(f[i][4]==0) ly=max(ly,y[i]);
			if(f[i][2]==0) ry=min(ry,y[i]);
			if(lx>rx||ly>ry){
				//cout<<"@@@"<<lx<<" "<<rx<<" "<<ly<<" "<<ry<<endl;
				printf("0\n");
				flag=0;
				break;
			}
		}
		if(flag){
			if(lx<=1e5 
                    
                     
                    
                