A题 [KOI 2024 Round 2] 寻宝游戏

#include<bits/stdc++.h>
using namespace std;
int T;
long long l,r,s,t;
int main(){
	cin>>T;
	while(T--){
		cin>>l>>r>>s;
		if(l==s||r==s) cout<<1<<endl;
		else{
			if(abs(l-s)<abs(r-s)){
				if(s-l>0){
					t=abs(l-s)*2+1;
				}else{
					t=abs(l-s)*2;
				}
			}else{
				if(r-s>0){
					t=abs(r-s)*2;
				}else{
					t=abs(r-s)*2+1;
				}
			}
			cout<<t<<endl;
		}
	}
	return 0;
}

B题 [JOI2020 预选赛 R2] 求和 / Digit Sum

//#include<bits/stdc++.h>
//using namespace std;
//int n,t;
//int a[1000000];
//bool b[1000000];
//int h(int x){
//	int s=0;
//	while(x!=0){
//		s+=x%10;
//		x/=10;
//	}
//	return s;
//}
//int main(){
//	cin>>n;
//	for(int i=1;i<=n;i++){
//		int j=i,k=1;a[k]=j;
//		while(j<n){
//			j+=h(j);
//			k++;
//			a[k]=j;
//		}
//		if(j==n){
//			for(int i=1;i<=k;i++){
//				b[a[i]]=1;
//			}
//		}
//	}
//	for(int i=1;i<=1000000;i++){
//		if(b[i]==1) t++;
//	}
//	cout<<t;
//	return 0;
//}
#include<bits/stdc++.h>
using namespace std;
int n;
int dp[1000010];
int h(int x){
	int s=0;
	while(x!=0){
		s+=x%10;
		x/=10;
	}
	return s;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		if(i+h(i)>n) continue;
		dp[i+h(i)]+=dp[i]+1;
	}
	cout<<dp[n]+1;
	return 0;
}

C题 [JOIGST 2024] 卡牌游戏 / Card Game 3

#include<bits/stdc++.h>
using namespace std;
long long n,t;
struct node{
	int b,c;
}a[500010];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].b>>a[i].c;
	}
	if(a[2].c==2){
		for(int i=2;i<=n;i++){
			if(a[1].b+a[i].b>0){
				t+=a[1].b+a[i].b;
			}
		}
	}else if(a[2].c==1){
		int ma=1,mi=2,ma2=3;
		if(a[1].b<a[2].b) ma=2,mi=1;
		for(int i=4;i<=n;i++){
			if(a[i].b>a[ma2].b) ma2=i;
		}
		for(int i=3;i<=n;i++){
			if(a[ma].b+a[i].b>0){
				t+=a[ma].b+a[i].b;
			}
		}
		if(a[mi].b+a[ma2].b>0){
			t+=a[mi].b+a[ma2].b;
		}
	}
	cout<<t;
	return 0;
}
//#include<bits/stdc++.h>
//using namespace std;
//int n,t;
//struct node{
//	int b,c;
//	bool f=1;
//}a[500010];
//int main(){
//	cin>>n;
//	for(int i=1;i<=n;i++){
//		cin>>a[i].b>>a[i].c;
//	}
//	int ma=1;
//	for(int i=2;i<=n;i++){
//		if(a[i].b>a[ma].b) ma=i;
//	}
//	if(a[ma].b<=0) cout<<0;
//	else{
//		for(int i=1;i<=n;i++){
//			if(a[ma].b+a[i].b<0){
//				a[i].f=0;
//			}
//		}
//		
//		cout<<t;
//	}
//	return 0;
//}