Summary

  今天的比赛打得还不错,第一题被同桌灌输的贪心,纯模拟洗脑了,然后steal的看了一下,发现怎么也对不了,一直在检查。最后10分钟才找出反例,推出动态规划方程,没有想到怎么转移,比赛就结束了。第二题题意理解错误了,但是还是拿到了充满希望的10分,第三题看到题目就直接上了线段树,我想没几个人能像我一样5分钟想完并打完这道题了。贪心一定要看到反例,不能盲目去做,否则浪费了时间,更让心情愈来愈不甘。

Problem

T1 解题

题目大意

  奶牛有P (P≤300) 道题目要做。他们的月薪是M (m≤1000) 元。
  每做一道题需要两笔付款,第一笔A_i(1≤A_i≤M)元在做题的那一个月初支付,第二笔B_i元(1≤B_i≤M)在做完后的下一个月初支付,牛没有任何存款意识
  题目必须按大概顺序解出。比如,题目3必须在解题目4之前或同一个月解出.

  找出牛们做完所有题目并支付完所有款项的最短月数。

想法

  刚开始比赛的是被被传销洗脑成贪心,结果一直在检查错误,殊不知,其实是动态规划,下面给一个贪心的反例

  7 3 
  2 5 
  2 5 
  5 2

  按照贪心,答案是6,其实最优应该是5

  我们有两种DP的方法,一种是被姚大神称为垃圾的,另一种也是被他称为垃圾的

(1) 动态规划

  我们设f[i,j]表示你解答前i个问题,最后一次连续解答了j个问题的最少月份数

  状态转移方程:

  1.在前i~j件事情付清尾款当月付j个项目的首款:d[i][j]=min(d[i-j][x]+1) 当sumb[j-1-x+1][j-1]+suma[j][i]≤pay}

  2.在前i~j件事情付清尾款后的一个月付j个项目的首款:d[i][j]=min(d[i-j][x]+2) 当 sumb[j-1-x+1][j-1]≤pay && suma[j][i]≤pay

  x表示上一个月同时付了x个problem的首款,suma,sumb分别是输入的前缀和

  假设我们现在已经完成了i-j个problem的解答(上一个月同时付了x个problem的首款),现在要付连续j个problem的首款。在本月结束时,我们要保证前i个程序都已经在解答中(或者已经解出)且本月进行了j个解答,那么截止本月初付过前x个problem的尾款后,总共是完成了i-j个problem;本月要完成的问题的编号是从i-j+1一直到i,那么我们就可以推出,上一个月要完成的问题的编号为i-j-x+1i-j。按照我们上面分析的,我们有两种选择: 
  1.同时付清上一组x个problem的尾款和这一组j个problem的首付; 
  2.在上一组x个problem的尾款付清后,进行j个problem的首付。 
设suma[i][j]、sumb[i][j]分别为首付前缀和尾款前缀和,分别表示第i个问题至第j个问题的首付之和、第i个问题至第j个问题的尾款之和。 
  无论如何,都需要保证这个月的结余必须为正数、且下一个月将要付清的本月尾款必须也不能超过工薪(如果大于了工薪,那么本月或下一个月奶牛就破产了=_+)。

(2) 动态规划

  我们设f[i,j]表示你在第i天,选了j个任务的最少欠费。枚举一个k,表示上个月选到最后的题目是多少

  方程为f[k,i]:=min(sum_b[j+1,i])当sum_a[j+1,i]+f[k-1,j]≤m

  sum_a[j,i]表示a[j]到a[i]的和,sum_b亦然

  sum_a[j+1,i]+f[k-1,j]≤m其实就是如果上个月选的题目的首付,之前的欠费,是否会使奶牛破产

  f[k,i]表示,当前的欠费,上一次选了多少题目的第二笔付款,欠费就是对应的sum_b

T2 JIH的玩偶(tree)

题目大意

  这张网以玩具厂为总代理(根),构成一颗树。每个节点都代表一个客户,且每个节点都有重要度ai。JIH想将这些客户划成若干类别,当然同一类的客户重要度相差太大总是不妥。所以JIH决定先进行市场调研。JIH会选择两个客户X,从X向根走一共k个节点进行调查。调查的结果是这条路径上重要程度相差最大的两个客户的差值是多少。因为特殊需要,要求重要度大的客户必须在重要度小的客户后面(顺序为X到根,若序列为递减,则输出0,详情见样例)。

想法

  树上倍增,第一次做

  其实就是类似于树上求RMQ,跟RMQ思想差不多,维护类似的,设f/gmax/gmin/gans[i,k]表示从i到i的第2k个祖先中,对应的编号,最大值,最小值,最大值减最小值。

  其实就是在是查询难一点而已

  对于每个询问,先找到最大的k使得g[x,k]在终点或终点以下,

  Ans=max(ans,gu[x,k],gb[x,k]-last);

  last:=min(last,gs[x,k]);//最小值

  x:=g[x,k];//当前点

  如此递归求解,直到x为终点

  画一下图就知道了,其实很简单的,不必多说

T3 进化序列(evolve)

题目大意

  一个基因Ax 可以进化为序列中在它之后的基因Ay。这个进化的复杂度,等于Ax | Ax+1...| Ay的值,其中| 是二进制或运算。
  Abathur 认为复杂度小于M 的进化的被认为是温和的。它希望计算出温和的进化的对数。

