Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2)

A题:

注意id号和sum和都要排序。sum相同时,对id排序 代码如下:

#include<bits/stdc++.h>

using namespace std;
const double pi=acos(-1);

struct stu {
	int sum;
	int id;
}s[1005];

int cmp(stu a, stu b) {

	 if (a.sum == b.sum) {
		return a.id < b.id;
	}
	 return a.sum > b.sum;
}

int main()
{
	int n;cin>>n;int ans;
	for(int i=0;i<n;i++)
	{
		int a,b,c,d;cin>>a>>b>>c>>d;
		s[i].sum=a+b+c+d;
		if(i==0) ans=s[0].sum;
	}
	sort(s,s+n,cmp);int x;
	for(int i=n-1;i>=0;i--)
	{
		if(s[i].sum==ans) x=i;
	}
	cout<<x+1;
	return 0;
}

B题:

找规律....

#include<iostream>
using namespace std;
int main(){
    int n,c=0,d=0;long long ans=0;
    string a,b;cin>>n>>a>>b;
    for(int i=0;i<n;i++)
        if(a[i]=='1'&&b[i]=='0')c++,d++;
        else if(a[i]=='1'&&b[i]=='1')d++;
    for(int i=0;i<n;i++)
        if(a[i]=='0'){
            if(b[i]=='1')ans+=c;
            else ans+=d;
        }
    cout<<ans<<endl;
}

C题:

#include<bits/stdc++.h>

using namespace std;

int main() {
	int n;
	scanf("%d", &n);
	int l = 1, sz = sqrt(n);
	int r = sz;
	while (1) {
		for (int i = r; i >= l; i--) printf("%d ", i);
		if (r == n) break;
		l = r + 1, r = min(n, l - 1 + sz);
	}
}

猜你喜欢

转载自blog.csdn.net/wzazzy/article/details/81530869