A. Remove Smallest (STL 의 간단 한 사용) Codeforces Round \ # 661 (Div. 3)

원본 링크:https://codeforces.com/contest/1399/problem/A
제목: 만약 에 두 개의 수의 차이 가 1 이면 작은 수 를 삭제 하고 두 개의 수가 같 으 면 임의의 하 나 를 삭제 하고 하나의 서열 을 정 합 니 다. 우 리 는 이 규칙 을 거 친 후에 서열 의 수량 이 마지막 에 하나만 남 을 수 있 는 지 판단 합 니 다.
문제 풀이 방향: 이 문 제 는 대기 열 을 이용 하여 비교적 편리 하 게 이 루어 집 니 다. 우 리 는 한 배열 로 입력 배열 을 저장 한 다음 에 정렬 을 합 니 다 (문제 에서 이미 순 서 를 정 했다 고 말 하지 않 았 습 니 다). 그 다음 에 모두 대열 에 들 어가 매번 삭제 할 수 없 는 수량, 즉 마지막 에 남 은 수량 을 판단 합 니 다.우리 가 이렇게 하면 팀 의 머리 요 소 를 취하 고 팀 의 머리 요 소 를 하나 더 내 고 팀 의 머리 요 소 를 가 져 가면 됩 니 다. 만약 에 차이 가 1 보다 적 으 면 삭제 성공 을 설명 합 니 다. 그렇지 않 으 면 + 1 을 설명 하 는 동시에 우 리 는 비교 과정 에서 대열 이 비어 있 는 지 여 부 를 판단 해 야 합 니 다.
AC 코드:
/*
*  :[email protected]
*blog:https://blog.csdn.net/hzf0701
* :                 ,    。
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include//   G++      ,     G++         
#include
#include
#include
#define scd(n) scanf("%d",&n)
#define scf(n) scanf("%f",&n)
#define scc(n) scanf("%c",&n)
#define scs(n) scanf("%s",n)
#define prd(n) printf("%d",n)
#define prf(n) printf("%f",n)
#define prc(n) printf("%c",n)
#define prs(n) printf("%s",n)
#define rep(i,a,n) for (int i=a;i<=n;i++)//i     ,a    ,n    ,  
#define per(i,a,n) for (int i=a;i>=n;i--)//i     , a    ,n    ,  。
#define pb push_back
#define fi first
#define se second
#define mp make_pair
using namespace std;
const int inf = 0x3f3f3f3f;//   
const int maxn = 1e5;//   。
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll>  pll;
typedef pair<int, int> pii;
//*******************************   ,            ***************************************//

int main(){
	//freopen("in.txt", "r", stdin);//         
	ios::sync_with_stdio(false);//  iostream       ,    。
	cin.tie(0); cout.tie(0);//    tie(0)(0  NULL)   cin cout   ,         。
	int t,n,nums[55];
	while(cin>>t){
		while(t--){
			cin>>n;
			queue<int> q;
			rep(i,0,n-1){
				cin>>nums[i];
			}
			sort(nums,nums+n);
			rep(i,0,n-1){
				q.push(nums[i]);
			}
			int sum=0;//        。
			int temp,temp1;
			while(!q.empty()){
				temp=q.front();
				q.pop();
				if(q.empty()){
					sum++;
					break;
				}
				temp1=q.front();
				if(temp1-temp>1){
					sum++;
				}
			}
			if(sum==1)
				cout<<"YES"<<endl;
			else
				cout<<"NO"<<endl;
		}
	}
	return 0;
}

좋은 웹페이지 즐겨찾기