码迷,mamicode.com
首页 > 其他好文 > 详细

Namomo Cockfight Round 3 ab

时间:2020-07-26 19:35:40      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:task   pre   for   ada   com   info   nbsp   tor   概率   

传送门

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\n";
    else if(x == 4) {
        if(s == "NN") cout << "Impossible\n";
        else cout << "N\n";
    }
    else    cout << "Y\n";
    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!\n";}
        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 << "\n";
        }
    }
    return;
}
View B Code

 

int main() {
    //taskA();
    taskB();
    return 0;
}

 

Namomo Cockfight Round 3 ab

标签:task   pre   for   ada   com   info   nbsp   tor   概率   

原文地址:https://www.cnblogs.com/163467wyj/p/13375068.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!