想法

  维护一个最大的k,表示当前a[i~k]的数or起来是符合题目条件的,且保证k>i

  其贡献值为k-i

  因为or运算是不会变小的,所以k是线性的,关键是快速判断a[i~k]的数是否符合题目条件

  可以用线段树,树状数组,RMQ

  不会的可以去学。

2017.07.11【NOIP提高组】模拟赛B组的更多相关文章

  1. 2017.1.16【初中部 】普及组模拟赛C组总结

    2017.1.16[初中部 ]普及组模拟赛C组 这次总结我赶时间,不写这么详细了. 话说这次比赛,我虽然翻了个大车,但一天之内AK,我感到很高兴 比赛 0+15+0+100=115 改题 AK 一.c ...

  2. 2018.12.30【NOIP提高组】模拟赛C组总结

    2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...

  3. ZROI提高组模拟赛05总结

    ZROI提高组模拟赛05总结 感觉是目前为止最简单的模拟赛了吧 但是依旧不尽人意... T1 有一半的人在30min前就A掉了 而我花了1h11min 就是一个简单的背包,我硬是转化了模型想了好久,生 ...

  4. NOIP2017提高组 模拟赛15(总结)

    NOIP2017提高组 模拟赛15(总结) 第一题 讨厌整除的小明 [题目描述] 小明作为一个数学迷,总会出于数字的一些性质喜欢上某个数字,然而当他喜欢数字k的时候,却十分讨厌那些能够整除k而比k小的 ...

  5. NOIP2017提高组 模拟赛13(总结)

    NOIP2017提高组 模拟赛13(总结) 第一题 函数 [题目描述] [输入格式] 三个整数. 1≤t<10^9+7,2≤l≤r≤5*10^6 [输出格式] 一个整数. [输出样例] 2 2 ...

  6. NOIP2017提高组模拟赛 10 (总结)

    NOIP2017提高组模拟赛 10 (总结) 第一题 机密信息 FJ有个很奇怪的习惯,他把他所有的机密信息都存放在一个叫机密盘的磁盘分区里,然而这个机密盘中却没有一个文件,那他是怎么存放信息呢?聪明的 ...

  7. NOIP2017提高组模拟赛 8(总结)

    NOIP2017提高组模拟赛 8(总结) 第一题 路径 在二维坐标平面里有N个整数点,Bessie要访问这N个点.刚开始Bessie在点(0,0)处. 每一步,Bessie可以走到上.下.左.右四个点 ...

  8. NOIP2017提高组模拟赛 9 (总结)

    NOIP2017提高组模拟赛 9 (总结) 第一题 星星 天空中有N(1≤N≤400)颗星,每颗星有一个唯一的坐标(x,y),(1≤x,y ≤N).请计算可以覆盖至少K(1≤K≤N)颗星的矩形的最小面 ...

  9. NOIP2017提高组模拟赛 7(总结)

    NOIP2017提高组模拟赛 7(总结) 第一题 斯诺克 考虑这样一个斯诺克球台,它只有四个袋口,分别在四个角上(如下图所示).我们把所有桌子边界上的整数点作为击球点(除了4个袋口),在每个击球点我们 ...

  10. NOIP2017提高组模拟赛5 (总结)

    NOIP2017提高组模拟赛5 (总结) 第一题 最远 奶牛们想建立一个新的城市.它们想建立一条长度为N (1 <= N <= 1,000,000)的 主线大街,然后建立K条 (2 < ...

随机推荐

  1. (Access denied for user 'root'@'slaver1' (using password: YES))

    1.问题描述,启动azkaban的时候报如下所示的错误.之前使用azkaban是root用户,今天使用hadoop用户进行配置和使用,报这个错,说是root连接mysql拒绝了. [hadoop@sl ...

  2. centos安装pg以及pg配置ssl

    https://blog.csdn.net/iteye_21194/article/details/82645389 https://blog.csdn.net/rudy5348/article/de ...

  3. thinkphp5分页传参

    $name = input('get.searchKey/s'); if($name != ""){ $this->assign('searchKey', $name); $ ...

  4. Spring MVC基础知识整理➣环境搭建和Hello World

    概述 Spring MVC属于SpringFrameWork的产品,采用Model-View-Controller进行数据交互,已经融合在Spring Web Flow里面.Spring 框架提供了构 ...

  5. Fib数列2 费马小定理+矩阵乘法

    题解: 费马小定理 a^(p-1)=1(mod p) 这里推广到矩阵也是成立的 所以我们可以对(2^n)%(p-1) 然后矩阵乘法维护就好了 模数较大使用快速乘

  6. lvs-ldirectord

    Ldirectord;用来对后端服务器的检测状态后并进行操作  安装在director上 对后端的rs服务器的 健康检查包括几方面: 1通过ping 若可以ping到服务器表示主机活着 2 对端口的检 ...

  7. sql对于字符串的处理

  8. 简单的使用Nginx框架搭建Web服务器~

    系统环境Debian 8,内核版本 一.首先来安装nginx服务程序:  1.安装nginx服务需要的相关程序(记得在root权限下操作下面的指令) aptitude install libpcre3 ...

  9. Java中CardLayout布局方式的应用

    import java.awt.CardLayout; import java.awt.Color; import java.awt.Container; import javax.swing.JBu ...

  10. CVE-2011-0762环境搭建与EXP利用

    CVE-2011-0762 vsftpd拒绝服务漏洞 危害:通过发送特殊构造的数据包.利用漏洞使应用程序崩溃 条件:连接上vsftpd才能发包 发现时间:2011-03-01 需求:找到EXP运行发送 ...