第一题:

题目描述:

有 n 个炸弹,有些炸弹牵了一根单向引线(也就是说引线只有在这一端能被炸弹点燃),只要引爆了这个炸弹,用引线连接的下一个炸弹也会爆炸。每个炸弹还有个得分,当这个炸弹被引爆后就能得到相应得分。现在要你引爆 k 个炸弹,使得得分最大。

解题过程:

1.一开始想到算出每个入度为0的点打掉之后的得分,然后做个堆,从大到小打,但是路径会有重叠的情况,也就是说打掉一条路径后可能会导致另外一条路径的权值发生变化。。

2.然后听到YYL大神一直在说2次BFS,就想到可以倒着来做。。从出度为0的点出发,然后计算路径的权值,然后按权值从大到小来打。

于是算法就出来了:

先做个拓扑序,然后dp计算从点i出发(沿反向边走)的最大权值(d[i]=max{ d[j] (j,i)∈E }+val[i])。然后排个序从大到小来打即可。

3.另外有个发现,STL的vector真的会慢很多,一开始用vector存边就TLE一个点,改成前向星就变成0.3s了。。果然偷懒是有代价的。。。以后还是尽量用前向星好了。

4.另外题目没说不会出现环,虽然数据里没有,所以还要缩点。


第二题:

题目大意:有 n 个石子围成一圈,每个石子都有一个权值 a[i]。给你一次且仅一次取石子的机会,取石子的块数不限,取完后统计得分。现在要使取出的石子得分最大。每个石子的得分计算公式是 a[i]*d,d 表示这个石子到两边被取了的石子的距离和。

解题过程:

1.这题坑。。其实只要取权值最大的两个石头就可以。证明见后面。。

2.我的做法是一开始取权值最大的时候,然后按权值从大到小来取,如果把某个石头插入可以得到更多的分数的话,就把它加入。(把它加入之后会使它两边的石头加的分数减少,只要比较是增加的多还是减少得多即可。)写了个线段树来动态维护某个石头两边的石头是谁。。 然后边上开始讨论为什么只要取权值最大的两个石头就可以。。我还不相信,就随机了几组数据,竟然拍出来都一样,顿时给傻了。。。数学直觉还是不够敏锐呵。

3.关于“只要取权值最大的两个石头就可以”的证明:

假设取石头的顺序是按权值从大到小来取的,如果一个石头的权值是mid,它左边的石头权值是L,右边的石头权值是R;

那么有 L,R>=mid.   再设它和左边的石头的距离为Ld,和右边的石头的距离为Rd,那么选了这个石头可以增加的分数为

(Ld+Rd)*mid。   而左边的石头减少的分数为(Rd+1)*L,右边的石头减少的分数为(Ld+1)*R。显然减少的多。


第三题:

题目大意:

有A,B,C三种物品N个(N<=100)排成一条线,从左往右拿,一开始拿10个(不足10个就全部拿完),然后可以选择ABC中的一种,比如选A,就把手上的A全部装箱,然后再拿相应数量的物品,使得手上始终有10个(或者已经拿完了)。求最少的装箱次数使得N个物品全部装箱。

解题过程:
1.时间不是很够,就直接写了个贪心,根据下面的原则:

A:如果流水线上已经没有某种物品了,且手中还有,那么就先给这种物品装箱。

B:如果没有出现情况A,那么就取手上最多的那种物品。

RP爆发,骗了90分说。。

2.标算是dp,下面copy题解了:

设 f[i][A][B][C]表示前 i-1 个产品在流水线上取出了,当前准备装箱的 10 个产品中,有 A 个 A 类产品,B 个 B 类产品,C 个 C 类产品,此时,我们继续装箱,至少需要多少次才能装箱完毕。
那么通过 f[i][A][B][C]可以正向推出 3 个决策

把A装箱:f[i+A][A’][B+B’][C+C’],其中A’,B’,C’表示流水线上第i到第i+A-1个产品中分别有多少个 A 类,B 类,C 类产品。

把B装箱:f[i+B][A+A’][B’][C+C’],其中A’,B’,C’表示流水线上第i到第i+B-1个产品中分别有多少个 A 类,B 类,C 类产品。

把C装箱:f[i+C][A+A’][B+B’][C’],其中A’,B’,C’表示流水线上第i到第i+C-1个产品中分别有多少个 A 类,B 类,C 类产品。

