Codeforces Round #627 (Div. 3)

A - Yet Another Tetris ProblemCodeForces - 1324A

题意:给定一串长度为n的数组,当这串数组至少有一个数组大于 0 时进行如下操作:1、选择一个数+2 2、当这串数组每个数都大于 0 时,使这个数组每个数都减 1 ,直到有数小于等于0.然后在进行 1 操作,循环进行。问最后能否经过这些操作让这个数组上的数全部变为 0 。

思路:我感觉我当时写的时候思路是乱的,毕竟也好久没有写过题了,尴尬…….其实这个题就是思维题,你会发现只要数组同时出现奇数和偶数就不行,因为如果两个数相差 1 ,加上 2 是无法弥补的。

简单代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
int main(){
    ios :: sync_with_stdio( false );
    cin.tie( NULL );
    int t, n, num, f;
    cin >> t;
    while( t-- ){
        cin >> n;
        int flag = 1;
        for( int i = 0; i < n; i++ ){
            cin >> num;
            if( !i ){
                f = num % 2;
            }
            else{
                if( f != ( num % 2 ) ){
                    flag = 0;
                }
            }
        }
        if( flag ){
            cout << "YES\n";
        }
        else{
            cout << "NO\n";
        }
    }
    return 0;
}

 


复杂代码(有点模拟的感觉,其实思路是乱的,碰巧过了罢了):

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    ios :: sync_with_stdio( false );
    cin.tie( NULL );
    int t, n, a[110];
    cin &g
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值