【Codeforces 762A】 k-th divisor】的更多相关文章

time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output You are given two integers n and k. Find k-th smallest divisor of n, or report that it doesn't exist. Divisor of n is any such natural number, t…
[题目链接] 点击打开链接 [算法] 我们知道,一个数的因子是成对出现的,一半小于等于sqrt(N),一半大于sqrt(N),因此,我们可以从 2..sqrt(N)枚举因子 [代码] #include<bits/stdc++.h> using namespace std; #define MAX 3000000 typedef long long ll; ll i,l,n,k; ll a[MAX+]; template <typename T> inline void read(T…
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=2000),问满足[数列长度是k && 数列中每一个元素arr[i]在1~n之间 && 数列中元素可以重复]的数列有多少个?结果对10^9+7取余 解题思路:dp[i][j]表示长度是j,最后一位是i的种数 if(kk%i==0) dp[kk][j+1]+=dp[i][j] #inc…
time limit per test2 seconds memory limit per test512 megabytes inputstandard input outputstandard output Bash has set out on a journey to become the greatest Pokemon master. To get his first Pokemon, he went to Professor Zulu's Lab. Since Bash is Pr…
time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard output PolandBall has such a convex polygon with n veritces that no three of its diagonals intersect at the same point. PolandBall decided to improve i…
[题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q个操作; 有以下两种类型 ①将第i个连通块里面灯取反 ②询问你(x1,y1)(x2,y2)这个矩形区域内灯的权值的和; [题解] 要用到二维的树状数组; 取反操作只要O(1)就能完成; 即先不管它是什么,取反就是了; 然后在询问的时候,直接用二维树状数组累加; 这里的累加可能是减也可能是加; 也可能…
[题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一个; 即b->a或是a>z; 然后使得剩下的字符串的字典序最小; [题解] 优先更改前面的字符; 所以遇到第一个不是a的字符->改! 从那个字符开始只要不是a就一直改就好; hack点: 有说 exactly once->也就是说 像 aaa 不能全都不改; 把最后那个a改成z(损失最…
[题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案是唯一的; 则输出那个方案,否则,输出不唯一; [题解] 记录每个点的度; 每个点的度,为这个点4个方向上空格的个数; 优先处理度数为1的点; 这些点的摆放方式肯定是唯一的; 摆完这些点(两个之后),与之相连的点的度数都减1: 看看有没有新的度数为1的点; 很像拓扑排序对吧. 最后看看占据的点是不是…
[题目链接]:http://codeforces.com/problemset/problem/797/E [题意] 给你一个n个元素的数组; 每个元素都在1..n之间; 然后给你q个询问; 每个询问由p和k构成; 会对p进行 p=p+a[p]+k操作若干次; 你要输出p第一次大于n之后操作了多少次; [题解] 部分DP; 这里对于k>400的询问; 我们直接暴力求解; 因为这时暴力所花费的时间已经可以接受了; 而对于剩余的k<=400的询问; 我们写一个记忆化搜索来求解; 很棒的思路吧 [N…
[题目链接]:http://codeforces.com/contest/801/problem/A [题意] 一个字符串只由VK组成; 让你修改一个字符; 使得剩下的字符串里面子串VK的个数最大; [题解] 枚举修改哪一个字符; 然后获取剩余的字符里面VK的数的个数; 取MAX就好; [Number Of WA] 0 [完整代码] #include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #defin…
[题目链接]:http://codeforces.com/contest/508/problem/C [题意] 每秒钟可以点一根蜡烛; 这根蜡烛会燃烧t秒; 然后会有m只鬼来拜访你; 要求在鬼来拜访你的时候,至少有r根蜡烛是处于燃烧状态的; 然后你能在任意一个时刻点蜡烛; 问你最少需要点多少根蜡烛; [题解] 对每只鬼进行考虑; 则必须有r跟蜡烛能够"控制它" 在什么地方控制呢? 一定是离它最近的地方; 因为这样; 能够让这根蜡烛的使用范围达到最大; 尽可能地覆盖到更多的鬼; 这样那些…
[题目链接]:http://codeforces.com/contest/508/problem/A [题意] 让你在一个n*m的方格上给方格染色; 顺序给出染色的k个格子 如果在某一时刻 有一个2*2长方形; 输出是第几个格子; [题解] 在染色的时候; 判断一下这是4个方格中的哪一个 左上角or右上角or左下角or右下角 然后看看另外3个格子有没有被染色; 有的话就结束; [Number Of WA] 0 [完整代码] #include <bits/stdc++.h> using name…
[题目链接]:http://codeforces.com/contest/509/problem/B [题意] 给n鹅卵石染色; 有k种颜色可供选择; 问你有没有染色方案; 使得各个堆的鹅卵石里面,第i颜色的鹅卵石的数目的差的绝对值都不大于1 [题解] 把所有的堆 一开始按照石头的数目升序排一遍; 然后顺序处理 对于第一堆石头 1..k,1..k一直重复直到满a[1]个石头; 这以后 每一行直接复制前一行的; 然后开始给多出来的石头染色; 就给他们染成能够染的石子就好; 一开始1..k都还能再染…
[题目链接]:http://codeforces.com/contest/755/problem/F [题意] n个人; 计划是每个人都拿一个礼物来送给一个除了自己之外的人; 且如果一个人没有送出礼物,那么它和它送礼物的对象都得不到礼物; 但是已经知道有k个人会忘记带礼物来; 问最少有几个人收不到礼物,最多有多少个人收不到礼物 [题解] ① 对于最多的情况; 最后会形成多个环; 每个环隔一个人选一个人忘记带礼物;这样一个长度为len的环只要len/2个人没带礼物就能够整个环的人都收不到礼物了;…
[题目链接]:http://codeforces.com/contest/755/problem/E [题意] 给你n个节点; 让你在这些点之间接若干条边;构成原图(要求n个节点都联通) 然后分别求出原图和补图(补图也要求联通)的直径r1和r2 然后要求min(r1,r2)==k; 让你求出符合要求的原图的m条边; [题解] 有个结论; 如果图G的直径超过了3,则它的补图的直径会比3小; 且k=1的时候,是无解的; 因为k=1就说明一张图上只有一条边; n=2的时候,另外一张图上没边,最小值为0…
[题目链接]:http://codeforces.com/contest/510/problem/C [题意] 给你n个字符串; 问你要怎么修改字典序; (即原本是a,b,c..z现在你可以修改每个字母在字典序中的位置了); 才能使得这n个字符串是字典序升序的; [题解] 对于第i个字符串; 让他和第i+1..n个字符串比较->j; 找到第一个不同的位置pos; 然后 必然是要 s[i][pos]< s[j][pos]的: 拓扑排序! 即s[i][pos]建一条边指向s[j][pos] 然后做…
[题目链接]:http://codeforces.com/problemset/problem/757/D [题意] 给你一个01串; 让你分割这个01串; 要求2切..n+1切; 对于每一种切法 所切成的各个部分的二进制,转成十进制之后;假设里面最大的数为m; 问1..m这些数字都出现的切法有多少种; [题解] 可以算一下对于1个75位的数字来说; 最多只可能连续出现 从 1..20 你可以算一下1..20这20个数字的二进制形式恰好占74个; 不能再多一个数字了,因为21的二进制形式的长度肯…
[题目链接]:http://codeforces.com/contest/758/problem/D [题意] 给你一个n进制的数k; 问你它可能的最小的十进制数是多少; [题解] 从右往左; 获取数字; 如果这个数字小于n就一直往左扩大; 尽量大; 这样把尽可能多的数字放在权值的低位; 这样n进制数的位就会尽可能地少; 十进制数也就尽可能地小了; 但是有前导0的情况; 这个判断前导0有点麻烦; 即 10011 你不好获取 0011这个数字的信息: 即是不是到了从右往左数第二个0的时候,就该停下…
[题目链接]:http://codeforces.com/problemset/problem/514/E [题意] 无限节点的树; 每个节点都有n个儿子节点; 且每个节点与其第i个节点的距离都是ai; 问你与根节点的距离不超过x的节点个数; [题解] 考虑一个非常不靠谱的DP方程 f[i]=∑(f[i-j]*cnt[j]); 这里f[i]表示与根节点的距离为i的节点个数; cnt[j]表示ai的值中为j的ai的个数;(即与儿子节点距离为j的边的个数); 因为ai最大值为100,所以j∈[1..…
[题目链接]:http://codeforces.com/contest/514/problem/D [题意] 给你每个机器人的m种属性p1..pm 然后r2d2每次可以选择m种属性中的一种,进行一次攻击; 攻击过后每个机器人的该种属性都减少1; 可以最多攻击k次; 机器人只有m种属性都变为0之后才死掉; 然后问你如何分配这k次攻击,每次攻击时选择的属性; 使得连续的死掉的机器人的区间长度最长; [题解] 对于选择的一个区间[l..r] 如果要使得这个区间的机器人全都死掉; 则需要攻击的次数就为…
[题目链接]:http://codeforces.com/contest/796/problem/D [题意] 在一棵树上,保证每个点在距离d之内都有一个警察局; 让你删掉最多的边,使得剩下的森林仍然满足上述约束; [题解] 从每个警察局开始进行bfs; 这样每个路线第一次到达的点肯定是最短路; 所以bfs的时候遇到没访问过的点,就记录它被访问,即它被这个状态一开始的警察局所管辖(控制); 则可以想象每个警察局都同时往外扩张; 则每个警察局管的范围就确定是那些了; 则那些点肯定是到那个管辖它的警…
[题目链接]:http://codeforces.com/contest/796/problem/B [题意] 一开始骨头在1号位置; 然后有m个洞,给出洞的下标; 然后有k个交换操作; 如果骨头到洞里了,就不能再交换了; 骨头就一直待在洞的下标位置; 问你k个操作后骨头在哪里 [题解] 用个一维数组模拟; 1代表骨头,0代表不是骨头; 然后开个map记录哪里是洞; 如果骨头到洞里面去了;就结束; 否则输出k次操作后1的下标就好了 [Number Of WA] 0 [完整代码] #include…
[题目链接]:http://codeforces.com/contest/796/problem/A [题意] 让你选一个最靠近女票的,且能买的房子; 输出你和你女票的距离; [题解] 枚举 [Number Of WA] 0 [完整代码] #include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long…
[题目链接]:http://codeforces.com/contest/768/problem/D [题意] 你有一个水晶; 它每天都会产生一个球??(球有k种) 然后每种球产生的可能性是相同的->1/k 然后给你q个询问; 每个询问pi; 问你最少需要多少天; 每种球至少有一个的概率大于等于pi/2000; 这里pi<=1000 [题解] 动态规划; 考虑按天划分状态; 设f[i][j]表示第i天一共有j种球的概率; 则第i天考虑两种情况 1.拿到了一个新的球,从原来的j-1种球变成了j种…
[题目链接]:http://codeforces.com/contest/776/problem/E [题意] f(n)是小于n的不同整数对(x,y)这里x+y==n且gcd(x,y)==1的个数; g(n)是n的所有因子的f值的和; 然后让你求一个递推式 [题解] x的欧拉函数为phi(x) 则f(n)=phi(n); 欧拉函数的定义是,小于这个值且与这个值互质的数的个数->phi(n); 可以证明每一个与n互质的数x对应了一个整数对(x,y)且x+y==n且gcd(x,y)==1; 然后有个…
[题目链接]:http://codeforces.com/problemset/problem/767/D [题意] 每个牛奶都有最晚可以喝的时间; 每天喝K瓶牛奶; 你有n瓶牛奶->已知每个牛奶的期限; 然后商店里面有m瓶牛奶:->已知每个牛奶的期限; 然后问你最多能再从商店里买几瓶牛奶; 使得你买的这些牛奶都不会因为过期而被扔掉; 或者你原本的n瓶牛奶都不能做到则输出-1 [题解] 首先肯定喝的顺序是先喝马上就要过期的 ->所以原有的n瓶升序排; 然后买的话,肯定是买晚过期的; 所以…
[题目链接]:http://codeforces.com/problemset/problem/785/E [题意] 给你一个初始序列1..n顺序 然后每次让你交换任意两个位置上面的数字; 让你实时输出q个操作,每个操作过后整个序列逆序对的个数; [题解] 分块法; 分成根号n个块. 每个块按照数字升序排; 然后再用一个a数组具体记录每个位置上的数字; 找逆序对的方式如下: 对于交换l,r 查找l+1..r-1当中比a[l]小的数字,比a[l]大的数字; 查找l+1..r-1当中比a[r]小-比…
[题目链接]:http://codeforces.com/contest/793/problem/D [题意] 给你n个点, 这n个点 从左到右1..n依序排; 然后给你m条有向边; 然后让你从中选出k个点. 这k个点形成的一条路径; 且在路径中,一个被访问过的点不会经过两次或以上; 比如从1->3(1和3被访问过) 然后再从3->4(1,3,4都被访问过) 再从4->2(这时会又经过3号节点,而3号节点之前被访问过,所以不合法) 这就不是合法的; [题解] 每次走完之后都有一个接下来能…
[题目链接]:http://codeforces.com/contest/793/problem/A [题意] 每次你可以对1..n中的任意一个数字进行减少k操作; 问你最后可不可能所有的数字都变成一样的; 可能的话输出最小操作次数; [题解] a[x1]-k*x1=t a[x2]-k*x2=t x1是对a[x1]的操作次数..以此类推 则有 a[x1]-a[x2]=k*(x2-x1) 可知a[x1]-a[x2]必然为k的倍数否则无解; 则升序排; 相邻两个数字的差必然要求为k的倍数; 即%k=…
[题目链接]:http://codeforces.com/contest/799/problem/C [题意] 你有两种不同的货币; 余额分别为c和d 然后有n种商品; 每种商品只能由两种货币中的某一种购买; (且每件商品都有它的美丽值和对应货币的花费) 让你用这两种货币的余额严格买两件商品; 要求让美丽值最大; 输出最大的美丽值; [题解] 可以预处理出 pre1[N][2] 表示花费N个金币,能够获得的最大美丽值和次小美丽值; pre2[N][2]-.. 然后对以下3种情况枚举其中的一个;…