第一题:

给出数轴正半轴上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. 11 Indexes

    本章提要--------------------------------------索引会影响 DML 与 select 操作, 要找到平衡点最好从一开始就创建好索引索引概述B*索引其他一些索引索引使 ...

  2. 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习

    下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...

  3. Android开源库--Gson谷歌官方json解析库

    官方文档地址:http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html 官方网站:http://code.go ...

  4. Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果

      Android 高手进阶(21)  版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处:http://blog.csdn.net/xiaanming/article/detail ...

  5. 华为 1.static有什么用途?(请至少说明两种)

    1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问 ...

  6. html frames

    http://blog.sina.com.cn/s/blog_67697189010116o0.html *********************************************** ...

  7. 使用 Velocity 模板引擎快速生成代码(zhuan)

    http://www.ibm.com/developerworks/cn/java/j-lo-velocity1/ ****************************************** ...

  8. nginx安装笔记

    双节点安装 1 节点一 1.1 目录 /usr/local cd /usr/local 1.2 openssl rpm -ql openssl /usr/share/doc/openssl-1.0.0 ...

  9. angularJS中ng-if的用法

    <!DOCTYPE html> <html ng-app> <head> <meta charset="utf-8"> <ti ...

  10. 黑盒测试在App自动化测试中的应用

    黑盒测试在App自动化测试中的应用 不废话,直接来. 先说说什么是黑盒测试 黑盒测试,这里就说的是app功能测试,之前看到一个介绍说,就是在测试中,把测试对象看作一个黑盒子.利用黑盒测试法进行动态测试 ...