2019 ICPC 南京区域赛 - H Prince and Princess(博弈+思维)

题目链接


题意

a a a个只说真话的人(其中一位是公主), b b b个只说假话的人, c c c个回答可以为真可以为假的人。向这些人进行询问,可以进行三种询问,分别为询问回答者的身份,其他任意一个人的身份或谁是公主

解题思路

感觉这题模拟即可,只是读懂这个题目的 t r i c k trick trick很难。其实发现问什么问题不重要,只要 a > b + c a>b+c a>b+c,就一定YES,问的人数就是 2 ∗ ( b + c ) + 1 2*(b+c)+1 2(b+c)+1。但这还不够,仔细观察下面这句话:

  • They will never refuse to answer the questions, but may not tell the truth. People, including Princess Tofu herself, who support this marriage will present the facts.

意思是,公主也在支持者的范围内,可能会问到公主。也就是支持者至少有一个人,即公主。如果这个理解不了的话看 a a a的范围 ( 1 ≤ a ≤ 2 × 1 0 5 ) (1 \leq a \leq 2×10^5) (1a2×105)。所以就是当 a a a 1 1 1 a > b + c a>b+c a>b+c时,什么都不要问,请他们立刻原地结婚

PS:仔细多读几遍题目并不是坏事,可能经常有遗漏的细节

代码:

#include <iostream>
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    if(a>(b+c)){
        if(a==1)
            printf("YES\n0");
        else printf("YES\n%d",2*(b+c)+1);
    }else printf("NO\n");
    return 0;
}

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值