Summary

  因为某种无法抗拒的原因,今天没有打比赛,所以也就没有那种心态。今天的题目有状压DP和二分,这套题不难也不简单,适中,适合我这种渣渣来做。在改题时,发现了许多问题。我连欧拉函数的计算都记错了,二分也忘记了。也总结出了一些经验,例如,在二分小数时,一定要比题目要求多加两位小数,这样也就避免了许多因为浮点数而造成的错误。长话短说,先看题。

Problem

T1 原根(math)

题目大意

  给出两个定义,对于不超过m的正整数a,Gcd(m,a)=1,定义Ordm(a)为ad≡1(mod m)的最小正整数解。给出m,问有多少个a满足Ordm(a)=φ(m)

想法

  这是一道数学题,当然就要想一些数学的方法来优化了

  根据欧拉公式,若Gcd(a,m)=1,那么aφ(m)≡1(mod m),显然春天不远了d是不会大于φ(m)的。

  然后,我们就按照题目说的做,喜欢的人可以加上快速幂优化。

  其中,φ(m)是读phi,是有计算公式的!可以百度一下,你就会知道了

T2 道路覆盖(cover)

题目大意  

  ar把一段凹凸不平的路分成了高度不同的N段,并用H[i]表示第i段高度。现在Tar一共有n种泥土可用,它们都能覆盖给定的连续的k个部分。对于第i种泥土,它的价格为C[i],可以使得区间[i,min(n,i+k-1)] 的路段的高度增加E[i]。Tar要设定一种泥土使用计划,使得使用若干泥土后,这条路最低的高度尽量高,并且这个计划必须满足以下两点要求:

  (1)每种泥土只能使用一次。
  (2)泥土使用成本必须小于等于M。
  请求出这个最低的高度最高是多少

想法

  从“最低的高度最高”就可以看出,这道题是用二分的,正解就是二分答案。

  从而,我们就把这道题目变为一道判定性的问题,给出一个mid,问你是否符合上面的题意。

  普通方法使用递归判断可行性

  既然可以用递归,那么显然可以用动态规划。

  我们设F[i,s]表示你当前想选第i种泥土,前面k种的状态(包括i)是什么,用二进制表示,,0表示在那个位置没用了泥土,1表示用了。(用没用表示从他开始往后铺,专属于他的泥土)一定要看下面第二个图

  我们用当前F[i,s]去更新F[i+1,s1]

  关键是我们怎么转移。

  对于每一种泥土,只有选和不选两种状态,那么我们只要考虑这两种情况就可以了

  在此之前,我们先看一个东西

  

  注意,我们这里是用i,更新i+1

  读图可以发现,对i+1有影响的只有从i前k-1个(包括i)

  可以发现,只有i包括i的前k-1个对i+1是有影响的。

  因为你选到i时,状态是s,那么,如果从i更新到i+1,状态就是s去掉最后一位,也就是(s>>1),其实就是s/2

  我们统计s状态中,有哪个地方是选了泥土的,然后记录一下,他们一共会让i+1这个位置的土地高多少,设这个数为num,要多看图,多写草稿

  为什么呢,因为前面的加了对应的e数组的某一个值,又因为它会影响到当前这个位置,看上图,所以,我们要看看,他们究竟影响到i+1这个位置增加多少值,所以我们要提前记录下来

  其中S是枚举的!枚举的!枚举的!

  

  ①不选

  如果不选,那么num+h[i]必定是大于等于mid的,这样才符合题目要求,如果不懂反复读上面的那句话,看看我画出来精美的图,就知道了。不懂都会懂

  满足的上面的情况,我们就可以转移了

  f[i+1,s>>1]:=min(f[i+1,s>>1],f[i,s]) 

  ②选

  如果选,就要满足num+h[i]+E[i]是大于等于mid的,同理也是上面所说

  那么当前的位置s状态中i+1的位置应该是1,所以,我们就是要更新新的s

  f[i+1,s>>1 or 1 shl (k-1)]:=min(f[i+1,s>>1 or 1 shl (k-1)],f[i,j]+c[i]);

  最后答案的判断就是判断有没有一个被更改过值得f[n,i](i是状态)是小于等于m的,因为在前面的操作中,都保证了更新过的f数组是符合题目要求的

  这道题充分的体现了动态规划的屌

T3 迷宫花园(maze) 

题目大意

  知道左右走花费1时间,上下走花费v时间,v是未知的,给出一个图(有障碍),再给出从起点到终点最少花费的时间,求v的值。

想法

  显然也是用二分,二分v的值

  然后用得出来的v去跑一次SPFA或者DIS,看看最短时间是否为题目给定的。

  这里总结出一点:

    要是对于小数二分,一定要多二分几位。

  有的人只要跑一次bfs,我觉得很神奇,但是也弄不清原因。

2017.07.07【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. 有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'}

    题目:有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'} 第一种方法: d = {'a': 1, 'b': 2}d = {value: k ...

  2. 改变input type="file" 文字、样式等

    <div class="tac"> <input type="file" id="browsefile" class=&q ...

  3. 一键安装基于dns的高可用k8s集群(3节点,etcd https)

    在公司,使用dns切换,可能会比keepalived+haproxy,更精简的易维护. 毕竟,高可用只是偶尔切换,不是时时切换. 且dns解析在自己可控时,更不会影响k8s线上使用了. (部分代码,由 ...

  4. noip宝藏

    题解: 我觉得状压比搜索不知道简单到哪里去了.. 为了练习搜索...想了一下这题的搜索.. 然后会发现想想就很容易想到dp.. 最后的搜索大概是这样的 我们会发现有一类搜索都是这样 你会重复(可能是指 ...

  5. ThemeableBrowser在IOS中按钮图片的使用

    1. 首先确保图片的名称为 ***@1x.png, ***@2x.png 或 ***@3x.png iPhone —— iPhone3GS ***@1x.png iPhone —— iPhone6 * ...

  6. openstack2 kvm

    一.kvm安装 1.首先虚拟机的话需要打开虚拟化功能,服务器的话需要在bios中设置 2.安装kvm用户态管理工具qemu-kvm 和 用来管理kvm虚拟机的插件libvirt和创建虚拟机用的virt ...

  7. python对象、引用

    1.python对象 python中 所有的python对象都有3个特征: 身份,类型和值 身份: 每个对象有一个唯一的身份标识自己,这个值可以被认为是该对象内存地址.id()查看. 类型 type( ...

  8. BZOJ4589 Hard Nim FWT 快速幂 博弈

    原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ4589.html 题目传送门 - BZOJ4589 题意 有 $n$ 堆石子,每一堆石子的取值为 $2$ ...

  9. HDU1507 Uncle Tom's Inherited Land* 二分图匹配 匈牙利算法 黑白染色

    原文链接http://www.cnblogs.com/zhouzhendong/p/8254062.html 题目传送门 - HDU1507 题意概括 有一个n*m的棋盘,有些点是废的. 现在让你用1 ...

  10. Collection接口的常用方法

    [添加功能] boolean add(Object obj); //添加一个元素. boolean addAll(Collection c); //添加一个集合的元素(在后面追加). [删除功能] v ...