f[i][A][B][C]=min{f[i+A][A’][B+B’][C+C’],f[i+B][A+A’][B’][C+C’],f[i+C][A+A’][B+B’][C’]}+1;

质量很高的3道题。。回到了二模 (5) day2的感觉。。

二模 (8) day2的更多相关文章

  1. 二模13day1解题报告

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

  2. 二模 (9) day2

    第一题: 题目大意:求满足条件P的N位二进制数的个数.P:该二进制数有至少3个0或者3个1挨在一起.. N<=20000 解题过程: 1.一开始直接写了个dfs把表打了出来,不过没发现什么规律, ...

  3. 二模 (16) day1&day2

    第一题:题目大意: 数列a[0]=a[1]=1, a[n]=a[n-2]*a[n-1]*n,求a[n]的因子个数 mod 1000000007.  n<=1000000 解题过程: 1.递推式还 ...

  4. 二模 (15)day2

    第一题:Alice和Bob两个人正在玩一个游戏,游戏有很多种任务,难度为p的任务(p是正整数),有1/2p 的概率完成并得到2p−1分,如果完成不了,得0分.一开始每人都是0分,从Alice开始轮流做 ...

  5. 二模 (13)day2

    第一题: 题目大意: 给出一个N*M的矩阵,定义一条路径的权值为经过的所有点权值的最大值.求一条从第一行到第N行的路径,使得路径权值最小. N,M<=1000 矩阵内点的权值小于1000. 解题 ...

  6. 又是一个二模02,不过day2

    话说比较简单.除了第三题不会写平衡树啊你妹!!边做边写吧. 机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链接~机智的链 ...

  7. 二模Day2题解

    小明搬家 题目描述 小明要搬家了,大家都来帮忙. 小明现在住在第N楼,总共K个人要把X个大箱子搬上N楼. 最开始X个箱子都在1楼,但是经过一段混乱的搬运已经乱掉了.最后大家发现这样混乱地搬运过程效率太 ...

  8. 二模 (12)day2

    第一题: 题目大意: 有N颗糖,两个人轮流取,每次只能取质数颗,不能取的输.求先取者若必胜,最少需要多少步胜利.(N<=10000) 解题过程: 1.看到N的范围比较小,先打个素数表,然后dp即 ...

  9. 二模 (11) day2

    第一题: 题目大意: 有一本n个单词的字典,其中每个单词的长度不超过4且大于0.现在给你一篇文章,文章中没有分隔符,只有小写字母.现在需要你修改最少的字母,使文章(长度为m 是由字典中的单词构成. n ...

随机推荐

  1. Python学习(21)python操作mysql数据库_操作

    目录 数据库连接 创建数据库表 数据库插入操作 数据库查询操作 数据库更新操作 删除操作 执行事务 错误处理 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TEST. 在TEST数 ...

  2. JavaWeb学习总结(八)—Cookie

    1.什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie就是一个键和一个值构成的,随着服务器端的响应发送给客户端浏览器. ...

  3. Docker-创建支持ssh服务的镜像

    这里测试tomcat镜像安装ssh服务 1.启动镜像 [root@wls12c docker]$ docker run -d tomcat:centos 844bdde121a03174f3abd22 ...

  4. 如何查看与刷新DNS本地缓存

    如何查看与刷新DNS本地缓存 一.查看DNS本地缓存 在cmd窗口输入:ipconfig/displaydns 二.刷新DNS本地缓存 在cmd窗口输入:ipconfig/flushdns 之后输入: ...

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

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

  6. Fatal error compiling: 无效的目标发行版: 1.8 -> [Help 1] (zhuan)

    http://blog.csdn.net/z18137017273/article/details/53033613 ***************************************** ...

  7. android,JNI创建进程,使用fork()

    long add(long x,long y) { pid_t fpid; //fpid表示fork函数返回的值 int count=0; fpid=fork(); if (fpid < 0) ...

  8. iOS开发 判断用户是否开启了热点

    - (BOOL)achiveUserHotspotOpening { return [UIApplication sharedApplication].statusBarFrame.size.heig ...

  9. UAT 环境

    User Accept Environment 用户仿真测试环境

  10. xcode6 framework missing submodule xxx 警告

    xcode6 framework missing submodule xxx 警告 从xcode6开始,iOS可以直接创建生成framework了 如: 创建 framework 项目,TFKit.f ...