摘要: 朴素埃式素数筛法枚举≤n的每一个数x,把x倍数都筛选掉。int vis[N]; // 素数标记,0为素数,1为合数memset(vis, 0, sizeof(vis));for(int i = 2; i usin... 阅读全文
posted @ 2019-02-22 19:33 月光下の魔术师 阅读(9) 评论(0) 推荐(0)
摘要: UVA11400题解:每次都不换或全部把电压小的用电压大的替换掉,因为不全部换掉就有两个电源。 把灯泡按电压从小到大排序。这样换的时候直接用后面的换前面的。 dp[i]表示用1到i中几种灯泡的最小费用。 dp[i... 阅读全文
posted @ 2019-02-22 18:37 月光下の魔术师 阅读(10) 评论(0) 推荐(0)
摘要: 组合数三种求法1、杨辉三角打表预处理(n,m>= 1; } return ans;}ll comb(ll n,ll m){ //n!/(m!)*(n-m)! if(n 0;i--) finv[i-1] = ... 阅读全文
posted @ 2019-02-22 17:49 月光下の魔术师 阅读(29) 评论(0) 推荐(0)
摘要: 意义:n个不同的元素,每个元素都不在自己原来位置的排列方案数。递推式:通项:代码:void Init(){ d[0] = 1,d[1] = 0,d[2] = 1; //不要少了d[0] for(int i... 阅读全文
posted @ 2019-02-22 17:39 月光下の魔术师 阅读(11) 评论(0) 推荐(0)
摘要: Lucas定理:公式:C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p 适用范围:n和m很大(1e18数量级),mod很小(1e6数量级) 对于上式:C(n%p,m%p)可直接用逆元求组合数方法求... 阅读全文
posted @ 2019-02-22 17:33 月光下の魔术师 阅读(13) 评论(0) 推荐(0)
摘要: 最长公共子序列(LCS) dp[i][j] = x表示第一个字符串前i个位置和第二个字符串前j个位置的最长公共子序列长度为x if(s1[i]==s2[j]) dp[i][j]= dp[i-1][j-1]+1... 阅读全文
posted @ 2019-02-22 17:21 月光下の魔术师 阅读(9) 评论(0) 推荐(0)
摘要: UVA116题解:参考刘汝佳的代码。每次从最后一列开始往前推。dp[i][j]表示从(i,j)到最后一列的整数和最小值。因为每次只能直行,右上,右下。所以dp[i][j] = max(dp[i][j+1],dp[... 阅读全文
posted @ 2019-02-22 17:15 月光下の魔术师 阅读(11) 评论(0) 推荐(0)
摘要: 最长上升子序列方法一:dp[i]表示为以i结尾的最长长度,那么if(a[j]#include #include #include using namespace std;int const N = 1000 + ... 阅读全文
posted @ 2019-02-22 17:05 月光下の魔术师 阅读(123) 评论(0) 推荐(0)
摘要: UVA11806题意:总共有k个啦啦队队员,站在n*m的格子里,每条边至少有一个人,问有几种方法。一个角落可以同时属于两条边。题解:利用容斥原理和状态压缩。0001,0010,0100,1000分别表示上下左右没... 阅读全文
posted @ 2019-02-22 12:33 月光下の魔术师 阅读(21) 评论(0) 推荐(0)