• Good Bye 2019


    A.Card Game

    题目大意:两个人都有共有n张卡牌,每张卡牌上都有一个数xi,没有两张牌上的数相同,且xi不小于1不大于n。每次两个人选出一张牌来,牌上数字大的人赢得此局,如果谁最后手上拥有所有的n张牌,那么他取得胜利。

    分析:只要判断数字为n的牌在谁的手里即可。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int t,n,k1,k2,x;
        cin>>t;
        while(t--){
            cin>>n>>k1>>k2;
            int f = 0;
            for(int i=0;i<k1;i++){
                cin>>x;
                if(x==n) f=1;
            }
            for(int i=0;i<k2;i++){
                cin>>x;
                if(x==n) f=2;
            }
            if(f==1) cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
        return 0;
    }

    B.Interesting Subarray

    题目大意:问你是否能找到一个连续子序列,使得这段子序列里最大值减最小值大于等于这段子序列的长度。

    分析:只用比较相邻的两个数即可。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=2e5+7;
    int a[maxn];
    int main() {
        int t, n;
        cin >> t;
        while (t--) {
            cin >> n;
            for (int i = 1; i <= n; i++)
                cin >> a[i];
            bool f = false;
            int l = -1, r = -1;
            for (int i = 1; i <= n - 1; i++) {
                if (abs(a[i] - a[i + 1]) >= 2) {
                    f = true;
                    l = i;
                    r = i + 1;
                }
            }
            if (f) {
                cout << "YES" << endl;
                cout << l << " " << r << endl;
            } else {
                cout << "NO" << endl;
            }
        }
        return 0;
    }

    C. Make Good

    题目大意:让你再找几个ai,使得a1+a2+...+an=2*(a1^a2^...^an)。

    分析:就直接构造一个最简单的方法出来就行了,因为添加的元素个数没有限制到最少。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e5+7;
    typedef long long ll;
    ll a[maxn];
    int main() {
        int t, n;
        cin >> t;
        while (t--) {
            cin >> n;
            for (int i = 1; i <= n; i++)
                cin >> a[i];
            ll l = a[1], r = a[1];
            for (int i = 2; i <= n; i++) {
                l += a[i];
                r ^= a[i];
            }
            //l+x/2 = 2*(r^x)   2*l+x=4*(r^x)
            //1/2*l+x/4 = r^x
            cout << 2 << endl;
            cout << r << " " << l + r << endl;
        }
        return 0;
    }
  • 相关阅读:
    调试代码的技巧
    关联Lable和输入项
    如何更有效的利用自己的时间
    高效能人士的七个习惯>读书笔记之二
    .NET别名机制简介
    VS2005升SP1错误1718文件FileName被数字签名策略拒绝
    程序物语(三):做人、做事、生活
    程序物语(二):起手式
    SQL Server 2008如何压缩日志(log)文件?
    prototype中文参数乱码解决方案
  • 原文地址:https://www.cnblogs.com/SwiftAC/p/12118098.html
Copyright © 2020-2023  润新知