自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

熟睡的哲学家的博客

https://github.com/zmh69695328

  • 博客(96)
  • 资源 (2)
  • 收藏
  • 关注

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

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

2017-08-30 23:52:59 318

原创 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) : r(r), i(i) {} cplx operator + (const cplx &a)

2017-08-30 17:15:19 258

原创 Two strings hdu6170 dp递推

题意:给出两个字符串,第一个字符串只包含小写或者大写字母,第二个字符串包含小写或者大写字母或者特殊字符“.”和“*”,这里“.”可以替换为任意字符,但是不能变成空。这里“a*”可以变成空串,可以变成a,也可以是aa,也可以是aaa,还可以是aaaa.以此类推,不限长度。问第二个串和第一个串是否能够完全相等。思路:dp记录状态,写记忆化超时了,所以只能正着推了,设d[i][j][k]为第

2017-08-23 15:03:50 268

原创 矩阵快速幂模板

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<(int)A.size();i++) for(int k=0;k<(int)B.size();k++)

2017-08-21 16:48:51 263

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

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

2017-08-18 17:27:10 230

原创 String painter HDU - 2476 区间dp+思维

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

2017-08-12 21:56:19 227

原创 根据日期算星期

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; } if(m==1||m==2){ m+=12; y--; } return (d+2*

2017-08-12 19:18:16 372

原创 Party Games UVA - 1610 暴力

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

2017-08-11 15:34:55 204

原创 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 #include #include #include #include

2017-08-10 11:41:31 287

原创 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*2^k=B-Aax+by=c  当c为g=gcd(a,b)的倍数时,一组解是(x0*c/g,y0*

2017-08-09 23:02:28 221

原创 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素数的乘积,加一个判断大于100001时 break,也就是范围的上限,所以很快,最后递推一下0到i之

2017-08-09 15:22:21 306

原创 Multiplication Puzzle POJ - 1651 区间dp 好题

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

2017-08-09 13:20:09 209

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

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

2017-08-09 10:00:15 267

原创 hdu 6092 Rikka with Subset 背包dp

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

2017-08-08 20:22:27 209

原创 Wine trading in Gergovia UVA - 11054 贪心思维

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

2017-08-07 15:16:45 245

原创 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 245

原创 Amount of Degrees URAL - 1057 数位dp

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

2017-08-07 11:10:38 258

原创 Simple String Problem FZU - 2218 状压dp

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

2017-08-07 00:13:35 215

原创 hdu 5965 扫雷 分析递推

扫雷Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 38    Accepted Submission(s): 10Problem Description扫雷游戏是晨晨和小璐特别喜欢的智力游戏,她俩最近沉迷其

2017-08-06 17:55:47 437

原创 Brackets sequence UVA - 1626 区间dp

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

2017-08-06 15:58:00 180

原创 zhx's contest HDU - 5187 快速乘,解决乘数过大

题意:作为史上最强的刷子之一,zhx的老师让他给学弟(mei)们出n道题。zhx认为第i道题的难度就是i。他想要让这些题目排列起来很漂亮。zhx认为一个漂亮的序列{ai}下列两个条件均需满足。1:a1..ai是单调递减或者单调递增的。2:ai..an是单调递减或者单调递增的。他想你告诉他有多少种排列是漂亮的。因为答案很大,所以只需要输出答案模p之后的值。整个数列

2017-08-06 10:56:52 260

原创 Trees in a Wood. UVA - 10214 欧拉函数表

紫书p339枚举a,每个的贡献为b/i*phi[i],因为gcd(kx+y,x)=gcd(x,y),因为gcd(x,y)=gcd(y,x%y)#include #include #include #include #include #include #include #include #include #include using

2017-08-06 10:02:59 202

原创 Corn Fields POJ - 3254 入门状压dp

题意:有n*m大的一个地方,1表示土地肥沃可以种植物,0表示不能种植物,问:在不许有两个植物相邻的情况下,有多少种放置的方法。我们用数字0,1来表示各个行的状态,也就是植物的放置与否,而这些0,1的组成是可以转换为整形存到数组中的,所以就类似于对于一个集合的操作就是整形的操作。转移很显然,就是d[i][j]+=d[i-1][k] k是与j合法的摆放情况这一题,重点在于不合法的位置判断。

2017-08-04 10:51:56 160

原创 FZU2277 Change dfs序+树状数组 区间更新 单点求值

http://www.cnblogs.com/chendl111/p/7224769.html  题解树状数组的各个应用http://www.cnblogs.com/yyf0309/p/7210538.html改天自己写一遍

2017-08-03 11:02:29 197

原创 转 java大数的一些例题

http://blog.csdn.net/l04205613/article/details/6873991

2017-08-02 21:12:50 197

原创 第十四个目标 FZU - 2236 离散化 树状数组

Problem 2236 第十四个目标Accept: 137    Submit: 436Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description目暮警官、妃英里、阿笠博士等人接连遭到不明身份之人的暗算,柯南追踪伤害阿笠博士的凶手,根据几起案件现场留下的线索发现凶手按照扑克牌的顺序行凶。

2017-08-01 16:49:21 344

原创 牧场物语 FZU - 2234 巧妙的状态设计

Problem 2234 牧场物语Accept: 195    Submit: 1021Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description小茗同学正在玩牧场物语。该游戏的地图可看成一个边长为n的正方形。小茗同学突然心血来潮要去砍树,然而,斧头在小茗的右下方。小茗是个讲究

2017-08-01 10:33:24 416

原创 模板之快速幂和求逆元

ll mypow(ll a,ll b){ ll sum=1LL; while(b){ if(b&1) sum=(1LL*sum*a)%mod; a=(1LL*a*a)%mod; b>>=1; } return sum;}void ext_gcd(ll a, ll b, ll &d, ll &x, ll &y)//拓

2017-07-31 17:11:10 448

原创 RMQ之ST表维护区间极值

令d[i][j]表示从i开始,长度为2^j的一段元素中的最小值,用递推方式计算,d[i][j]=min(d[i][j-1],d[i+2^j-1,j-1),就是将[i,i+2^j]的这段区间一分为二,然后取两段区间的极值就可以了。2^j小于等于n,所以一般来讲数组第二维开30就够了。至于递推的计算顺序,j总是与前一项j-1有关,所以对j的循环放在外层,就不会破坏计算顺序。查询操作就是,令

2017-07-31 10:08:24 237

原创 Dart game UESTC - 927 计数,完全背包

题目大意:现在有1-20这些分值,每个数都可以得到i分,或者是i*2分,或者是i*3分。中间有一个25分,可以得到25分或者是50分。问你必须最后一次得分为2倍得分的方案数,使得得分加和为N分。方案不同的定义是分割的方法不同,对顺序没有要求,所有,最后一次为2的方案数=所有情况的方案数-没有2倍得分的方案数用类似完全背包的方法去统计一下答案就好了#i

2017-07-30 21:19:03 259

原创 过河 FZU - 2255 dp

Problem C 过河Accept: 3    Submit: 5Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description遥远的YS星球上,生活着两种物种名为Yellow和Star,简称物种Y和物种S。神奇的是物种Y的体重始终为50kg,物种S的体重始终为100kg。

2017-07-30 16:24:13 249

原创 迷宫 FZU - 2256 基础的树形dp

Problem 2256 迷宫Accept: 93    Submit: 288Time Limit: 1500 mSec    Memory Limit : 32768 KB Problem Description某一天,YellowStar在人生的道路上迷失了方向,迷迷糊糊之中,它误入了一座迷宫中,幸运的是它在路口处发现了一张迷宫的地图。经过它的观察,它发现

2017-07-30 11:31:54 253

原创 Salty Fish FZU - 2253 简单dp

Problem A Salty FishAccept: 108    Submit: 400Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description海边躺着一排咸鱼,一些有梦想的咸鱼成功翻身(然而没有什么卵用),一些则是继续当咸鱼。一个善良的渔夫想要帮这些咸鱼翻身,但是渔夫比较懒,所以只

2017-07-30 10:31:58 451

原创 英语考试 FZU - 2254 最小生成树

Problem B 英语考试Accept: 33    Submit: 188Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description在过三个礼拜,YellowStar有一场专业英语考试,因此它必须着手开始复习。这天,YellowStar准备了n个需要背的单词,每个单词的长度均为m。

2017-07-29 11:07:58 209

原创 Count UVA - 1645 递推 统计有根树 水

题意:求n个节点的有根数,有多少种情况满足每个深度中所有节点的子节点个数相同。设d[n]为有n个节点的满足题意的个数。可以这样考虑,根节点儿子的个数为i的情况有d[(n-1)/i]种,i整除(n-1).#include #include #include #include #include #include #include #include

2017-07-29 01:10:13 222

原创 Another a+b FZU - 2058 二分查找匹配值

a[i] + a[j] = M and 1初始的顺序其实没有关系排序以后,对于要查找与a[i]匹配的值,范围[0,i-1].#include #include #include #include #include #include #include #include #include #include using namesp

2017-07-28 22:38:24 248

原创 Magic FZU - 2280 字典树加树状数组

题意:给n个长度      有两种操作      2 k 选中第k个字符串,问你有多少个字符串满足w[i]      1 k y 把第k个字符串的权值修改为y用树状数组维护权值出现的个数,因为要满足后缀关系,所以用字典树反向插入,在节点位置标记,使得之后插入的字符串到达该节点时,更新个数,插入的顺序是长度从小到大,因为有相同字符串存在,所以为每个

2017-07-26 17:38:14 572

原创 POJ 2481 Cows 树状数组 区间包含

给定每个奶牛的能力值范围,求每个奶牛能力值被包含的个数,就是区间被其他区间包含的个数排序,按右端点从大到小排序,相等时,左端点从大到小。然后每次跟新左端点上的数量,+1,统计1-左端点中包含的端点个数。#include #include #include #include #include #include #include #include

2017-07-26 10:42:41 192

原创 GCD HDU - 1695 容斥原理+欧拉函数打表

求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1先转换成gcd(x/k,y/k)=1的对数,所以区间的范围为(1,b/k)和(1,d/k),设b是较小的那一个,统计的时候分为两部分,一个是(1,b/k),枚举i,i的范围(1,b/k),加上phi[i]。另一个是,它们区间的范围是(1,b/k)和(b/k+1,d/k),怎么统计呢?我们枚举i,b/k+1如

2017-07-25 10:37:49 217

原创 我的spfa

const int INF=1e9+100;int d[505];struct edge{int to,cost;};vector g[505];bool spfa(int n){ int cnt[505]; bool vis[505]; for(int i=1;i<=n;i++){ memset(vis,false,sizeof(vis));

2017-07-24 11:55:51 268 2

循序渐进Linux第2版+标签+139M

循序渐进Linux第2版循序渐进Linux第2版循序渐进Linux第2版

2018-01-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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