本次比赛Rated已完成计算

A: 简单的计数。输入用while(cin>>)可以解决。

#include<bits/stdc++.h>
using namespace std;
int a,b;
int main(){
	cin>>a;
	int t=0;
	while(cin>>b&&b<a){
		t++;
	}
	cout<<t+1;
}

B: 因为数据量较大,所以推荐用欧拉筛(线性筛)。 嵌入一个模板即可。

#include<bits/stdc++.h>
using namespace std;
#define m 5800000
#define m1 100000000
bool f[m1];
int n,cnt=0,p[m];
int main(){
    scanf("%d",&n);
    for(int i=2;i<=n;i++){
        if(!f[i]){
            p[++cnt]=i;
		}
		for(int j=1;j<=cnt;j++){
            if(i*p[j]>n)break;
			f[i*p[j]]=1;
            if(!(i%p[j]))break;
		}
    }
    printf("%d",cnt);
    return 0;
}

C: 二维数组,记录k[a][b]是否为true。 记得在读入时同时将k[a][b]与k[b][a]同时设为true. 因为题目没有保证a>b。

#include<bits/stdc++.h>
using namespace std;
int x,y,z,a,b;
bool k[15005][15005];
int main(){
	scanf("%d%d%d",&x,&y,&z);
	for(int i=0;i<y;i++){
		scanf("%d%d",&a,&b);
		k[a][b]=1;
		k[b][a]=1;
	}
	for(int i=0;i<z;i++){
		scanf("%d%d",&a,&b);
		if(k[a][b])printf("1\n");
		else printf("0\n");
	}
}

D: 基础数组应用。

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    cin>>n>>m;
    int a[n+1];
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=m;i++){
        int b;
        cin>>b;
        cout<<a[b]<<endl;
    }
    return 0;
}

E: 昨天洛谷的同源题。 n次循环搞定。

#include<bits/stdc++.h>
using namespace std;
#define int long long 
int n,a[100004],b[100005],x,y,num=0;
signed main(){
	cin>>n>>x>>y;
	num=x;
	for(int i=0;i<n;i++){
		if(num>=y){
			cout<<num;
			return 0;
		}
		cin>>a[i]>>b[i];
		if(num<a[i]){
			cout<<num;
			return 0;
		}else{
		num-=a[i];
		num+=b[i];
		}
	}
	cout<<num;
}

2 comments

  • @ 2025-7-19 9:27:15

    本次比赛Rated已完成计算

    • @ 2025-7-19 9:22:50

      哇!大佬技术力太强了吧!

    • 1