自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

1292765944的专栏

记录我的acm之路

  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 HDU 2476

卡了我三天的DP看了这篇博客才略微懂点http://blog.csdn.net/hyogahyoga/article/details/7886416#include#include#includeusing namespace std;string a,b;int dp[200][200];int f[200];void solve(int i,int j){ if

2012-08-31 20:58:35 2056 1

原创 SGU 411 Petya the Hero

求两个字符串最长公共回文字串,并随便输出一个#include#include#include#includeusing namespace std;#define MAXN 10100int rad[MAXN];char s[MAXN];char r1[MAXN/2],r[MAXN];int sa[MAXN];int wa[MAXN],wb[MAXN],wv[MAX

2012-08-30 16:02:04 900

原创 UVA 11888 Abnormal 89's

Manacher的应用#include#include#include#include#includeusing namespace std;const int maxn=200100;int rad[maxn*2];char str[maxn],s[maxn*2];bool l[maxn],r[maxn];//函数中参数说明:若原字符串是"abcd",

2012-08-30 15:04:31 1222

原创 POJ 2774

两个字符串的公共字串#include#include#includeusing namespace std;#define MAXN 200100char r1[MAXN/2],r2[MAXN/2],r[MAXN];int sa[MAXN];int wa[MAXN],wb[MAXN],wv[MAXN],ws[MAXN];int height[MAXN],rank[MAXN];

2012-08-29 21:16:05 789

原创 zoj 3633

排序+map乱搞题#include#include#include#define N 500100#define Q 50100using namespace std;struct Query{ int l,r,id,ans;}query[Q];bool cmp1(struct Query a,struct Query b){ return a.r>b.r;

2012-08-29 14:49:20 917

原创 POJ 3764

trie树#include#include#define N 100100#define M 2using namespace std;int n;struct Edge{ int v,w,next;}edge[N*2];int head[N],cnt,cou;int dis[N];void addedge(int u,int v,int w){ edge[

2012-08-28 15:53:07 1336

原创 HDU 3247

AC自动机先预处理所有可以作为合法单词结尾的点之间的距离,然后在这些点之间状态DP即可#include #include #define INF 0x3f3f3f3f#define MAXN 60005char s[1002];int n,m;int next[MAXN][2],fail[MAXN],flag[MAXN],pos;int newnode(){ next

2012-08-28 14:55:05 1129

原创 BOJ 93

KMP+状态DP#include#include#include#includeusing namespace std;char q[1200000],p[1200000];int nex[1200000];void getnext(){ int len=strlen(q),i,j,k=0,l; nex[0]=-1;i=0;j=-1; while(i<len){ if

2012-08-28 14:45:10 662

原创 UVALive 3942 Remember the Word

利用Trie树进行转移#include#include#define MAXN 400003#define SN 26#define MAXL 300003#define MOD 20071027using namespace std;struct Trie { Trie *s[SN]; bool end; void clear() {

2012-08-28 01:33:48 1136

原创 TC SRM 519 600pt

自动机的DP#include#include#include#define MAXN 305#define ALP 26#define MOD 1000000009typedef long long ll;using namespace std;int n,m,k;char s[52];int next[MAXN][ALP],fail[MAXN],flag[MAXN

2012-08-25 19:25:31 730

原创 BNU 12883

扩展KMP简单应用#include#includeusing namespace std;const int MM=1000005;int next[MM],extand[MM];char S[MM],T[MM];void GetNext(const char *T){ int len=strlen(T),a=0; next[0]=len; while

2012-08-24 18:11:14 768

原创 扩展KMP模板

靠谱模版学算法看刘雅琼写的论文#include#includeusing namespace std;const int MM=100005;int next[MM],extand[MM];char S[MM],T[MM];void GetNext(const char *T){ int len=strlen(T),a=0; next[0]=len;

2012-08-24 18:02:38 2326 2

原创 HDU 4396 || HDU 4360

今天SPFA写跪了,怎么弄都T赛后总结写搓了。。。#include#include#include#define M 100100#define N 5010#define inf 100000000using namespace std;typedef long long ll;int n,m,cnt;int s,t,ts;struct Edge{ int

2012-08-23 19:42:11 1334

原创 hdu 4389

数位DP状态记录非常麻烦#include#include#define N 91using namespace std;int n;int dp[11][N][N][N];//位数,各位和,模,余数int tmp[11],ten[11];void init(){ int i,mod,res,sum,now; ten[0]=1; for(i=1;i<=1

2012-08-22 21:15:52 1169

原创 三分法

三分法要注意本题函数是下凹函数还是上凸函数hdu4355#include#include#include#includeusing namespace std;#define N 50010double p[N],w[N];int n;double cal(double mid){ int i; double ans=0; for(i=1;i<=n;i++){

2012-08-22 01:07:49 865

