节操大师 北方大学生程序设计竞赛 南开大学

Description

MK和他的小伙伴们(共n人,且保证n为2的正整数幂)想要比试一下谁更有节操,于是他们组织了一场节操淘汰赛。他们的比赛规则简单而暴力:两人的节操正面相撞,碎的一方出局,而没碎的一方晋级(脑补一下端午节的碰鸡蛋游戏>_<)。最后经过数轮淘汰决出冠军“节操大师”。

通过理性的研究,你测算出他们的节操值分别为1,2,...,n,我们不妨称这个值为“硬度”吧。同时你又测出了一个节操常数k:当两个硬度相差超过k的节操相撞时,硬度小的节操必碎;而当两个硬度相差不超过k的节操相撞时,由于现场操作的不确定因素,两个节操都有碎的可能(当然我们假设不会出现两边都碎的情况囧)。

显然,节操值较低的人也许没有任何可能得到冠军。下面就请你预测,这次比赛的冠军“节操大师”的节操最小值为多少。

Input

输入只有一行,两个正整数n和k分别表示参赛人数和节操常数。

Output

输出一行,一个正整数,表示“节操大师”的节操最小值。

Sample Input

8 2

Sample Output

3

Hint

对20%数据,n≤16;

对50%数据,n≤4096;

对100%数据,n≤131072, 保证n为2的正整数幂,k<n。

Source

Nankai UniversityFreshman Programming Contest 2015


题解:这道题目很有意思,两两相撞,当节操差大于k时,节操小的必碎,否则的话,两个都可能碎(一次碰撞只能碎一个)

我们采用二分答案的方法,对于每一个答案ans,我们判断它能否形成一个竞赛树(自顶向下生成,也就是逆向思考)在考虑最后一轮对撞的时候

必然有ans与x对撞,其中ans >= x 或者是x - ans <= k因为只有这样才有可能选上,我们贪心地对于ans选取比ans大,且ans可能战胜的最大的x,如果不满足的话,我们就选取第二大的x。。。。依次类推,这样的话我们可以保证ans总是发挥了它最大的能力,这样的话最有可能构成一个完全二叉树,如果不能构成完全二叉树,说明这个答案不合适


