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

Codeforces Global Round 14-C. Phoenix and Towers-堆模拟

Phoenix and Distribution(字典序贪心)