二模Day2题解
小明搬家
题目描述
小明要搬家了,大家都来帮忙。
小明现在住在第N楼,总共K个人要把X个大箱子搬上N楼。
最开始X个箱子都在1楼,但是经过一段混乱的搬运已经乱掉了。最后大家发现这样混乱地搬运过程效率太低了,于是总结出了提高效率的方法。
大家的速度都是每分钟上(或下)一层楼。所有向上走的人手中都拿一个箱子,所有向下走的人手中都不拿箱子。到达第N层立刻放下箱子向下走,到达第1层立刻拿起箱子向上走。当一个人向上走,另一人向下走而在楼道里相遇时,向上走的人将手中的箱子交给另一人,两人同时反向。即原来拿箱子向上走的人不拿箱子向下走,原来不拿箱子向下走的人现拿着箱子向上走。 求将所有箱子搬完所需的最短时间。
输入
第一行N(N≤10^9),K(K≤500000),M(M≤10^9),分别表示楼层数、人数、还放在一楼地上的箱子数。
接下来K行,每行两个数Ai,Bi。
Ai表示第i人现所在的楼层数,Bi为0或1,为0表示第i人正拿着箱子向上走,为1表示第i人不拿箱子向下走。
输入满足没有任意两人正在同一楼层,在第1层的人一定正拿着箱子向上走,在第N层的人一定正不拿箱子向下走。
输出
仅包含一个整数,为搬完箱子的时间。
题解
这道题乍一看是没有头绪的。。。这道题目的要求很奇怪,似乎要用动态规划来做。但是又想不出来怎么动归,怎么办呢?
注意一开始有m个箱子,k个搬运工,楼高是n层。要把一个箱子从一楼搬到n楼明显要搬n-1楼,因为无论怎么样,都需要花费一个人的人力上到n层,再下来,那么就相当于一个人搬上搬下一次,多人搬运一件物品并不会减少时间。先忽略每个人手中已有的盒子数,那么要等到人都下到1层才能开始搬运,这时可以计算出从初始状态开始分别需要多少时间每个人都回到1层,记为delay[i]=eval('measure how many minutes %d-th worker is going back to the first floor',i)。
从这时开始,过2(n-1)分钟就可以运走k个盒子,最后一个运走盒子的搬运工的delay值就是delay[m mod k]。最后的答案就是2 floor(m/k)(n-1)+delay[m mod k],delay[0]=delay[m]-2(n-1)
圆圈舞蹈
题目描述
熊大妈的奶牛在时针的带领下,围成了一个圆圈跳舞。由于没有严格的教育,奶牛们之间的间隔不一致。
奶牛想知道两只最远的奶牛到底隔了多远。奶牛A到B的距离为A顺时针走和逆时针走,到达B的较短路程。告诉你相邻两个奶牛间的距离,请你告诉奶牛两只最远的奶牛 到底隔了多远。
输入
第一行一个整数N,表示有N只奶牛。(2≤N≤100000)
接下来2~N+1行,第I行有一个数,表示第I-1头奶牛顺时针到第I头奶牛的距离。(1≤距离≤maxlongint,距离和≤maxlongint)
第N+l行的数表示第N头奶牛顺时针到第1头奶牛的距离。
输出
一行,表示最大距离。
题解
最简单的解法当然是模拟了。纯模拟的时间复杂度为O(n3),这道题数据很大,过不了。有一点简单的优化是前缀和优化,可以把复杂度降到O(n2)。很可惜,还是过不了。
想想有没有别的办法?可不可以先二份答案再检验是否可行?如何检验?枚举起点,二分中点。(你可以试试这个办法)这个时间复杂度为O(n log22 n)。但是既然都这么检验了,干嘛不直接输出解?时间复杂度为O(n log2 n)。这时已经可以过了。还能再优化吗?
注意到我们只是要找最大的距离,就维护一个头指针指向当前扫描到的牛,尾指针指向离他最远的牛。显然当我们处理过i-1号牛后,头与尾的距离缩短了。试试此时头尾的距离值是不是比dist(head,tail+1)小。如果是的,就++tail,反复做下去直到不是为止。将这时的dist(head,tail)和maxDist比较并更新maxDist的值。tail和head的值都小于等于n,相当于这两个指针各走了一圈。时间复杂度O(n)。
物流运输(BZOJ 1003)
我都不敢相信这是一道ZJOI的题目,毁三观的难度。。。
就是一个简单的最短路+DP,不过不大好写。
F[i]=min{(for all F[j] which{0<j<i} + Dist(1,e){while applying all point ignoring between day j and day i}*(i-j)+k),dist(1,e){w a a p i b d 1 a d i}}
二模Day2题解的更多相关文章
- 二模 (8) day2
第一题: 题目描述: 有 n 个炸弹,有些炸弹牵了一根单向引线(也就是说引线只有在这一端能被炸弹点燃),只要引爆了这个炸弹,用引线连接的下一个炸弹也会爆炸.每个炸弹还有个得分,当这个炸弹被引爆后就能得 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- [18/12/3]蓝桥杯 练习系统 入门级别 Fibonacci数列求模问题 题解思路
前言略. 看到这个题目本来应该很高兴的,因为什么,因为太TM的基础了啊! 可是当你用常规方法尝试提交OJ时你会发现..hhh...运行超时..(开心地摇起了呆毛 //Fibonacci数列递归一般问题 ...
- 二模 (13)day2
第一题: 题目大意: 给出一个N*M的矩阵,定义一条路径的权值为经过的所有点权值的最大值.求一条从第一行到第N行的路径,使得路径权值最小. N,M<=1000 矩阵内点的权值小于1000. 解题 ...
- 二模 (12)day2
第一题: 题目大意: 有N颗糖,两个人轮流取,每次只能取质数颗,不能取的输.求先取者若必胜,最少需要多少步胜利.(N<=10000) 解题过程: 1.看到N的范围比较小,先打个素数表,然后dp即 ...
- 二模 (9) day2
第一题: 题目大意:求满足条件P的N位二进制数的个数.P:该二进制数有至少3个0或者3个1挨在一起.. N<=20000 解题过程: 1.一开始直接写了个dfs把表打了出来,不过没发现什么规律, ...
- 二模 (3) day2
第一题: 题目大意:(难以概括,就不贴了把.) 解题过程: 1.担心被精度问题恶心,就把平均数的地方乘了N,这样只有最后计算的时候才会是小数.. 2.数组保存的时候蛋疼的 没改成double.结果全部 ...
- 二模 (16) day1&day2
第一题:题目大意: 数列a[0]=a[1]=1, a[n]=a[n-2]*a[n-1]*n,求a[n]的因子个数 mod 1000000007. n<=1000000 解题过程: 1.递推式还 ...
- 二模 (15)day2
第一题:Alice和Bob两个人正在玩一个游戏,游戏有很多种任务,难度为p的任务(p是正整数),有1/2p 的概率完成并得到2p−1分,如果完成不了,得0分.一开始每人都是0分,从Alice开始轮流做 ...
随机推荐
- WCF入门 (13)
前言 公司略无聊,周三前同事推荐跳槽,于是会去更新了一下简历,突然发现,快一年了,我竟然想不出我可以往简历上添加点什么值得自豪的东西.下午和小伙伴聊了一会天,他告诉我,可以往简历上写上“英语口语水平有 ...
- Bootstrap3.0学习第二十六轮(JavaScript插件——图片轮播)
详情请查看http://aehyok.com/Blog/Detail/32.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...
- DOM系列---DOM操作样式
发文不易,若转载传播,请亲注明出处,谢谢! 一.操作样式 CSS作为(X)HTML的辅助,可以增强页面的显示效果.但不是每个浏览器都能支持最新的CSS能力.CSS的能力和DOM级别密切相关,所以我们有 ...
- 快速安装 GitLab 并汉化
转载:http://www.jianshu.com/p/7a0d6917e009
- grunt安装_
grunt_构建WEBJS程序框架,. package.json是文件配置 ====〉〉〉〉 在Gruntfile.js里面会引用到. //目录下直接放node的东西 ,比如: node_module ...
- 字符串转json
function str2json(str) { var arr = str.split('.'), json = {}, _this = json; if (!json[arr[0]]) json[ ...
- strncmp很好的函数
strcmp比较的是所有的长度,而strncmp可以比较前几个长度 strncmp(s1,s2,n);这样就比较了s1,s2,前n个长度的大小.
- Bsoj 1322 第K小数
第K小数 Description 现在已有N个整数,你有以下三种操作: 1 A:表示加入一个值为A的整数: 2 B:表示删除其中值为B的整数: 3 K:表示输出这些整数中第K小的数: Input 第一 ...
- Nginx Installation、Configuration、Rreverse Proxy、Load Balancing Learning
目录 . Nginx简介 . Nginx安装部署 . Nginx安全配置 . Nginx反向代理实践 . Nginx负载均衡实践 1. Nginx简介 0x1: Nginx的基本特性 Nginx(&q ...
- 采用httpclient提交数据到服务器
1)Get提交数据 效果演示: