zoukankan      html  css  js  c++  java
  • Namomo Cockfight Round 3 ab

    传送门

    A Poker  Time limit: 1000ms Memory limit: 262144k (wls视频讲解地址

    如果这次交换能够使得这个人手上的牌的点数的期望变大,他就会选择交换(只考虑这次交换,不考虑之后的人的情况)。四个人互相知道他们所有人都使用了这个策略。

    题意四个人四张牌, 然后给你 第四个人手上的牌 和  第二个人、第三个人是否与前面的人换牌, 问第四个人要不要换牌

    然后可以根据交换的策略直接枚举

    先枚举第二个人的情况

    1  Y   如果第二个人手中牌为1,那么他前面这张牌有 1/3 的概率是 2、3、4 期望为(2+3+4)/3=3 > 1 所以第二个人换牌

    2  Y   如果第二个人手中牌为2,那么他前面这张牌有 1/3 的概率是 1、3、4 期望为(1+3+4)/3=8/3 > 2 所以第二个人换牌   

    3  N   如果第二个人手中牌为3,那么他前面这张牌有 1/3 的概率是 1、2、4 期望为(1+2+4)/3=7/3 < 3 所以第二个人不换牌   

    4  N   如果第二个人手中牌为4,那么他前面这张牌有 1/3 的概率是 1、2、3 期望为(1+2+3)/3=2 < 4 所以第二个人不换牌   

    再枚举第三个人的情况

    1   如果第三个人手中牌为1, 然后枚举第二个人是否换牌和第三个人的情况

      YY   如果第二个人换牌 那么第二个人手上的牌是1或2,第三个人手上牌是1 所以第二个人手上牌只能是2  namo第一张牌有1/2的概率是3、4  期望为(3+4)/2=7/2 > 1 所以第三个人换牌

      NY   如果第二个人不换牌 那么第二个人手上的牌是3或4,第三个人手上牌是1  namo第二张牌有1/2的概率是3、4  namo 期望为(3+4)/2=7/2 > 1 所以第三个人换牌

    2   如果第三个人手中牌为2, 

      YY   如果第二个人换牌 那么第二个人手上的牌是1或2,第三个人手上牌是2 所以第二个人手上牌只能是1  namo第一张牌有1/2的概率是3、4  期望为(3+4)/2=7/2 > 2 所以第三个人换牌

      NY   如果第二个人不换牌 那么第二个人手上的牌是3或4,第三个人手上牌是2  namo第二张牌有1/2的概率是3、4  namo 期望为(3+4)/2=7/2 > 2 所以第三个人换牌

    3   如果第三个人手中牌为3, 

      YN   如果第二个人换牌 那么第二个人手上的牌是1或2,namo第二张牌有1/2的概率是牌以后变成4  1/4的概率是1、2 期望为(1+2)/4+4/2=11/4 < 3 所以第三个人不换牌

      NY   如果第二个人不换牌 那么第二个人手上的牌是3或4,第三个人手上牌是3 那第二个人手上牌是4  namo一定要换 所以第三个人换牌

    4   如果第三个人手中牌为4, namo坚决不换 换了以后以后会变小

      NN   

      YN   

    然后来枚举第四个人的情况(根据之前的第三个人情况枚举)

       由前两个人的换牌情况推测前两个人的牌  如果第四个人手里牌是1  如果第四个人手里牌是2  如果第四个人手里牌是3  如果第四个人手里牌是4
    NN 第三个人为4,第二个人为3  namo换    namo换    namo不可能   namo不可能  
    NY 第三个人可能为1、2、3,第二个人为3 、4     namo换    namo换    namo换    namo不换  
    YY  第二个人第三个人为 1或2       namo不可能    namo不可能   namo换    namo不换  
    YN 第二个人为1或2 第三个人为3或4        namo换    namo换    namo换    namo不换  

                                               

    嬲 Time limit: 1500ms Memory limit: 262144k

    两种情况一种是能刷无限条命 一种是不能

    能刷无限条命的情况就是能构成一个环 环长度大于等于k,可以模拟得到最长的环应该是每隔两个位置跳  不能跳时再跳回来

    不能刷无限次命的情况就是找一条能跳的最大链

    #include<bits/stdc++.h>
    
    using namespace std;
    #define ll long long
    #define _for(i,a,b) for(int i = (a); i < (b); i++)
    #define _rep(i,a,b) for(int i = (a); i <= (b); i++)
    void taskA() {
        int x; cin >> x;
        string s; cin >> s;
        if(((x==1 or x==2) and s == "YY") or (x==3 and s == "NN")) cout << "Impossible
    ";
        else if(x == 4) {
            if(s == "NN") cout << "Impossible
    ";
            else cout << "N
    ";
        }
        else    cout << "Y
    ";
        return;
    }
    View A Code
    void taskB() {
        int t; cin >> t;
        while(t--) {
            int n,k;
            ll x;
            cin >> n >> x >> k;
            vector<ll> a(n), dp(n,1);
            _for(i,0,n) cin >> a[i];
            _for(i,1,n) if(a[i]-a[i-1] <= x) dp[i]++;
            ll ma = n>1 ? dp[1] : 1;
            _for(i,2,n) {
                if(a[i]-a[i-2] <= x)    dp[i] = (dp[i-1]+1);
                ma = max(ma, dp[i]);
            }
            if(ma >= k) {cout << "niao!
    ";}
            else {
                _for(i,1,n) {
                    if(a[i]-a[i-1] <= x) dp[i] = dp[i-1]+1;
                    ma = max(ma, dp[i]);
                }
                cout << ma << "
    ";
            }
        }
        return;
    }
    View B Code
    int main() {
        //taskA();
        taskB();
        return 0;
    }
  • 相关阅读:
    Payload Header到底是什么
    usb bulk传输和同步传输
    Video streaming interface 带宽的选择
    Methyl-SeqDNA的甲基化图谱|DNase I-Seq|ChIP-Seq|3C-Seq|
    连词词组|relax|brings about a rise in|Chance are (high)that|Have no clue|Be passionate about|Tedious|overwhelmed by piles of
    body书写总框架
    单个body|简单解释|复杂解释|反面解释
    TS写法
    saturates|meteoric|enclose|marooned|predators|Pioneer community|salinization|condenser|embodied
    否定事实信息题
  • 原文地址:https://www.cnblogs.com/163467wyj/p/13375068.html
Copyright © 2011-2022 走看看