AT1716 袋とボール题解

题目传送门


思路:

  • \(A\) 袋有一个数等于 \(C\),那么答案就包含着 \(B\) 袋中的两个数;
  • \(B\) 袋有一个数等于 \(C\),那么答案就包含着 \(A\) 袋中的两个数;

当然,还要将答案排序并去重,需要用 algorithm 库中的 sortunique 这两个函数。

就这样,我们就顺利地 AC 了!


代码如下

//#include<bits/stdc++.h>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF=0x3f3f3f3f,MOD=1e9+7;
#define pu putchar
#define endl puts("")
//#define int __int128
//#define int long long
#define rep(i,l,r) for(int i=l;i<=r;++i)
#define per(i,r,l) for(int i=r;i>=l;--i)
#define me0(a); memset(a,0,sizeof a);
#define me3(a); memset(a,0x3f,sizeof a);
#define PII pair<int,int>
void read(int &n){char c,w=1;for(;48>c||c>57;c=getchar())
w=c==45?-1:1;for(n=0;47<c&&c<58;c=getchar())n=n*10+c-48;n*=w;
}void write(int x){if(x<0)pu(45),x=-x;char c[41],s=0;
for(;x;)c[s++]=x%10,x/=10;if(!s)pu(48);for(;s--;)pu(c[s]+48);
}void debug(int n){printf("\tdebug:\t"); write(n); pu('\t');}
const int MAXN=2e5+10;
int a1,a2,b1,b2,c,a[10],tot;
signed main(){
	read(a1); read(a2); read(b1); read(b2); read(c);
    if(c==a1||c==a2){
    	a[++tot]=b1; a[++tot]=b2;
	}if(c==b1||c==b2){
		a[++tot]=a1; a[++tot]=a2;	
	}sort(a+1,a+tot+1);
    tot=a[0]=unique(a+1,a+tot+1)-a-1;
    rep(i,0,tot){
    	write(a[i]); endl;
	}
}

\(AC\) 记录(全洛谷第一最优解,欢迎打破)。

完结撒花 \(\sim\sim\sim\)

posted @ 2023-07-01 11:11  liukejie  阅读(10)  评论(0编辑  收藏  举报