原创 POJ 1305 勾股数组

数论上的一个定理#include#includeusing namespace std;bool vis[1000010];int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}int main(){ int n,i,j,k; while(scanf("%d",&n)==1){ memset(vis,0,sizeof(vis));

2012-08-21 22:09:06 816

原创 数论中的基本算法 POJ 1845 SPOJ DIVSUM

扩展欧几里得 求逆元(只要a与b互素,那么就有逆元)#include#include#include#include#define mod 9973typedef long long ll;void ExGcd(int a,int b,int &x,int &y){ if(b==0){ x=1; y=0; return

2012-08-20 15:24:32 780

原创 Codeforces 213E - Two Permutations

用线段树维护一段序列的HASH值#include#include#define N 200010#define M 1000003 //prime#define Mod 1000000007 //primetypedef long long ll;using namespace std;ll tem[N],sum,s;int num[N],pos[N];struct T

2012-08-19 23:35:08 1420

原创 Codeforces 216E - Martian Luck

此题用到了非常好的数字的性质/*一个正数的digit root(k进制下,直到得到小于k的数) 等于 正数模k-1(其中k为进制),但是对于digit root为k-1的情况模k-1后即为0*/#include#include#includetypedef long long ll;using namespace std;int main(){ int k,b,n;

2012-08-19 15:54:40 985

原创 POJ 1635

用树的最小表示#include#include#include#includeusing namespace std;string a;char tem[3010];string dfs(int i){ vectorv; int n=a.size(); while(i<n && a[i]!='1'){ v.push_back('0'+dfs(i+1)); i+=v.

2012-08-19 01:15:51 1213

原创 HDU 2604

快速幂取模,快速矩阵幂取模先利用DFA构造转移矩阵详见AC博客http://hi.baidu.com/aekdycoin/item/f3a474a7ee3b0d218919d3ae#include#includeusing namespace std;typedef long long ll;int len,mod;ll tem[6][6];int main(){

2012-08-18 14:37:07 841

原创 HDU 4027 单点更新+“剪枝”

可以看出一个数开方大于等于7次时就一直为1了,利用这点剪枝#include#include#includetypedef long long ll;ll num[100010];struct Tree{ int l,r; ll sum;}tree[400000];void build(int s,int t,int id){ tree[id].l=s;

2012-08-10 21:04:56 763

原创 HDU 4340

树形DP看了这篇文章才懂http://blog.csdn.net/cyberzhg/article/details/7840922#include#include#include#define inf 10000000using namespace std;int c[110][2];int head[110],cnt;int dp[110][2][2];

2012-08-08 17:48:37 1106 1

原创 HDU 2242

有重边的边双连通版本。#include#include#include#include#include//#include//#pragma comment(linker, "/STACK:1024000000,1024000000")//预处理栈,避免栈溢出#define N 10010#define M 20010using namespace std;struct

2012-08-06 21:36:27 1150

原创 POJ 3177

这个题有点问题输入有重边,要先去重,重边算一条边求边双连通和强联通算法一样。#include#include#include#include#include#define N 5010#define M 10100using namespace std;struct edge{ int u,v,next;}edge[M*2];int n,m;int cnt,he

2012-08-06 16:13:59 1054

原创 POJ 1985 && BOJ 196 && HDU 2196

树型DP维护从有根树的顶点出发到叶子的最长距离和次长距离(要保证通过不同的孩子)POJ 1985#include#include#include#includeusing namespace std;int head[40010],cnt;int dp1[40010],dp2[40010];int ans=0;struct Edge{ int v,c,next;}

2012-08-04 00:41:14 1433

原创 poj 1984

带权并查集#include#include#include#includeusing namespace std;int f[40010];int s1[40010],s2[40010]; //s1为水平,s2为竖直int ans[10010];struct Road{ int u,v,c; char dir;}road[40010];struct Que

2012-08-03 21:17:06 1521

原创 HDU 4329

注意点:此题卡在输入有多余空行、回车等需要处理字符串读入cin   scanf("%s")  ,  getline(cin,str)      gets(char)  getline函数包含在string头文件中(注意使用getline函数要配合getchar函数)STL中map若插入相同的关键字,则插入失败,用multimap可避免#include#include#inc

2012-08-03 01:56:38 1355 1

原创 HDU 4334 && ZOJ 3631

都是用到了求分别在两个数组中的两个数使之和满足某个条件方法是先排序,然后用两个指针 i,j 分别指向两个数组的头和尾,再调整移动指针。zoj 3631#include #include #include #include #include using namespace std;int main(){ int i,j,a[50],ans,n,m; int

2012-08-02 20:30:16 1618 1

AC自动机通配符匹配

详细介绍AC自动机原理和通配符匹配原理,值得一看

2014-01-20

空空如也

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

TA关注的人

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