第一题:

给出数轴正半轴上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 解题报告的更多相关文章

  1. 常州培训 day5 解题报告

    第一题:(贪心) 题目大意:给出N*M的矩形,要用正方形将它铺满(正方形之间不能重叠),相邻的正方形颜色不能相同,颜色用ABCD表示.要求从上到下从左到右字典序最小. N,M<=100 解题过程 ...

  2. 常州培训 day7 解题报告

    最后一天..有些感慨,这七天被虐的感动万分 第一题: 题目大意: 求出 n*i(i=1,2,3....n) mod p的逆元  n<p<=3000000 ,p是质数. 之前写过了,懒得再写 ...

  3. 常州培训 day6 解题报告

    第一题: 题目大意: 给出一个N*N的矩阵,矩阵元素均为0或1.定义矩阵权值为sum(F[i][j]*F[j][i]); 给出K个操作: 询问矩阵的权值mod 2. 将矩阵的某一行元素取反(0变成1, ...

  4. 常州培训 day4 解题报告

    第一题:(简单的模拟题) 给出一个N位二进制数,有‘+’, ‘-’, ‘*’, ‘/’ 操作,分别表示加1,减1,乘2,除以2,给出M个操作,求出M个操作后的二进制数.N,M<=5000000; ...

  5. 常州培训 day2 解题报告

    第一题: 题目大意: 给出一个M面的骰子,投N次,求最大期望值. 最大期望值的定义: 比如M=2,N=2, 那么 2次可以是 1,1,最大值为1: 1,2最大值为2: 2,1最大值为2: 2,2 最大 ...

  6. 常州培训 day1 解题报告

    第一题:(骗分容易,AC难.) 题目大意: 给出一个字符串,找出满足条件A的区间的个数.A:字符A,B,C的出现次数相同. 都出现0次也算,区间的长度可以是0(就是只有一个数).30% |S| ≤ 1 ...

  7. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  8. 二模13day1解题报告

    二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...

  9. BZOJ 1051 最受欢迎的牛 解题报告

    题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4438  Solved: 2353[S ...

随机推荐

  1. JavaWeb学习总结(三)—Servlet

    1. 什么是Servlet * Servlet是JavaWeb三大组件之一(Servlet.Filter.Listener) ,Servlet是用来处理客户端请求的动态资源,按照一种约定俗成的称呼习惯 ...

  2. cublas相关的知识

    下面链接给出了一个例子,怎么用cublas进行矩阵的运算提速,也说明了cublas的大致的使用方法. http://www.cnblogs.com/scut-fm/p/3756242.html cub ...

  3. 对SIGQUIT的实验 & Java dump

    写了一个Java程序,sleep 20秒. package com.company; public class Main { public static void main(String[] args ...

  4. iOS开发之 Xcode svn更新代码后,不能打开.xcodeproj,因为该项目文件不能被解析

    http://www.cfanz.cn/?c=article&a=read&id=41565 解决方法:    1.对.xcodeproj 文件右键,显示包内容 2.双击打开 proj ...

  5. spring data jpa 创建方法名进行简单查询

    版权声明:本文为博主原创文章,未经博主允许不得转载. spring data jpa 可以通过在接口中按照规定语法创建一个方法进行查询,spring data jpa 基础接口中,如CrudRepos ...

  6. 转:如何学习SQL(第一部分:SQL基础)

    转自:http://blog.163.com/mig3719@126/blog/static/285720652010950712271/ 1. 为什么学习SQL 自人类社会形成之日起,社会的运转就在 ...

  7. 原!!tomcat7.0 配置数据库连接池 SQLServer2000

    SQLServer2000所需的3个驱动jar包 msbase.jarmssqlserver.jarmsutil.jar 放入WEB-INF lib文件夹中 1.META-INF 创建一个contex ...

  8. php输出csv文件 简单实现

    <?php $list = array ( "George,John,Thomas,USA", "James,Adrew,Martin,USA", ); ...

  9. CSS3的颜色透明度 ajax请求时loading

    1.background-color:rgba(0,0,0,0.65)         这行代码让覆盖层变黑色,且有0.6的透明度 正常情况下遮盖层会把透明度遗传给弹出框(它的子元素),但是利用CSS ...

  10. Android Drawable资源

    Android实现应用d动画效果:比如App第一次打开的开始动画等 有两种:GIF动画和代码实现. 第一种:借助于Gif制作工具软件实现.一般是和第三方开源的GifView(https://githu ...