03 2018 档案

摘要:https://www.nowcoder.com/acm/contest/82/A 首先这道题是求1~n的最大约数个数的,首先想到使用唯一分解定理,约数个数=(1+e1)*(1+e2)..(1+en),由公式可知取质数时,后面的质数个数应小于等于前面的(也并不是后面的越小越好,只是不应该大于前面的, 阅读全文
posted @ 2018-03-31 13:29 MekakuCityActor 阅读(171) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=6188 输入一个n,接下来有n个数,让你求出能组成最多的对子或者顺子的和。 对子: (2,2),顺子: (1,2,3)。 贪心策略:2种方式:1)先取顺子,再取对子:具体操作起来是取顺子需要判断是否能取(即如果取对 阅读全文
posted @ 2018-03-29 22:20 MekakuCityActor 阅读(242) 评论(0) 推荐(0)
摘要:1 void getprime(int siz){ 2 memset(isprime,1,sizeof(isprime)); 3 isprime[1]=0; 4 for(int i=2;i<=siz;i++){ 5 if(isprime[i])prime[++tot]=i; 6 for(int j= 阅读全文
posted @ 2018-03-28 16:19 MekakuCityActor 阅读(178) 评论(0) 推荐(1)
摘要:在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1,φ(8)=4(1,3,5,7)) 通式:φ(n)=n*((1-1/p1)*(1-1/p2)*...(1-1/pk)),其中p1..pk是n的质因子,(如8=2*2*2,φ(8)=8*(1-1/2)= 4) http:// 阅读全文
posted @ 2018-03-28 16:04 MekakuCityActor 阅读(215) 评论(0) 推荐(0)
摘要:1、存储的实现 (使用结构体数组存储,便于编号从而使平行节点 ( 平行节点是指,起点相同的节点,如1分别与5,6相连,则5和6为平行节点) 被一个next变量联系起来,从而完成所有平行起点的遍历) 2、对平行节点的串联 (使用一个"指针"数组,指针编号为父节点编号,指向最后一个边的结构体编号) 3、 阅读全文
posted @ 2018-03-27 20:56 MekakuCityActor 阅读(281) 评论(0) 推荐(0)
摘要:任意一个大于1的自然数N,如果N不是质数,那么它都能写成若干个素数相乘的形式,即:n=p1^e1*p2^e2*p3^e3*p4^e4...*pn^en;,而n的所有因子个数和=(1+e1)*(1+e2)*(1+e3)...*(1+en) https://www.nowcoder.com/acm/co 阅读全文
posted @ 2018-03-26 20:28 MekakuCityActor 阅读(296) 评论(0) 推荐(0)
摘要:https://www.nowcoder.com/acm/contest/51/J 哥德巴赫猜想:1)任意一个大于2的偶数都能分解成两个素数, 2)任意一个大于5的奇数都能分解成三个素数(首先分成3和n-3,其中3为素数,n-3为大于2的偶数然后该偶数还能分成两个素数,所以可以分出三个素数) (而如 阅读全文
posted @ 2018-03-26 12:17 MekakuCityActor 阅读(330) 评论(0) 推荐(0)
摘要:取模过程只能乘、加、减,而除法取模只能使用逆元进行操作 两个取模的结果进行相减操作时(易知前面的数理论上应该大,但取模之后可能小于后面的数)此时应该加上MOD的倍数,再对相减结果进行取模,从而保证输出为正 阅读全文
posted @ 2018-03-21 11:22 MekakuCityActor 阅读(1266) 评论(0) 推荐(0)
摘要:卢卡斯定理:C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p; 具体实现:1、对于C(n%p,m%p)直接就能求出 2、对于C(n/p,m/p)可以使用递归或者for循环实现 阅读全文
posted @ 2018-03-20 22:13 MekakuCityActor 阅读(169) 评论(0) 推荐(0)
摘要:https://baijiahao.baidu.com/s?id=1583148539639670534&wfr=spider&for=pc(文章原出处) 三道题,诠释“插板法”精髓。(核心是可以将求n个数和为m的方案数转化为m+n个物体分成n堆,每堆至少一个的问题,从而使用插板法) 【1】、10个 阅读全文
posted @ 2018-03-20 18:40 MekakuCityActor 阅读(1182) 评论(0) 推荐(0)
摘要:重点是对数组的初始化,把初始状态时的不取赋值为1 >nums[0][0]=1;,然后之后就能从i=1开始遍历更新nums数组(nums[j+i*k]+=nums[j];) 重点就是初始化的操作是把nums[0][0]=1; 阅读全文
posted @ 2018-03-20 12:50 MekakuCityActor 阅读(248) 评论(0) 推荐(0)
摘要:有一类经典问题就是在 n (或者是一个大于n的数字)个数字中取若干数字使其和为n,首先这种取法必定存在(在很多题目中都会告诉你如果不存在输出No什么的,完全是在胡扯..不可能不存在的,因为根据鸽巢原理n个数字的余数区间和中如果余数和为0,则表示存在,如果不为0时,则根据鸽巢原理,则必定有至少两个区间 阅读全文
posted @ 2018-03-19 21:11 MekakuCityActor 阅读(202) 评论(0) 推荐(0)
摘要:在概率论和统计学中,数学期望(mean)(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和(百度百科) 一种类型的题目:小明抽中彩票的概率为 p,小明重复进行抽奖,则其能抽中彩票所需的抽彩票次数期望为 1/p 另一种类型的题目,小明抽中彩票的概率为p,小明在抽中之后直接停止抽奖,在误差 阅读全文
posted @ 2018-03-18 16:18 MekakuCityActor 阅读(198) 评论(0) 推荐(0)
摘要:关于对输出结果小数点后面位数精度要求高的题目,乘除的过程的变量一律定义为double (即使该变量表示次数等整数概念) 下面是一道要求结果误差不超过1e-9,而把乘除运算过程需要出现的一个次数变量定义为int之后一直AC率为0.95,改成double之后直接AC的题目 https://www.now 阅读全文
posted @ 2018-03-18 16:11 MekakuCityActor 阅读(147) 评论(0) 推荐(0)
摘要:1、对于求是否有解的问题一般使用bool dfs() 其中return 可以放在递归式后面 2、对于需要更新解的问题一般使用int dfs() 其中return 不能放在递归式后面,必须放在函数最后以及边界条件处,否则不能更新彻底就返回了 阅读全文
posted @ 2018-03-17 13:26 MekakuCityActor 阅读(822) 评论(0) 推荐(0)
摘要:一个有N个格子的环,共有M种颜色去涂,相邻格子颜色不同,问共有几种方式 假如随便找一点记为1,按顺序编号,则对于这个环存在两种情况:1、第N-1个格子与第一个格子颜色相同 2、二者颜色不相同 则总方案数就是第一种+第二种 >首先把对N个格子涂色的方案数记为An,则第一种情况下,就相当于在一个N-2个 阅读全文
posted @ 2018-03-16 12:23 MekakuCityActor 阅读(4051) 评论(0) 推荐(0)
摘要:http://poj.org/problem?id=3276 题意:n(n<=5000)头牛站成线,有朝前有朝后的的,然后每次可以选择大小为k的区间里的牛全部转向,会有一个最小操作m次使得它们全部面朝前方。 问:求最小操作m,再此基础上求k。 首先不要看错题意,这不是一个求最小k的,而是求m最小时, 阅读全文
posted @ 2018-03-14 09:14 MekakuCityActor 阅读(147) 评论(0) 推荐(0)
摘要:POJ3279http://poj.org/problem?id=3279 题意:黑白的板,每次选择一个十字形翻转(十字板内黑白互换,若是边界则不管),求最小将原图变为全白的策略。 这是一道对于每个格子的选择会对相邻格子造成影响的问题,回顾一下,这个问题和状压dp解决的问题的条件基本一致,而状压dp 阅读全文
posted @ 2018-03-13 18:23 MekakuCityActor 阅读(164) 评论(0) 推荐(0)
摘要:根据需要选择或与异或进行位运算(其中或比较常用,常见问题就是取数问题) POJ1321http://poj.org/problem?id=1321 长沙理工大学第十二届ACM大赛-重现赛https://www.nowcoder.com/acm/contest/1/D 阅读全文
posted @ 2018-03-10 12:56 MekakuCityActor 阅读(154) 评论(0) 推荐(0)
摘要:状压dp是将每种状态都压缩成用一个二进制串,然后利用位运算进行操作的dp,而凡是dp都需要进行状态转移 对于简单的dp问题只需要一个二维数组dp[ i ][ j ]就能解决 具体操作为首先把状态压缩为二进制串, 然后对第一行进行初始化, 再利用三个for循环进行状态转移(第一层for循环控制行的前进 阅读全文
posted @ 2018-03-10 11:37 MekakuCityActor 阅读(194) 评论(0) 推荐(0)
摘要:bitset是C++中的一个东西,定义在头文件#include<bitset>里 所以可以使用#include<bitset>解决取数类的问题https://www.nowcoder.com/acm/contest/1/D 阅读全文
posted @ 2018-03-06 12:33 MekakuCityActor 阅读(116) 评论(0) 推荐(0)
摘要:树状数组的高效性主要就是通过将一条线段分成若干个小线段(其中每个小线段存储着2^k大小的区间和,这就将区间和问题复杂度降到了logn),而不是一个一个单一的点 add()操作修改了单点的值,同时对之后的父亲节点进行了更新(之所以只更新该点以及该点的父亲节点而不更新该点的非父亲节点,是因为求和时父亲节 阅读全文
posted @ 2018-03-05 09:27 MekakuCityActor 阅读(199) 评论(0) 推荐(0)
摘要:h杭电oj1198http://acm.hdu.edu.cn/showproblem.php?pid=1198(一道搜索题) 题目的管道接口对应关系如果不使用数组进行对应,而是选择手工进行情况分类对应,代码量会比较大,而且容易出错,如下 不使用数组的代码量 使用数组进行对应关系之后的代码量 阅读全文
posted @ 2018-03-04 11:31 MekakuCityActor 阅读(97) 评论(0) 推荐(0)
摘要:杭电oj1272http://acm.hdu.edu.cn/showproblem.php?pid=1272 判断方法,在建立两点之间的边时应查询它们的根节点是否相同,如果相同就是有环的,否则无环 阅读全文
posted @ 2018-03-04 08:48 MekakuCityActor 阅读(385) 评论(0) 推荐(0)
摘要:有向图的合并,典型问题:通知小弟(信息只能单向传播)https://www.nowcoder.com/acm/contest/76/E 无向图的合并,典型问题:修道路问题 由于无向图只要二者有联系即可(即不需要分清是谁触发谁,也就无所谓父亲节点与儿子节点、孙子节点...),所以只需要建立一个并查集就 阅读全文
posted @ 2018-03-03 16:34 MekakuCityActor 阅读(517) 评论(0) 推荐(0)
摘要:首先由于加入到队列中的数据的值将不能改变,而有些点的最短距离更新时,还留在队列中的该点仍是该点更新之前的值,而此时的值已经成为了垃圾值(因为它已经不是该点的最短距离了,弹出之后更新的周围的点也不是最短距离)所以对于某些最短距离已经更新的点,再使用更新之前的点的值进行更新其他点是没必要的,这时就需要通 阅读全文
posted @ 2018-03-01 20:26 MekakuCityActor 阅读(364) 评论(0) 推荐(0)