二模 (6) day1

第一题:

设 S(N)表示 N 的各位数字之和,如 S(484)=4+8+4=16,S(22)=2+2=4。如果一个正整数 x满足 S(x*x)=S(x)*S(x),我们称 x 为 Rabbit Number。比方说,22 就是一个 Rabbit Number,因为 S(484)=S(22)*S(22)。
现在,给出一个区间[L,R],求在该区间内的 Rabbit Number 的个数。  1≤L≤R≤10^9

解题过程:

1.首先爆搜把表给打了出来([1,10^9] 跑了5分钟)。。然后发现所有的rabbit number 各个数位不会超过3。。 不会严谨的证明,但是想想应该是对的。。

设数X某一位是 5 ,5*5=25, 那么数字5对(S(X*X))贡献值是2+5=7远小于25。

2.那么枚举9位的4进制数即可。。还有一个10位数10^9也是rabbit number。 时间复杂度(4^9)轻松过。

3.题解上说一个数是rabbit number 当且仅当平方的时候没有出现进位,不知道为什么。。。不过枚举的方法已经够快了。

初始得分100.



第二题:

题目大意:给出A,B, 两个人轮流,每次给A或者B 加上1,如果 A 大于给定的N就输了。。判断必胜者或者平局。1≤N≤10^8

解题过程:

1.首先容易看出这是个博弈问题,且状态集有限。

2.直接根据必胜态必败态来保存状态。F[i][j]表示当轮到某个人时,A=i,B=j,他是必胜还是必败。。 根据“一个状态是必败态当且仅当它的所有后继是必胜态”的原则转移状态。

3.细节处理:当B=1的时候,有可能两个人一直轮流给A+1,那么递归太多,系统栈就要爆掉了。所以加一个奇偶性剪枝,当B=1 && A*A>N的时候,肯定不会去+B,不然就输了。所以根据(N-A)的奇偶性就可以提前判断谁必胜了。。(不过极限数据还是会卡掉的,N=10^8,A=B=1)最多要递归10^4层。

4.最好其实还是用递推来写。不过记忆化也能AC。。没有极限数据。

初始得分0分。



第三题:

题目描述:在一条数轴上有 N 个点,分别是 1~N。一开始所有的点都被染成黑色。接着我们进行 M 次操作,第 i 次操作将[Li,Ri]这些点染成白色。请输出每个操作执行后剩余黑色点的个数。

解题过程:

1.裸的线段树额。不过要打个lazy_tag。

2.其实可以不用打lazy_tag,因为没有删除操作,那么如果当前区间已经被完全覆盖过了,那么就可以直接return了。速度比lazy_tag版本的快一半。。(好吧其实是懒,连懒人标记都懒得写了。)

时间: 2024-11-06 07:58:40

二模 (6) day1的相关文章

二模 (16) day1&day2

第一题:题目大意: 数列a[0]=a[1]=1, a[n]=a[n-2]*a[n-1]*n,求a[n]的因子个数 mod 1000000007.  n<=1000000 解题过程: 1.递推式还真没想出来,就记录每个a[i]的分解质因数的结果,然后转移质因子的个数.可以拿到30分. 2.思路:计算a[i]的时候,a[i]=a[i-2]*a[i-1]*i.  追踪这个i,它到a[i+1]里的时候是一个i,到a[i+2]里的时候是2个i,到a[i+3]里的时候是3个i,到a[i+4]里的时候是5个i

二模 (11) day1

第一题: 题目大意:用邻接矩阵给出一棵树(边权非负)上N个节点相互之间的最短路距离,求这棵树所有边权的和. 解题过程: 1.暂时还没想出来,待AC. 第二题: 题目大意:给出一些单词,然后建立Trie树,然后求出Trie树的节点个数. 解题过程: 1.这题学过Trie树的就直接无脑的建树就可以了.. 2.另外一种解法(待回校写出来验证):先添加一个空单词,然后给所有单词按字典序排序,从第二个单词(第一个是空)开始,看它和它前面的那个单词 的前面部分最多能有几个单词一样,也就是最长的公共前缀len

二模 (8) day2

第一题: 题目描述: 有 n 个炸弹,有些炸弹牵了一根单向引线(也就是说引线只有在这一端能被炸弹点燃),只要引爆了这个炸弹,用引线连接的下一个炸弹也会爆炸.每个炸弹还有个得分,当这个炸弹被引爆后就能得到相应得分.现在要你引爆 k 个炸弹,使得得分最大. 解题过程: 1.一开始想到算出每个入度为0的点打掉之后的得分,然后做个堆,从大到小打,但是路径会有重叠的情况,也就是说打掉一条路径后可能会导致另外一条路径的权值发生变化.. 2.然后听到YYL大神一直在说2次BFS,就想到可以倒着来做..从出度为

