第一题:

给出数轴正半轴上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. 巧妙的实现 CSS 斜线(炫酷的小效果)

      开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果 ...

  2. Android中xml设置Animation动画效果详解

    在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation ...

  3. Android ViewFlipper的使用分析

    [ViewFlipper]——基础 1.ViewPager 和ViewFliping的区别: 最显著的区别就是ViewPager在滑动的时候内部的View默认就能够跟随手指滑动,而 ViewFlipi ...

  4. Htmlt_Div+Css简介

    DIV+CSS是网站标准(或称“WEB标准”)中常用术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定位技术,而是采用DIV ...

  5. springside3.1.8打包

    地址寻找 https://sourceforge.net/ https://sourceforge.net/projects/springside/files/SpringSide%203.0/3.3 ...

  6. iOS设置app应用程序文件共享

    1.iOSapp应用程序文件共享 当我们用itnues连接到设备时,在应用程序栏目下面,文件共享下,点击 对应的程序,即可以在程序右边栏目里面看到应用程序共享的数据, 此时,我们可以通过右下角的 添加 ...

  7. jq layer插件使用

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. 关于使用dotnetbar开发winform程序在用户电脑上部署时问题

    1.首先要安装两个软件

  9. A New Tetris Game

    时间限制(普通/Java):1000MS/10000MS     运行内存限制:65536KByte 总提交: 40            测试通过: 12 描述 曾经,Lele和他姐姐最喜欢,玩得最 ...

  10. EasyUI combotree 使用技巧

    $('#areaName').combotree({ url: '../Ajax/Common.ashx?Method=GetCombotreeData', multiple: true, check ...