自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 AC自动机

文档:AC自动机.note 链接:http://note.youdao.com/noteshare?id=af0b6c526b6c7c311c271770d215a34c

2019-07-28 09:39:15 126

原创 数学常用模板

数学 Euler筛(线性筛) #include<bits/stdc++.h> using namespace std; int p_table[10010]; bool isPrime[10010]; int n; void Euler(int n){ memset(isPrime,true,sizeof(isPrime)); memset(p_table,0,sizeof(p_t...

2019-06-24 20:52:44 144

原创 刷题计划汇总

刷题计划汇总 一、基础算法(贪心模拟二分等) POJ 3617 Best Cow Line POJ 3069 Saruman’s Army POJ 3253 Fence Repair UVA 1172 The Bridges of Kolsberg POJ 1700 Crossing River POJ 1328 Radar Installation POJ 1017 Packets POJ 10...

2019-06-22 13:56:15 355

原创 洛谷P2657 [SCOI2009]windy数

洛谷P2657 [SCOI2009]windy数 本题是一道数位DP 看程序应该能看懂 中心思想:把一个数拆成每一位来处理 代码: #include<bits/stdc++.h> using namespace std; int A,B; int f[20][20]; void dp(){ memset(f,0,sizeof(f)); for (int i=0;i<10;i+...

2019-05-21 17:17:42 197

原创 POJ 2342 Anniversary party

POJ 2342 Anniversary party 树形DP g[i]表示不取i节点最大快乐值,则子节点想取就取 f[i]表示取i节点最大快乐值,则子节点必不能取 代码: #include <iostream> #include <stdio.h> #include<memory> #include<stack> ...

2019-05-18 22:02:19 235

原创 POJ 2576 Tug of War

