熟睡的哲学家的博客

https://github.com/zmh69695328

高斯消元的一些模板 整理自他人,感谢!

//高斯消元法解异或方程组,返回方程解得个数。 const int N = 505; int A[N][N];//关系矩阵 ll Gauss(int equ,int var){//返回解得个数,equ为行数,var为列数 int row,col; for(row...

2017-08-30 23:52:59

阅读数 135

评论数 0

FFT模板

const int maxn = 2e5 + 10; const double pi = acos(-1); ll c[maxn]; ll d[maxn]; struct cplx { double r, i; cplx(double r = 0, double i = 0) ...

2017-08-30 17:15:19

阅读数 106

评论数 0

Two strings hdu6170 dp递推

题意:给出两个字符串,第一个字符串只包含小写或者大写字母,第二个字符串包含小写或者大写字母或者特殊字符“.”和“*”,这里“.”可以替换为任意字符,但是不能变成空。 这里“a*”可以变成空串,可以变成a,也可以是aa,也可以是aaa,还可以是aaaa.以此类推,不限长度。 问第二个串和第一个串...

2017-08-23 15:03:50

阅读数 137

评论数 0

矩阵快速幂模板

typedef vector vec; typedef vector mat; const int mod=1e9+7; mat mul(mat &A,mat &B){ mat C(A.size(),vec(B[0].size())); for(int i=0;i&...

2017-08-21 16:48:51

阅读数 106

评论数 0

Xor Sum HDU - 4825 01字典树入门题

题意:n个数字,m个询问,问n个数字中与给定的x异或最大的数字是多少。 思路:从高位到低位插入01值,因为异或时高位尽量大,结果才尽量大,最低位节点保存相应的值,最后查询时,尽量找能使该位变成1的节点遍历。 #include #include #include #includ...

2017-08-18 17:27:10

阅读数 121

评论数 0

String painter HDU - 2476 区间dp+思维

题意:给定a,b两个字符串,让你求将a刷成b所要的最少的次数,刷的时候只能刷连续的一个区间。 思路:先计算出由空串刷成b串的最少次数,因为有相同字符的存在,所以才能尽可能地少刷,设d[i][j]为区间i到j的最少次数,如果第i位和第j位上的字符相同,那么就等价于区间i+1到j的最少话费,因为是由...

2017-08-12 21:56:19

阅读数 121

评论数 0

根据日期算星期

int Change(int y,int m,int d)//根据日期算星期 { if(!((y%4==0&&y%100!=0)||y%400==0)){//输入不合法 if(m==2&&d==29) return -1; } ...

2017-08-12 19:18:16

阅读数 240

评论数 0

Party Games UVA - 1610 暴力

题意: 给出n个串(n为偶数); 要构造一个串,使n串中有一半小于等于它,另外一半大于它; 要求这个串长度尽量小,同时字典序小 思路:得益于string自带字典序比较,所以先对整个字符串组排序,那么中间两个a,b,答案就要满足大于等于a,小于b,因为有些细节问题的存在,所以直接暴力枚举就行...

2017-08-11 15:34:55

阅读数 98

评论数 0

GCD and LCM HDU - 4497 素数筛

题意:已知l,g其中g=gcd(x,y,z),l=lcm(x,y,z),问x,y,z有多少种组合使得关系成立。 思路:考虑唯一分解定理,对任意一个素因子,设其在g和l中的指数分别为a,b,则必有a 可以将l/g,然后算各个素因子,也可以算出各个素因子的指数求出,最后再同一计算。 #include...

2017-08-10 11:41:31

阅读数 169

评论数 0

C Looooops POJ - 2115 扩展欧几里得

题意:对于C的for(i=A ; i!=B ;i +=C)循环语句,问在k位存储系统中循环几次才会结束。 若在有限次内结束,则输出循环次数。 否则输出死循环。 思路:千言万语汇成一句公式  (A+s*C)%2^k=B (A+s*C)≡B(mod 2^k) 由同余性质得:s*C-m*...

2017-08-09 23:02:28

阅读数 110

评论数 0

Semi-prime H-numbers UVA - 11105 区间筛

题意:定义了一种H素数,H素数的定义是能够被4整除余数为1,且不能写成两个不是1的H数的乘积,然后给定一个n值,问1到n中有多少个能被分解成两个H素数的数。 已经规定1不是h素数了,h数是满足4*n+1的数,所以先预处理出h数,再用筛法将一个h素数的倍数标记掉,同时生成h素数表,之后,枚举两个h...

2017-08-09 15:22:21

阅读数 152

评论数 0

Multiplication Puzzle POJ - 1651 区间dp 好题

题意:给你一组数字,第一个和最后一个数字不可以取出去,其它任意取出去,当你要取出一个数字时,它有一个代价,这个代价就是与它相邻的两个数的乘积,求除了首位两位数字,把其他数字都取出来,它们的代价之和的最小值 和矩阵连乘求最小乘法次数一样的,乍一看,似乎要保存的状态很多,但是我们枚举一个区间内最后被...

2017-08-09 13:20:09

阅读数 98

评论数 0

A Research Problem UVA - 10837 欧拉函数+暴力 好题

题意:输入正整数m(m 先列出欧拉函数的公式,phi(n)=n*((p1-1)/p1)*((p2-2)/p2)*......*((pk-1)/pk)=m,关键点在于n包含哪些素因子以及它的数量,所以先找到满足要求的素数,素数筛完,再判断一遍,即pi-1能整除m的素数,然后暴力枚举各个素因子的次数...

2017-08-09 10:00:15

阅读数 100

评论数 0

hdu 6092 Rikka with Subset 背包dp

题意:有一个数列 a[] ,长度(n 我们熟悉的一个问题是,给你若干数字,选取其中一些,每个数字只能取一次,求它们的和的不同方案数,那现在这个问题反过来了,同样可以用背包做。 因为可能a数组中有0的出现,所以先算出0的个数,也就是log2(b[0]),将这些0放入最后要输出的答案序列中,然后其...

2017-08-08 20:22:27

阅读数 98

评论数 0

Wine trading in Gergovia UVA - 11054 贪心思维

题意:有n个村庄,有的买酒,有的买酒,分别用+k,或-k来表示,现在要达到供需平衡,也就是所有的村庄值变为0,k个酒运到相邻村庄需要k个花费,求最小花费。 有个重要条件是他们之和为0,要达到最小花费,也就是要多少送多少,不多运也不少运,考虑最左边的村庄,如果买酒,k>0,那他需要的酒肯定是...

2017-08-07 15:16:45

阅读数 111

评论数 0

Hell on the Markets UVA - 1614 贪心+思维

题意:有一个长度为N的序列A,满足1≤Ai≤i,每个数的正负号不知。请输出一种正负号的情况,使得所有数的和为0。(N≤100000) 前i个数可以凑出1~sum[i]的所有整数。sum[i]为前i项之和,归纳法可证,又因为每个元素要么+1,要么-1,所以所有的元素之和必须是偶数,最后就是选择的问...

2017-08-07 14:23:26

阅读数 128

评论数 0

Amount of Degrees URAL - 1057 数位dp

题意:求(x--y)区间转化为b进制以后, 1 的个数为 k 的数的出现次数,并且其余位上的数必须为0。 原题要求的是k个不同b次幂相加得到的不同的数的个数,所以每一位上的的数不能出现除1和0以外的数,有了这样一个转换就好办了。 数位dp,枚举时只枚举含0,1的位,一定是从高位枚举,设d[po...

2017-08-07 11:10:38

阅读数 141

评论数 0

Simple String Problem FZU - 2218 状压dp

题目大意:给一个长度为n由k种字母组成的字符串,求其中两个子串,要求它们不包含相同的字母且长度的乘积最大。 子集的枚举问题,状态压缩,设d[i]为状态为i时所代表的集合的子集字母所能构成的最大长度,为什么不是相应代表的集合呢?因为,它的子集完全可以有可能构成比它还要长的长度,如果在最后计算时再算...

2017-08-07 00:13:35

阅读数 102

评论数 0

hdu 5965 扫雷 分析递推

扫雷 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 38    Accepted Submission(s): 10 ...

2017-08-06 17:55:47

阅读数 282

评论数 0

Brackets sequence UVA - 1626 区间dp

题目描述:给出一串由‘(‘)’‘ [ ' ' ] '组成的串,让你输出添加最少括号之后使得括号匹配的串。 像([)] 这样都是不合法的,所以不可能贪心去做。 设d[i][j]为子串s(i,j)至少添加几个括号,所以,当s[i]==s[j]时,有d[i][j]=d[i+1][j-1],设pos[...

2017-08-06 15:58:00

阅读数 89

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