2017.07.07【NOIP提高组】模拟赛B组

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)是什么,用二进制表示。

  我们用当前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

  ①不选

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

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

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

  ②选

  如果选,就要满足num+h[i]+E[i]是大于mid的

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

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

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

T3 迷宫花园(maze) 

题目大意

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

想法

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

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

  这里总结出一点:

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

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

时间: 2024-11-11 23:28:38

2017.07.07【NOIP提高组】模拟赛B组的相关文章

2017.11.25【NOIP提高组】模拟赛A组

2017.11.25[NOIP提高组]模拟赛A组 T1 3467. [NOIP2013模拟联考7]最长上升子序列(lis) T2 3468. [NOIP2013模拟联考7]OSU!(osu) T3 3472. [NOIP2013模拟联考8]匹配(match) T1 有转移方程f[i]=max{f[j]}+1,a[j]<a[i] 可以用线段树+离散化维护这个方程,因为涉及以往状态可以用主席树维护 打太丑爆空间了 Code 1 #include<cstdio> 2 #include<c

2017.12.02【NOIP提高组】模拟赛A组

2017.12.02[NOIP提高组]模拟赛A组 T1 3555[GDKOI2014模拟]树的直径 T2 3542[清华集训2014]冒泡排序 T3 3486[NOIP2013模拟联考10]道路改建(rebuild) T1 树直径的一个性质,两棵树合并,形成新的树的直径的两个端点为原树中的四个端点之二. 可以用反证法证明.用此性质本题就变成了lca裸题了 Code #include<cstdio> #include<cstring> #include<cmath> #i

2017.12.09【NOIP提高组】模拟赛A组

2017.12.09[NOIP提高组]模拟赛A组 T1 3489. [NOIP2013模拟联考11]数列的GCD(gcd) T2 3500.[NOIP2013模拟联考15]物语(monogatari) T3 3501.[NOIP2013模拟联考15]消息传递(news) 吐槽:这次的题好像有点水啊,但最简单的第二题都给打挂啦!!(数组开小了) T1 本套题中最难的题.考虑dp 设f[i]是b[1],b[2]...b[N]的最大公约数的数目,g[i]是b[1],b[2]...b[N]的公约数的数目

ZROI提高组模拟赛05总结

ZROI提高组模拟赛05总结 感觉是目前为止最简单的模拟赛了吧 但是依旧不尽人意... T1 有一半的人在30min前就A掉了 而我花了1h11min 就是一个简单的背包,我硬是转化了模型想了好久,生生把一个弱智题变成了一个不可做题 最后竟然在转化两次后的模型上以为自己做出来了 这个题比别人多花的1h左右的时间,而且只得到了30分,成为了这场比赛失败的关键因素 T2 依旧是一道简单题 有人20min之内就A掉了 感觉放在CF里最多算一道Div2 D,还是简单的那种 可是我又一次想复杂了 大意就是

计蒜客普及组模拟赛

今天没事闲的看到计蒜客有个普及组模拟赛,就当练了练手去打了,成绩低的可怜...400分崩成280分AK梦想化作泡影 第一题 同学的爱好 链接:https://nanti.jisuanke.com/t/17291 小学应用题难度?大概画个图就能懂,把每个部分都标上号,算出a,b,c,d,e,f的部分,进行运算就行了. 不多解释了,直接上代码 #include<iostream> #include<cstdio> #include<algorithm> #include&l

2018 蓝桥杯省赛 B 组模拟赛(一)

2018 蓝桥杯省赛 B 组模拟赛(一) A.今天蒜头君带着花椰妹和朋友们一起聚会,当朋友们问起年龄的时候,蒜头君打了一个哑谜(毕竟年龄是女孩子的隐私)说:“我的年龄是花椰妹年龄个位数和十位数之和的二倍”. 花椰妹看大家一脸懵逼,就知道大家也不知道蒜头君的年龄,便连忙补充道:“我的年龄是蒜头君个位数和十位数之和的三倍”. 请你计算:蒜头君和花椰妹年龄一共有多少种可能情况? 提醒:两位的年龄都是在 [10,100)[10,100) 这个区间内. 题解: 暴力枚举 answer: 1 代码如下: #

ZROI 普及组模拟赛02总结

ZROI 普及组模拟赛02总结 先放[网址][http://zhengruioi.com/contest/96] 可能是有一段时间没有打这种正式的比赛了,今天打的很奇怪... T1 模拟水题 既然是普及组模拟赛T1还是比较良心的 20分钟就过掉了 T2 <论不仔细观察题目导致的惨案> 没有发现莫尔斯电码非常的全 所以应该枚举哪些不行,而不是枚举26个字母 但是根据计算\(2*26*1e6\)也能跑过去啊 不知道为什么就是超时了... 最可笑的是还卡了20min的常数,还自己造了几组1e6的数据

2017.07.11【NOIP提高组】模拟赛B组

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

2017.07.14【NOIP提高组】模拟赛B组

Summary 这次比赛因为迟到了,少了很多时间,也受到了相应的惩罚,这是好的,是个标记牌,警醒着我.这次比赛的题目很难,也就是说,大家的得分都很低,总的来说,收获还是很大的,因为有非常多的技巧被掌握了.我对细节的处理不足,这几天的比赛都是这样,每天弄到很晚结果就是一个小小的细节. Problem T1 最大公约数 题目大意 让你求

2017.07.10【NOIP提高组】模拟赛B组

Summary 今天题目总体不是难,但是分数很低,只有100+10+30,其中第二题还是以前做过的,第一题设计数论,而且以前做过同一个类型的题目,比赛推了很长时间.第三题时以前做过的原题,是贪心没学好啊!方法也不够周到,数据看得不仔细. Problem T1 可见点数 题目大意 我更改了一下,但是求的东西是一样的.已知有n*n个人在一个n*n网络的格点上,有个人在(1,1)的位置,问他能看到多少个人的脸,不包括自己. 想法 已知一个定理,说得笼统一点,(x,y)和(x+a,y+b)点连一条边,其