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)题,经过他们优( ...
随机推荐
- substring和substr的区别和使用
第一反应是都是截取字符串的方法,好像平常使用的时候也没太注意区分这俩,今天看到正好来区分一下 substring(start,[end]) 如果省略end,那么截取的是从指定位置到末尾 var str ...
- 两种常见的缓存淘汰算法LFU&LRU
1. LFU 1.1. 原理 LFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”. 1.2. ...
- sed工具
SED是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑,标准输入可以来自键盘输入.文本重定向.字符串.变量,甚至来自于管道的文本,与VIM编辑器类似,它一次处理一行内容,Sed可以编辑一个或 ...
- 解决IDEA下tomcat启动server乱码
亲测成功的方式: 配置TOMCAT时,在VM opthions 添加 -Dfile.encoding=UTF-8
- 西游记之孙悟空三打白骨精(IMAX)
短评:看了20分钟就有玩手机的冲动.剧情还差点意思,不能达到吸引人目不转睛的程度
- c++ list的坑
std::list为空时调用pop_front的访问越界问题 std::list为空时调用pop_back访问越界问题 所以在使用pop_front . pop_back要先判断list是否为空 st ...
- TestStand 界面重置【小技巧】
有几种情况可能会使用到这个功能: (1)当界面调整的很乱的时候 (2)当界面突然消失的时候(但是软件进程还在)--快捷键 Alt+V 会弹出菜单,再点击Reset UI Configuration即可 ...
- python scrapy爬取前程无忧招聘信息
使用scrapy框架之前,使用以下命令下载库: pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple 1.创建项目文件夹 scr ...
- [Vue源码]一起来学Vue模板编译原理(二)-AST生成Render字符串
本文我们一起通过学习Vue模板编译原理(二)-AST生成Render字符串来分析Vue源码.预计接下来会围绕Vue源码来整理一些文章,如下. 一起来学Vue双向绑定原理-数据劫持和发布订阅 一起来学V ...
- windows下PostgreSQL 安装与配置
下载地址 https://www.postgresql.org/download/ Download the installer certified by EnterpriseDB for all s ...