Codeforces Round #618 (Div. 2)

2020-09-11 15:06:10 浏览数 (1)

A.水题

题意:就是给你N个数,然后这些数的和跟乘积都不能为0,你能执行的操作为每次给数组中任意一个数加一,然后问最少你要执行多少次操作。

思路:不能出现零,出现零,乘积就为0了,所有有多少个零就得执行多少次。加上这些数后,如果sum正好等于0,那么需要在执行一次操作!

代码语言:javascript复制
#include <bits/stdc  .h>
using namespace std;

typedef long long ll;

int a[105];

int main()
{
	int t;
	cin >>t;
	while(t--)
	{
		int n;
		cin >>n;
		ll sum=0;
		int flag=0;
		for(int i=0;i<n;i  )
		{
			cin >>a[i];
			sum =a[i];
			if(a[i]==0) flag  ;
		}
		
		sum =flag;
		
		if(sum==0) flag  ;
		
		cout <<flag<<endl;
	}
}

B. 题意:就是给一组数据代表能力值不同的学生,你是校长,需要将他们分到两个班级,人数不一定要相等,求实力差最小是多少

题意:题目一开始就给提示了,我一开始没在意!

代码语言:javascript复制
#include<bits/stdc  .h> 
using namespace std;

const int maxn = 2e5 5;

int a[maxn]; 

int main(){
	int t;
	cin>>t;
	while(t--){
		int n;
		cin>>n;
		for(int i=1;i<=2*n;i  ){
			cin>>a[i];
		}
		sort(a 1,a n*2 1);
		
		
		cout<<a[n 1]-a[n]<<endl;
	}
	
	return 0;
}

C 题意:Anu定义了一个函数如下: f(x,y)=(x|y)−y 然后给一组数据,求怎么个顺序能使得到的得到的结果最大 A value of an array [a1,a2,…,an] is defined as f(f(…f(f(a1,a2),a3),…an−1),an)

WWWWW

代码语言:javascript复制
#include <bits/stdc  .h>
#define maxn 100005 
using namespace std;
 
typedef long long ll;

ll a[maxn];
ll vis[50];

int main(){
    int n; 
    int ans;
    int mid;
    cin >> n;
    for(ll i=1;i<=n;i  ){
        cin>>a[i];
        for (ll l=0;l<32;l  ){
            if ((a[i] >> l) & 1)
                vis[l]  ;
        }
    }
    for(ll i=1;i<=n;i  ){
        ll flag = 0;
        for(ll l=0;l<32;l  ){
            if(vis[l]==1&&((a[i]>>l)&1))
                flag=flag (1ll << l);
            if(ans<flag)
                ans=flag,mid=i;
        }
    }
    swap(a[1],a[mid]);
    
    for (ll i=1;i<=n;i  )
        cout<<a[i]<<" ";
    return 0;
}
sum

0 人点赞