PMP备考资料 | 2019/2020年PMP全真模拟题 、一模、二模、三模试题 | PMP章节练习题 | 附带详细答案解析 --- 项目整合管理 等(PMBOK&#174;第六版)

PMP备考资料 | 2019/2020年PMP全真模拟题 .一模.二模.三模试题 | PMP章节练习题 | 附带详细答案解析 --- 项目整合管理 等(PMBOK®第六版),获取:http://t.cn/A6POWgMw 原文地址:https://www.cnblogs.com/chunlynn/p/12252179.html

二模 (12)day1

第一题: 题目大意: 有N颗糖,两个人轮流取,每次只能取质数颗,不能取的输.求先取者若必胜,最少需要多少步胜利.(N<=10000) 解题过程: 1.看到N的范围比较小,先打个素数表,然后dp即可. 2.F[i]表示i颗糖,先取的人若必胜,最少要多少步胜利,若必败,最多多少步失败.如果i减去一个质数可以达到一个必败态,那么必胜,反之必败. 初始得分80,数据坑爹,说小于10000的,却有20000的数据. 第二题: 题目大意: 有一种虫子,长度为X的时候,一天后会分裂成长度为X-1,X+1的2只

二模 (3) day1

第一题: 题目描述: 一个数列定义如下:f(1) = 1,f(2) = 1,f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.给定 A,B 和 n 的值,要求计算 f(n)的值.(1≤ A, B ≤1000, 1 ≤n≤100,000,000). 解题过程: 1.方法一:矩阵乘法. 2.方法二:hash.如果 Ak,Ak+1  确定了,那么Ak+2 就确定了,而Ak,Ak+1 的值都是小于7的,所以做个二维hash,记录Ak,Ak+1  第一次出现的位置,就可

二模 (12) day1

第一题: 题目大意: 求由N个1,M个0组成的排列的个数,要求在排列的任意一个前缀中,1的个数不少于0的个数.N,M<=5000. 解题过程: 1.看到N,M的范围就明确肯定不会是dp,因为起码要用二维表示状态,就算转移是O(1),也要5000*5000的时间,况且还要高精度,绝对超时. 2.于是想到可以根据Catalan数的推导方法来推出公式. ps:Catalan数的推导方法和一些应用可以参考我之前的博文中的问题二http://www.cnblogs.com/vb4896/p/3874622

二模 (7) day1

第一题: 题目大意: 给出数轴上N棵树的坐标和高度,如果两棵树之间的距离小于其中一颗树的高度,那么就有树会被挡住.因此要把一些树砍矮一点.求砍树的总高度最小值. N<=100000; 解题过程: 1.水题,直接按坐标升序排个序,然后看某棵树左右的树会不会被挡住,砍掉相应的高度即可.. 特殊考虑最左边的树和最右边的树. 初始得分100. 第二题: 求从给定的n个数中取一些数(必须取),使得他们的乘积 mod p = c 的方案数.n≤32,p≤10^9,c≤10^9,a[i]<p,p 是质数 解

二模 (01) day1

第一题: 题目大意:给出N(N<=50)个小于1000的正整数Ai,和一个正整数max,和一个整数cur,从前往后依次对每个Ai,可以让cur+Ai 或者 cur-Ai,但是结果不能大于max,也不能小于0.求最终的cur的最大值. 解题过程: 1.一开始直接写了个爆搜+剪枝(ans=max或者ans+sum[i]<=ans),除了N=50的一些恶心数据都能过. 2.然后想到一个更强力的剪枝,就是当状态 (step,cur)之前已经搜索到过了,就跳过.然后就AC了. 3.其实第2条中的实质就是

二模 (4) day1

第一题: 题目描述: 有一个无穷序列如下:110100100010000100000…请你找出这个无穷序列中指定位置上的数字 解题过程: 1.考虑到1的数目比0少的多,就从1的位置的规律开始分析.前几项1的位置是 1,2,4,7,11,16. 可以发现 An=An-1 + n-1 . 用点数列的知识可以求出通项公式. An=n*(n-1)/2 + 1 . 如果位置k是1,那么有  k=x*(x-1)/2 +1 .   就变成一个解方程的题,只要判断根是不是正整数就好. 初始得分100: 第二题: