Codeforces Round #575 (Div. 3) A B C

Codeforces Round #575 (Div. 3)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+100;
int n;
ll a,sum=0;
int main(){
	cin >> n;
	while(n--){
		sum=0;
		for(int i=0;i<3;i++){
			cin >> a;
			sum += a;
		}
		cout << sum/2ll << endl;
	}
	return 0;
}

  B

注意最后一个必须输出n

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5+100;

int q;
int n,k;
int a[N];
int vis[N];
int res[N];
int main(){
	cin >> q;
	while(q--){
		cin >> n >> k;
		memset(vis,0,sizeof(int)*(n+1));
		for(int i=0;i<n;i++){
			cin >> a[i];
		}
		int flag = 0;
		ll sum =0 ;
		int cnt = 0;
		for(int i=0;i<n;i++){
			sum += a[i];
			if(!flag && sum%2 == 1){
				cnt ++;
				flag = 1;
				vis[i] = 1;
			}
			else if(flag && sum%2==0){
				cnt++;
				flag = 0;
				vis[i] =1;
			}
		}
		if(cnt<k){
			cout << "NO\n";
		}
		else{
			if(cnt%2!=k%2){
				cout << "NO\n";
			}
			else{
				cout << "YES\n";
				int pp=1;
				res[pp] = n;
				for(int i=n-2;i>=0;i--){
					if(vis[i]){
						pp++;
						if(vis[n-1])res[pp] = i+1;
						else res[pp] = i;
					}
					if(pp == k) break;
				}
				for(int i=k;i>=1;i--){
					cout << res[i] << (i==1?"\n":" ");
				}
			}
		}
	}
	return 0;
}

  C

根据每个机器人的移动范围,不断缩小所有机器人可达范围

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+100;

int q;
int n;
int x[N],y[N];
int f[N][4];
int main(){
	scanf("%d",&q);
	while(q--){
		scanf("%d",&n);
		int r=1e5,l=-1e5,b=1e5,u=-1e5;
		for(int i=1;i<=n;i++){
			scanf("%d%d",&x[i],&y[i]);
			for(int j=0;j<4;j++){
				scanf("%d",&f[i][j]);
			}
			if(f[i][0]==0) l=max(l,x[i]);
			if(f[i][1]==0) b=min(b,y[i]);
			if(f[i][2]==0) r=min(r,x[i]);
			if(f[i][3]==0) u=max(u,y[i]);
		}
		if(l>r||u>b){
			cout << "0\n";
		}
		else{
			cout << "1 " << l << " " << u << endl;
		}
		
		
	}
	return 0;
}

  

posted @ 2019-07-25 14:48  Pikachu_Yj  阅读(178)  评论(0编辑  收藏  举报