CodeForces1221A 2048Game ( 模拟水题 )

题意

操作集合, 如果最后能凑出2048, 输出YES, 否则NO

题解

先是没理解题意当成是2048倍数就开始做题, 考虑的也复杂了
哎, 比赛时候心态炸了了

代码

#include <bits/stdc++.h> 
using namespace std; 
#define rg register 
#define sc scanf 
#define pf printf 



int main ( ) {  // freopen( "F:\\in\\.txt" , "r" , stdin ); 

    rg int T; 
    sc( "%d", &T ); 
    while ( T-- ) {
        rg int n;
        sc( "%d", &n ); 
        rg int tmp;
        rg int sum = 0;
        for ( rg int i = 0; i < n; ++i ) {
            sc( "%d", &tmp );
            if ( tmp<=2048 ) sum += tmp;
        }
        sum>=2048? puts( "YES" ) : puts( "NO" );
    }

 


    return 0 ; 
} 


// #include <bits/stdc++.h> 
// using namespace std; 
// #define rg register 
// #define sc scanf 
// #define pf printf 



// int main ( ) {  // freopen( "F:\\in\\.txt" , "r" , stdin ); 

//     int tmp;
//     map<int,int> mp;

//     rg int T;
//     sc( "%d", &T );
//     while ( T-- ) {

//         mp.clear();

//         rg int n; 
//         sc( "%d", &n );
//         for ( rg int i = 0; i < n; ++i ) {
//             sc( "%d", &tmp );
//             mp[tmp]++; 
//         }


//         rg bool jdg = false;
            
//         for ( map<int,int>::iterator it = mp.begin(); it != mp.end(); ++it ) {
//             if ( mp[2048] ) { 
//                 jdg = true;
//                 break;
//             }
//             if ( it->second==1 || it->second==0) continue;

//             if ( it->first > 2048 ) continue; 
            
//             if ( (it->second)*(it->first) >= 2048 ) {

//                 int shengYu = (it->second)*(it->first)%2048;

//                 int tot = (it->second)*(it->first)/2048;
//                 mp[2048] += tot;

//                 mp[it->first] = shengYu;
//             } else {
                
//             }


//         }

 
//         // for ( map<int,int>::iterator it = mp.begin(); it != mp.end(); ++it ) {
//         //     if ( it->second==0) continue;
//         //     if ( it->second== )
//         // }

//         jdg == true ? puts("YES") : puts("NO");

//     }




//     return 0 ; 
// } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值