常州培训 day3 解题报告
第一题:
给出数轴正半轴上N个点的坐标和其权值,给出初始体力值M,人一开始在位置0,体力值会随着走过路程的增加而增加,走多少个单位的路消耗多少体力值。到每个点可以打掉,消耗的体力值就是其权值。求 最多能打掉多少点。 N<=10000,其他<=10^18;
解题过程:
1.一开始就直接想到是贪心,首先人是不可能往左走的,否则不会最优。枚举最后停在哪个点,减去到这个点需要的体力,然后把这个点之前的所有点(包括这个店)的权值排个序,从小到大一个一个打,打到体力没有为止。复杂度分析:枚举N次,每次快拍+扫描一次,总的复杂度O(N*(NlogN+N));显然只能拿到部分分。
2.优化:用一个set,由于枚举是从左往右,只要每次添加一个点即可,不用每次都全部排序。或者用个链表做插入排序。
3.正解:如果走到一个点,此时体力能把它打掉,那就暂时假设把它给打掉,如果不能打掉,那么如果它的权值比之前打过的最大权值小,就替换掉,把体力加回去权值差。
这个过程用堆维护(修改,查询最大值),也可以用STL的优先队列。
4.注意数据要用long long 读入,scanf(“I64d"),scanf(”lld“)蛋疼,求稳的话直接cin,嫌cin太慢可以加个std::ios::sync_with_stdio(false);取消同步,经过试验比scanf还快。这题读入出了差错用了int,直接爆0,本来还迅速想到贪心,写了个堆,很快拍过,心情顿时不错,结果。。只能呵呵呵呵。
参考博文优化输入。
https://www.byvoid.com/zhs/blog/fast-readfile/
第二题:
题目大意:
假设有N个不相同的数字,将他们建成一个堆,求方案数mod (10^9+7);注意堆的性质,必须是完全二叉树。 N<=5000000
解题过程:
1.首先手工模拟一下,发现根据对于N个节点的堆,可以确定它的左右子树的节点数lc,rc,然后方案数就是F[lc]*F[rc]???,其实不然,比如N=6,lc=3,rc=2;左子树的3个节点的方案数是F[3],但是这仅仅是3个节点的堆有多少种形态,而3个节点的权值也可以多种取法,是组合数C(5,3)。 因此F[x]=F[lc]*F[rc]*C(n-1,lc);
2.对于C(i,j),可以用递推的方法求出,但是空间是肯定不够的。。(可以拿60分),所以应该直接由公式推,但是公式里又有除法。所以应该把除法转化为乘法,这里涉及求乘法逆元的知识,参考博文 http://blog.sina.com.cn/s/blog_7c4c33190100s48a.html 。加个记忆化就可以AC。
第三题:
题目大意:
给出M条边,N个点,求一生成树,使得最大边和最小边的权值差最小。 M<=15000,N<=2000;
解题过程:
1.AC算法肯定是想不到啦,然后想写个给力点的骗分算法:题目说要是生成树,其实多加几条边并不影响答案,因为答案只和最小最大边有关。因此先给边从小到大排个序,
枚举左端点,二分右端点,并查集判断能否联通。。 复杂度是O(NMlogM),本来以为能拿个60分的,结果只有30分,数据卡的比较紧。
常州培训 day3 解题报告的更多相关文章
- 常州培训 day5 解题报告
第一题:(贪心) 题目大意:给出N*M的矩形,要用正方形将它铺满(正方形之间不能重叠),相邻的正方形颜色不能相同,颜色用ABCD表示.要求从上到下从左到右字典序最小. N,M<=100 解题过程 ...
- 常州培训 day7 解题报告
最后一天..有些感慨,这七天被虐的感动万分 第一题: 题目大意: 求出 n*i(i=1,2,3....n) mod p的逆元 n<p<=3000000 ,p是质数. 之前写过了,懒得再写 ...
- 常州培训 day6 解题报告
第一题: 题目大意: 给出一个N*N的矩阵,矩阵元素均为0或1.定义矩阵权值为sum(F[i][j]*F[j][i]); 给出K个操作: 询问矩阵的权值mod 2. 将矩阵的某一行元素取反(0变成1, ...
- 常州培训 day4 解题报告
第一题:(简单的模拟题) 给出一个N位二进制数,有‘+’, ‘-’, ‘*’, ‘/’ 操作,分别表示加1,减1,乘2,除以2,给出M个操作,求出M个操作后的二进制数.N,M<=5000000; ...
- 常州培训 day2 解题报告
第一题: 题目大意: 给出一个M面的骰子,投N次,求最大期望值. 最大期望值的定义: 比如M=2,N=2, 那么 2次可以是 1,1,最大值为1: 1,2最大值为2: 2,1最大值为2: 2,2 最大 ...
- 常州培训 day1 解题报告
第一题:(骗分容易,AC难.) 题目大意: 给出一个字符串,找出满足条件A的区间的个数.A:字符A,B,C的出现次数相同. 都出现0次也算,区间的长度可以是0(就是只有一个数).30% |S| ≤ 1 ...
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- BZOJ 1051 最受欢迎的牛 解题报告
题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4438 Solved: 2353[S ...
随机推荐
- web设计经验<九>教你测试手机网页的5大方法
我们知道手机浏览器的使用量每天都在增长,根据StatCounter的统计数据,手机和平板的使用量约占30%的网络流量,这意味着消费者耗费在移动版网页上的时间比以往任何时候都高.可即使具备诸如移动端优先 ...
- mysql 编码测试
insert into t1(v1) values('cn中国'); select * from t1; 1.输入gbk,交互latin1,数据库latin1 insert,客户端把gbk的输入当成l ...
- rpm and yum commands
rpm命令 rpm包,由“-”.“.”构成,包名.版本信息.版本号.运行平台 对已安装软件信息的查询 rpm -qa 查询已安装的软件 rpm ...
- css技术和实例
今天,我为大家收集精选了30个使用纯CSS完成的强大实践的优秀CSS技术和实例,您将在这里发现很多与众不同的技术,比如:图片集.阴影效果.可扩展按钮.菜单等-这些实例都是使用纯CSS和HTML实现的. ...
- hdu1907(anti-sg入门)
改变了下规则,现在变成了最后拿的人输. 如果对于单纯的nim的话,只需要判断每堆都是1个石子的特殊情况. 因为如果存在有大于1个石子的堆话,类似于nim的取法,处于必胜状态的一方只需要在 对方取完后只 ...
- Struts2文件上传
1 在Struts2中上传文件需要 commons-fileupload-1.2.1.jar.commons-io-1.3.2.jar 这两个包. 2 确认页面form表单上的提交方式为POST, ...
- iOS开发 差间距滚动
CGFloat fView_Height(UIView *aView) { return aView.frame.size.height; } CGFloat fView_Width(UIView * ...
- 百度编辑器 无法获取post过去的值
如果你的,表单form是套用 table的话,请一下,要把 form 放在table的最外面.否则获取不到post值
- Selenium Grid Configuration
Start Hub and Node with Json config 1. Start Hub with json config file title HubWebDriver java -jar ...
- stream流批量读取并合并文件
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F ...