20200104模拟赛 问题C 上台拿衣服
题目



分析:
乍一看不就是从楼上扔鸡蛋那道题吗。。。
然后开始写写写。。。
设f [ i ] [ j ]表示 i 个记者膜 j 次可以验证多少层楼。。。
于是开始递推:
我们选取第 i 个记者去尝试其中一层楼y
如果他被续了(续和膜蛤是sm意思啊2333)

/*龙门粗口*/
如果他被续了,那么说明x<y,然后研究子问题f [ i-1 ] [ j-1 ]
如果他没被续,那么说明x>=y,然后研究子问题f [ i ] [ j-1 ]
包括自己所在这层楼,所以递推式为:
f [ i ] [ j ] = f [ i ] [ j-1 ] + f [ i-1 ] [ j-1 ] + 1
于是我们可以预处理出答案,然后询问时lowerbound就好了。。。
我记得当时开的f[64][64]来着。。。
开了,美滋滋。。。。
一个小时后。。。
不对!!!!
这样连n=100,k=1都算不对?!
突然想起原题有这样一个限制,如果尝试次数超过64就直接输出-1!
差点翻车。。。
于是就往大了开
开到了f[64][100000]
这样能算多少呢。。。
嗯,当k>3时,都是算的出来的。。。
那么找一下k=1,2,3的规律吧。。
k=1时,ans就是n
k=2时,ans满足ans*(ans+1)/2>=n
k=3时。。。
不会诶。。。
那么为3新开一个怎么样
又开了个g[3][3000000]
咦,跑出来了,稳了。。。
结果。。。

枯了出来。。。
真该死啊,改小一点就过了。。。
但是这道题的奇奇怪怪的技巧有必要记一下2333
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector> #define maxn 100005
#define maxm 65
#define INF 1000000000000000000ll using namespace std; inline long long getint()
{
long long num=,flag=;char c;
while((c=getchar())<''||c>'')if(c=='-')flag=-;
while(c>=''&&c<='')num=num*+c-,c=getchar();
return num*flag;
} long long f[maxm][maxn];
long long g[][*maxn];
long long N,K; inline void init()
{
for(int i=;i<maxm;i++)for(int j=;j<maxn;j++)f[i][j]=min(f[i][j-]+f[i-][j-]+,INF);
for(int i=;i<=;i++)for(int j=;j<*maxn;j++)g[i][j]=min(g[i][j-]+g[i-][j-]+,INF);
} inline void solve(long long N)
{
long long l=,r=1ll<<;
while(l<r)
{
long long mid=(l+r)>>;
if(1ll*mid*(mid+)/<N)l=mid+;
else r=mid;
}
printf("%lld\n",l);
} int main()
{
int T=getint();
init();
while(T--)
{
N=getint(),K=getint();
if(K==)printf("%lld\n",N);
else if(K==)solve(N);
else if(K==)printf("%d\n",lower_bound(g[K]+,g[K]+*maxn,N)-g[K]);
else printf("%d\n",lower_bound(f[K]+,f[K]+maxn,N)-f[K]);
}
}

20200104模拟赛 问题C 上台拿衣服的更多相关文章
- 20200104模拟赛 问题A 图样
题目 分析: 老规矩,遇到期望要准备好随时投降... 大致想到了按位处理,然后分别下去搜索,再用组合数加加减减一下... 但是两个连通块之间连边的期望怎么算呢? 很好,投降... 下来看题解... 果 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- NOI模拟赛 Day1
[考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 小奇模拟赛9.13 by hzwer
2015年9月13日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...
- PKUSC 模拟赛 day1 下午总结
下午到了机房之后又困又饿,还要被强行摁着看英文题,简直差评 第一题是NOIP模拟赛的原题,随便模拟就好啦 本人模拟功力太渣不小心打错了个变量,居然调了40多分钟QAQ #include<cstd ...
- [GRYZ]寒假模拟赛
写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优( ...
随机推荐
- Resharper 去掉注释拼写
最近在 Resharper 的 2018.2.1 的版本,提供了单词拼写功能,如果自己写错了单词,可以在 Resharper 提示 Resharper 的拼写 在 Resharper 的 2018.2 ...
- git之github解决冲突
1.先创建一个txt文件,并进行编辑 2.然后推送到github,过程看之前的教程. 3.在另一个文件夹拉取(用小乌龟拉取),分别在克隆文件夹和原本文件夹操作test.txt. 4.把本体推送给服务器 ...
- mac 访达修改所有文件夹默认排序方式
先说个误区,下图只能改变当前目录的排序方式 修改所有目录的排序方式需要在顶部的“显示” 中修改
- 0014 标签显示模式:display(重点)
目标: 理解 标签的三种显示模式 三种显示模式的特点以及区别 理解三种显示模式的相互转化 应用 实现三种显示模式的相互转化 2.1 什么是标签显示模式 什么是标签的显示模式? 标签以什么方式进行显示, ...
- IntelliJ IDEA安装教程及使用方法
IntelliJ IDEA安装教程及使用方法 首先,需要去下载IDEA,直接在百度搜索IntelliJ IDEA,然后找到官网点击进入 进入官网,选择[Download],点击进入,选择自己的操作系统 ...
- 「2018-12-02模拟赛」T3 约束排列 解题报告
3.约束排列(place.pas/cpp/in/out) 问题描述: 给出 n 个互不相同的小写字母,表示出现的字符类型,以及 k 个约束关系: .....,表示 ai 必须出现在 bi 前面(ai, ...
- button 使用 flex 布局的兼容性问题
button 使用 flex 布局的兼容性问题 在低版本的手机系统中, button 不能够作为 flex 元素,即使在 CSS 中指定了 display: flex 且 autoprefixer 也 ...
- virtualenv虚拟环境使用及介绍
一.为什么使用virtualenv虚拟环境 每个虚拟环境下的依赖相互独立,不同的项目可以单独使用一套python环境,减少各依赖包的影响 更容易部署 容器化 二.virtualenv创建虚拟环境 三. ...
- oracle官网下载jdk跑不动太慢了,给出快速下载方式mac
oracle官网下载jdk8跑不动太慢了,给出快速下载方式 之前在oracle官网下载jdk1.8实在速度太慢,只有20K左右的下载速度,有时候甚至不动,最关键的慢也就算了,cookie有效期有限,有 ...
- 【记】Linux下安装JDK1.7
Java官网已经不提供除最新版本以外版本的JDK下载了,下载JDK1.7,密码: rsqg 本地Linux系统为Centos6.9,本身就没安装Java:已安装Java需要先卸载,卸载方法请百度. 1 ...