POJ 2576 Tug of War 持续自闭。。。。动归一道不会写,全得看题解。。。。。 f[i][j]表示用i个人能否达到j的重量 循环第一层i表示选i这个人 循环第二层j表示第j个人 循环第三层k表示体积为k 那么动归方程就是一个递推:如可以达到用i个人j重量,那么枚举每一个人,用i+1个人时j+a[当前这个人]的重量也能被达到 第二层j从0开始是因为f[1][k]不一定是可到达的,但f[...

2019-05-17 21:01:42 375 1

原创 POJ2184 Cow Exhibition

POJ2184 Cow Exhibition 本题是01背包扩展(负数) 为什么呢,既然奶牛有两个参数,我们不妨随便假设一个为体积,一个为价值,最后再扫一遍保证是都是正数的情况下取max 01背包基础 我们考虑01背包的基本动态转移方程:对于体积为c,价值为v的物品 f[c]=max(f[i-c]+v , f[c]) 这时候体积这一维(即第二维)是倒着循环的,为什么呢? 因为i-c<i 体积...

2019-05-13 21:06:01 140

原创 洛谷P2375 动物园

洛谷P2375 动物园 这一题我认为巨难 有一个很简单的暴力做法50分: #include<bits/stdc++.h> using namespace std; int n; char s[1000010]; int next[1000010]; int cnt[1000010]; long long ans; int main() { scanf("%d",&n);...

2019-05-11 23:22:13 228

原创 洛谷P4503 [CTSC2014]企鹅QQ

洛谷P4503 [CTSC2014]企鹅QQ 本题在CTSC中算简单的了 但是它仍然是CTSC啊 这题是我的第二道字符串hash,有一定难度 这题的主要难点: 1. 如何判断两个用户名是同一个人 题目中说:若两个账户名称是相似的,当且仅当这两个字符串等长且恰好只有一位不同 而题目中又说:为了简化你的工作,小Q给你的N 个字符串长度均等于L 这一波简直爽歪歪,我们只需要枚举每一个位置,把该字符串减去...

2019-05-10 22:23:02 214

原创 POJ2752 Seek the Name, Seek the Fame

POJ2752 Seek the Name, Seek the Fame 本题是求一个fail数组就可以了 但是这一题有一个地方和fail数组定义不同:它自身也算一个最长公共前后缀 这一点想了很久。。。。但是最终发现不用改变fail数组,只需要多输出一个字符串它自己的长度就可以了(因为根据题目定义字符串本身必定是它自己的最长公共前后缀) 由于他要升序,把他丢到一个优先队列就行了 代码: #incl...

2019-05-09 17:44:19 90

原创 POJ3461 Oulipo

POJ3461 Oulipo 这一题是裸的kmp 总结几点: 字符串scanf读入不加& fail求的是文本串 代码: #include<iostream> #include<cstring> #include<cstdio> using namespace std; int n,ans; char w[10010],t[1000010]; int...

2019-05-07 22:19:21 98

原创 POJ1200 Crazy Search

POJ1200 Crazy Search 本题题目没给数据范围!!!但是它给了输出结果不大于1.6* 107 所以本题就可以用字符串hash,只需要mod1.6*107就可以了 由于最多只有nc种字符,我们直接用nc进制字符串hash就行了 对于字符串hash,我们从直观上讲是每次都要hash=hash+pow(x,p)的 但是在实现的过程中我们可以hash=hash*p+x; 这样少掉一个pow...

2019-05-07 17:19:01 128

原创 POJ1222 EXTENDED LIGHTS OUT

POJ1222 EXTENDED LIGHTS OUT 本题是一道二进制模拟题 我们只需要枚举第一行就可以推出下面的状态 因为如果一行已经确定了,这一行中的一个节点只能由它下面的节点来改变 所以如果这个节点是1,下面一行的这个位置必定要按下去 但是调了很久,主要由于两个原因 一定要搞清楚i和j分别是6还是5,即他们分别是横行和纵列,千万不要搞反!!!(调了40分钟)** &是位运算符, 同...

2019-05-03 21:37:18 180

原创 POJ1995 Raising Modulo Numbers

POJ1995 Raising Modulo Numbers 本题是裸的快速幂 但是由于快速幂我一直忘,在此我加强一下记忆 问题:求ab mod m 数学证明有点麻烦,我们可以举个例子:求211 我们可以把它写成二进制(1011)2 要求211 ,即求21+2+8 =20 * 21 * 23 详细过程如下: 这样可能好理解一点 为了方便代码,我们可以把11,也就是b每次>>1,然后我...

2019-05-02 21:51:24 238

原创 POJ3219 Binomial Coefficients

POJ3219 Binomial Coefficients 观察题目,典型的Lucas定理,但是我认为本题最妙的解法不是Lucas 首先一个结论:对于C(n,r),如果n&r=r则C(n,r)为奇数,反之为偶数 证明: 代码于是就变得非常简单: #include<iostream> using namespace std; int main() { long long ...

2019-05-02 19:46:42 151

原创 POJ1740 A New Stone Game

POJ1740 A New Stone Game 本题是博弈论的基础题。 对于这种题目,我们一般先手玩一波。 手玩发现:同时先手当且仅当石子有偶数堆并且对称时必败(这一个结论看似简单,实际要想到可能会话几十分钟),因为后手只要照着先手操作,先手必败(至于唯一性只能靠感悟了) 于是题目就转化成判断是否是对称的 做此类博弈类手玩题的技巧: 一定要自己多手玩,几十次也不为过。要各种极端情况全部考虑 对...

2019-04-25 22:02:37 136

原创 POJ2507 Crossed ladders

POJ2507 Crossed ladders 本题复习实数域上的二分。 实数域上的二分与普通的二分不同,它需要设置一个精度,据题目而定(一般不会小于1e-9)。 本题首先推公式,由相似三角形其实可以解得距离的关于x,y,c的表达式,但是我们发现太烦了,而且解出来也是带高次项的,题意肯定不是想让你解。 于是我们可以发现本题可以用二分求函数零点。 但是用二分求函数零点有条件:函数必须是单调且连续的(...

2019-04-24 21:51:25 439

原创 POJ3264 Balanced Lineup

POJ3264 Balanced Lineup 这一题是ST表的模板题,但是我还是调了很久,主要是由于一个很经典的错误 很容易想到如下的方法: int fmaxx[50010][30],fminn[50010][30]; for (int j=1;j<=logg[n];j++){ for (int i=1;i<=n;i++){ fmaxx[i][j]=max(fmaxx[i]...

2019-04-20 23:01:13 107

原创 洛谷 P1998 最大数 JSOI2008

洛谷 P1998 最大数 本题用来练ST表 确实,用线段树比较直观,而且效率还过得去,但是有亏 本题有一种非常神奇的解法:反向ST表 如果是在考场上,码量就会大大减少,时间也就变得充裕(其实也不难想到) 本题其实不带真正意义上的“修改”,因为每次修改操作都是在末尾添加一个数,我们可以边读边建立ST表,在线操作 但是正常的ST表是向左建的,而这一题是要求最后的L个数的长度,所以我们反向建ST表:朝右...

2019-04-20 21:22:22 190

原创 洛谷 P1056 排座椅

洛谷 P1056 排座椅 本题是一道模拟题。 很容易想到要一条走廊要尽量分开越多想讲话的人越划算 于是我们先处理处每条走廊有几个人要和下一条走廊的人讲话 然后丢进优先队列里按照讲话的人数排序 最后按照序号先后顺序桶排一波 然后搜一遍输出 附图:(没用的点可以不看,只看绿的和红的)(懒得改图了) 代码: #include<bits/stdc++.h> using namespace s...

2019-04-19 22:15:14 114

原创 POJ 2750 Potted Flower

POJ2750 #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int N=100010; int n,m; struct node{ int l,r,lmax,rmax,datmax,sum,lmin,rmin,datmin; }t[...

2019-04-07 15:46:34 151

空空如也

空空如也

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

TA关注的人

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