#include <iostream>
#include <set> 
#include <cstdio>
#include <vector>
using namespace std;
int n,k;
bool check(int x)
{set<int> st;vector<int> vec;vec.push_back(-x);for(int i = 1;i <= n;i++)if(i != x)st.insert(-i);while(vec.size() != n){int s = vec.size();for(int i = 0;i < s;i++){int v = vec[i];auto np = st.lower_bound(v - k);int y = *np;if(np != st.end()){vec.push_back(y);//st.erase(y);}elsereturn false;}}return true;
}
int main()
{scanf("%d%d",&n,&k);int l = 1,r = n + 1;while(l < r){int mid = (l+r)/2;if(!check(mid)) l = mid + 1;else r = mid ;}cout<<l<<endl;
} 




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客-仓鼠的石子游戏【博弈论】

正题 题目链接:https://ac.nowcoder.com/acm/contest/1100/A 题目大意 nnn个环&#xff0c;第iii个环有aia_iai​个珠子。要求涂色时没有相邻的同色。 两个人轮流涂色&#xff0c;直到一个人无法涂色为止。 解题思路 其实先手后手的胜利与他们的操作没有任何关系。 考虑一个…

Window7 docker安装

一、下载docker toolbox docker-toolbox-windows-docker-toolbox安装包下载_开源镜像站-阿里云 -ce后缀的是免费的版本&#xff0c;其他是收费版本 二、安装 安装完成即可 三、启动docker 双击 Docker Quickstart Terminal启动 其他问题&#xff1a; 启动拉boot2docker镜像失…

aspnetcore.webapi实践k8s健康探测机制 - kubernetes

1、浅析k8s两种健康检查机制Liveness k8s通过liveness来探测微服务的存活性&#xff0c;判断什么时候该重启容器实现自愈。比如访问 Web 服务器时显示 500 内部错误&#xff0c;可能是系统超载&#xff0c;也可能是资源死锁&#xff0c;此时 httpd 进程并没有异常退出&#xff…

dp 树状数组 逆序元组

wmq的队伍 发布时间: 2017年4月9日 17:06 最后更新: 2017年4月9日 17:07 时间限制: 2000ms 内存限制: 512M 描述 交大上课需要打卡&#xff0c;于是在上课前的几分钟打卡机前往往会排起长队。 平时早睡早起早早打卡的wmq昨晚失眠&#xff0c;今天起晚了&#xff0c;于是他…

牛客-服务器需求【线段树】

正题 题目链接:https://ac.nowcoder.com/acm/contest/1101/A 题目大意 nnn天第iii天需要aia_iai​台机器&#xff0c;每台机器可以工作mmm天。qqq次修改&#xff0c;每次修改一个aia_iai​&#xff0c;求每次修改后至少需要雇佣多少台机器。 解题思路 很容易想到答案就是max{…

快速搭建CentOS+ASP.NET Core环境支持WebSocket

以前用python&#xff0c;go尝试在linux下做web服务&#xff0c;python没有强类型支持与高性能&#xff0c;go又没有很好的集成开发环境&#xff08;还有强迫症的语法&#xff09;&#xff0c;回头看了几次.net&#xff0c;都没有时间尝试&#xff0c;现终于实现了这些想法&…

博客文章列表(一)——JAVA

一、成长系列 面试 详情列表 编程难题 详情列表 java总结 详情列表 java技能 详情列表 java面…

Cube Or 北方大学生训练赛

Cube Or Time Limit: 2000/2000 MS(Java/Others) Memory Limit: 262144/262144 K(Java/Others) Problem Description : Given you N Integers ai (1≤i≤N) , you can do thefollowing operation: pick out …

牛客-沙漠点列【tarjan】

正题 题目链接:https://ac.nowcoder.com/acm/contest/1101#question 题目大意 nnn个点mmm条边的沙漠(所有联通子图都是仙人掌)&#xff0c;删除kkk个点使得剩下的连通块最多。 解题思路 对于图上的每条割边&#xff0c;删去之后就可以多出一个联通块&#xff0c;所以我们就可…

来自后端的突袭? --开包即食的教程带你浅尝最新开源的C# Web引擎 Blazor

在今年年初, 恰逢新春佳节临近的时候. 微软给全球的C#开发者们, 着实的送上了一分惊喜. 微软正式开源Blazor &#xff0c;将.NET带回到浏览器.这个小惊喜, 迅速的在dotnet开发者中间传开了. 而就在昨天(2018年3月22日) Blazor发布了它的第一次Release. Blazor到底是个什么样的东…

博客文章列表(二)——算法、数据结构、数据库、ABCD

七、编程基础 数据结构 详情列表 算法 详情列表 算法.排序 详情列表 算法.加密 详情列…

A*B NTT快速数论变换

wmq的AB Problem 发布时间: 2017年4月9日 17:06 最后更新: 2017年4月9日 17:07 时间限制: 3000ms 内存限制: 512M 描述 这是一个非常简单的问题。 wmq如今开始学习乘法了&#xff01;他为了训练自己的乘法计算能力&#xff0c;写出了n个整数&#xff0c;并且对每两个数a,…

51nod-猴猴吃苹果【线段树】

正题 题目链接:https://www.51nod.com/Contest/ProblemList.html#contestId188&randomCode291765 题目大意 nnn个点的一棵树&#xff0c;从kkk节点出发&#xff0c;每次走到最远的一个节点(路上点最多,如果有多个就编号最小的)并将路上的点权变为0&#xff0c;求会依次到达…

北方大学 ACM 多校训练赛 第十五场 蜘蛛牌A

题目描述 XCX最近迷上了玩蜘蛛牌。蜘蛛牌是windowsxp操作系统自带的一款纸牌游戏&#xff0c;游戏规则是这样的&#xff1a;只能将牌拖到比它大一的牌上面&#xff08;A最小&#xff0c;K最大&#xff09;&#xff0c;如果拖动的牌上有按顺序排好的牌时&#xff0c;那么这些牌也…

dotnet watch+vs code提升asp.net core开发效率

在园子中&#xff0c;已经又前辈介绍过dotnet watch的用法&#xff0c;但是是基于asp.net core 1.0的较老版本来讲解的&#xff0c;在asp.net core 2.0的今天&#xff0c;部分用法已经不太一样&#xff0c;所以就再写一篇文章来介绍dotnet watch vs code来提升asp.net core开发…

51nod-猴猴吃香蕉【dp】

正题 题目链接:https://www.51nod.com/Contest/Problem.html#contestProblemId1149 题目大意 nnn个数&#xff0c;求有多少种选择方案使选择的数乘机为kkk。 解题思路 显然kkk的质因数最多只有999个&#xff0c;我们将质因数进行dpdpdp。若选择的数的质因数刚好是kkk的质因数…

北方大学 ACM 多校训练赛 第十五场 数字游戏

本题的意思是&#xff0c;给你1/2&#xff0c;1/2&#xff0c;1&#xff0c;2&#xff0c;4……2^&#xff08;k-1&#xff09; &#xff0c;让你在左边的数列中添加号或者-号&#xff0c;使得最终的答案为n即可。 思路&#xff1a; 我们知道上面这些数直接如果全部都填号的话…

ASP.NET Core + Docker + Jenkins + gogs + CentOS 从零开始搭建持续集成

没有采用gitlab&#xff0c;因为gitlab比较吃配置。也比较重&#xff0c;用不到那么多功能。采用go语言开发的gogs来代替。免费HTTPS证书安装Gogs (一个gitserver&#xff0c;类似于gitlab)安装DockerDocker配置加速器 一定要配置&#xff0c;用官方的源会让你体会到什么叫做绝…

51nod-猴猴的比赛【莫队,线段树】

正题 题目链接:https://www.51nod.com/Contest/Problem.html#contestProblemId1150 题目大意 给出两颗nnn个点的树&#xff0c;求有多少个点(i,j)(i,j)(i,j)对使得在两棵树中iii都是jjj的祖先。 解题思路 在dfsdfsdfs序中一个节点的孩子是在一个连续的区间中的。所以对于第一…

北方大学 ACM 多校训练赛 第十五场 买花

显然是一个比较简单的离线查询问题。 本质上是对区间求集合的问题&#xff0c;按照区间右端点从小到大对区间进行排序&#xff0c;然后用一个指针curr表示当前正在考虑区间的最右侧位置&#xff0c;针对排好序区间[tarl,tarr]&#xff0c;先查看curr是否到达tarr&#xff0c;如…