A. Phoenix and Gold
Posted Lnn.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A. Phoenix and Gold相关的知识,希望对你有一定的参考价值。
前言:我是菜鸡,写这题被自己的脑洞折磨,写成dp,dfs,差点没写出来。
A. Phoenix and Gold
题目类型:构造,模拟。
解析:题目中重要信息:数组中每个数都不一样,那么直接模拟,从1取到n,如果发现到i时,前缀和pre[i]=x,那么把i和没取过的换一下就行了,因为每个数都不一样,所以换完之后pre一定不等于x,如果等于,说明数组总和=x,输出no。
code:
#include <iostream>
#include <queue>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define min_(a,b) a<b?a:b
#define max_(a,b) a>b?a:b
using namespace std;
int t,n,x,sum,flag,a[101010];
int main()
{
ios::sync_with_stdio(false);
cin >> t ;
while(t--){
cin >> n >> x;
sum = 0;
int flag = 1;
for(int i = 1 ; i <= n ; ++i)
cin >> a[i] ;
for(int i = 1 ; i <= n ; ++i){
sum += a[i] ;
if(sum == x){
sum += a[n] - a[i];
swap(a[i] , a[n]);
if(sum == x){
flag = 0;
break;
}
}
}
if(flag){
cout << "YES" << endl ;
for(int i = 1 ; i <= n ; ++i)
cout << a[i] << " ";
cout << endl ;
}
else
cout << "NO" << endl ;
}
cout << "不要完全抄哦" << endl ;
return 0;
}
以上是关于A. Phoenix and Gold的主要内容,如果未能解决你的问题,请参考以下文章
CodeForces - 1515A Phoenix and Gold
Codeforces Global Round 14-A. Phoenix and Gold-暴力
CF A. Phoenix and Balance Codeforces Round #638 (Div. 2) 5月1号
CodeForces - 1515B Phoenix and Puzzle