自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

寻死的兔子

窄门通向永生

  • 博客(65)
  • 收藏
  • 关注

原创 hdu1518 Square

#include#include#include#includeusing namespace std;bool used[30];int a[30];int m,len;bool dfs(int isin,int cur,int k){ if(isin==3) return 1; int i; for(i=k;i>=1;i--){ if(used[i]==1) cont

2013-05-29 19:14:02 464

原创 poj1251 hdu 1301 Jungle Roads

#include#include#includeusing namespace std;int dis[28][28];int cost[28];int n;int prim(int s){ int i,j; for(i=0;i<n;i++) cost[i]=dis[s][i]; cost[s]=-1; int sum=0; int mini; for(i=0;i<n

2013-05-29 10:25:22 471

原创 sdut2560 又见回文

这题需要处理空格#include#include#includeusing namespace std;char a[100005];int main(){ int l,r; int flag; while(gets(a)){ flag=0; l=0; if(strcmp(a,"2013")==0) break; r=strlen(a)-1; for(

2013-05-28 21:28:31 729

原创 sdut1916 字符串扩展

#include#include#includeusing namespace std;char a[1005];int main(){ int t; int len; int i,j; scanf("%d",&t); getchar(); while(t--){ gets(a); len=strlen(a); printf("%c",a[0]); for(i

2013-05-28 21:25:28 531

原创 sdut2167 Mathman Bank

这种题考的是细心strcmp()和memcpy()都能实现字符串的复制,但两者还是有明显区别的,详见http://www.cnblogs.com/stoneJin/archive/2011/09/16/2179248.html#include#include#includeusing namespace std;struct cell{ char name[15]; char

2013-05-28 21:23:32 569

原创 sdut2163 Identifiers

scanf()和gets()混用可能会产生冲突,详见http://hi.baidu.com/sky_space/item/54864a1b9fcd0d9e99ce33ce#include#include#includeusing namespace std;int main(){ char a[101]; int s=1,t,len; int i; scanf("%d",&t)

2013-05-28 21:18:36 450

原创 poj1988 Cube Stacking

#include#include#includeusing namespace std;int root[30005],all[30005],tail[30005];int find(int c){ if(root[c]==c) return c; int ori=find(root[c]); tail[c]+=tail[root[c]]; //压缩路径时可能会改变当前结点所指

2013-05-28 19:49:49 517

原创 sdnuoj1012 区间合并

1012.区间合并Time Limit: 1000 MS    Memory Limit: 32768 KBTotal Submission(s): 75    Accepted Submission(s): 15Description给定n个开区间,合并他们中的重合者,输出合并后的区间数量。Input第一

2013-05-27 20:31:56 980

原创 sdnuoj1011 盒子与球

1011.盒子与球Time Limit: 1000 MS    Memory Limit: 32768 KBTotal Submission(s): 39    Accepted Submission(s): 14Description现有r个互不相同的盒子和n个互不相同的球,要将这n个球放入r个盒子中,且不允许有空盒子。则有多少种放法?

2013-05-27 20:29:25 1122

原创 sdnuoj1032 机器人

1032.机器人Time Limit: 1000 MS    Memory Limit: 65536 KBTotal Submission(s): 34    Accepted Submission(s): 7DescriptionSYC喜欢宅在家里,但又不喜欢清理垃圾,有一天实在看不下去了,就把好友ZZK和LG叫来帮忙。没想到他俩更懒,把各自的

2013-05-27 20:25:10 823

原创 高阶幂取模问题

056.A ^ B PROBLEMTime Limit: 1000 MS    Memory Limit: 32768 KBTotal Submission(s): 80    Accepted Submission(s): 25Description给定三个数A, B, K, 求 A的B次方除以K的余数 。Input

2013-05-27 20:09:30 1195

原创 sdut2164 Binomial Coeffcients

不懂的太多了!对于此题:1. c [i] [j] = c [i-1] [j-1] + c [i-1] [j] 2. mod操作满足加法性质,即(a + b) mod c = ( (a mod c) + (b mod c) ) mod c详见大神blog:http://hi.baidu.com/aekdycoin/item/e051d6616ce60294c5d249d7#i

2013-05-26 14:42:26 435

原创 poj2236 Wireless Network

#include#include#includeusing namespace std;struct cell{ bool set; int x;int y;}a[1010];bool vis[1010][1010];int root[1010];int n,d;bool dis(cell a,cell b){ if((a.x-b.x)*(a.x-b.x)+(a.y-b.y

2013-05-24 22:09:39 398

原创 hdu4513 吉哥系列故事——完美队形II

终于AC了,最长回文串的变形#include#include#includeusing namespace std;int a[200010];int p[200010];int cnt;int manacher(){ int i,mx=0,id,ans=-1; for(i=1;i<=cnt;i++){ if(mx>i) p

2013-05-24 00:35:55 1303

原创 poj3041 Asteroids

#include#include#includeusing namespace std;bool a[505][505];bool used[505];int mat[505];int n;bool crosspath(int k){ int i; for(i=1;i<=n;i++) if(a[k][i]==1&&used[i]==0){ used[i]=1;

2013-05-23 20:49:42 539

原创 poj1469 COURSES

#include#include#includeusing namespace std;bool a[105][305];bool used[305];int mat[305];int p,n;bool crosspath(int k){ int i; for(i=1;i<=n;i++) if(a[k][i]==1&&used[i]==0){ used[i]=1;

2013-05-23 20:33:40 434

原创 poj2421 Constructing Roads

可以将已经建好的路初始化为路程为0(这样在进行prim算法求最小生成树时已经建好的路会被首先加入进去,并且不会对我们所要求的还需建设的路径长度有贡献),那么为了避免混淆,到达自身的路程就不能再做初始化为0处理了,这里全都初始化为无穷大,剩下的就是朴素的prim算法了。#include#include#include#define INF 0x3f3f3f3fint ma[105][10

2013-05-23 00:23:27 544

原创 sdut2152 Balloons

#include#include#includeusing namespace std;char a[101][101];bool fs[101][101],fk[101][101];int n;void dfss(int x,int y){ if(x=n||y=n||a[x][y]=='0'||fs[x][y]==1) return; fs[x][y]=1; dfss(x

2013-05-23 00:05:05 423

原创 poj1325 Machine Schedule

这题算是歪打正着,由于我的for循环都是从1开始,所以很巧合的把在0模式的job都给排除了,交完之后看了下discuss才发现这个问题,for循环从0开始的话需要讨论一下for(int i=0;i<k;i++){ scanf("%d%d%d",&cur,&ja,&jb); if(ja*jb!=0) a[ja][jb]=1;}我的AC代码#include

2013-05-22 20:47:28 411

原创 hdu2222 Keywords Search

AC自动机模板题#include#include#includeusing namespace std;struct node{ node *fail; node *next[26]; int count;}*q[500001];char keyword[51];char str[1000001];int head,tail;void insert(char str[]

2013-05-22 19:34:37 486

原创 单词统计 (AC自动机)

1118.单词统计Time Limit: 1000 MS    Memory Limit: 32768 KBTotal Submission(s): 12    Accepted Submission(s): 1Description给定一个字符串和若干个单词,统计这些单词在这个字符串中出现的次数。Input

2013-05-22 19:30:47 699

原创 poj1274 The Perfect Stall (匈牙利算法)

匈牙利算法模板题目大牛的blog  http://www.byvoid.com/blog/hungary/#include#include#includeusing namespace std;bool a[205][205];int mat[205];bool used[205];int n,m;bool crosspath(int k){ int i; for(

2013-05-22 18:47:23 507

原创 hdu3068 最长回文 poj3974 Palindrome(Manacher算法)

#include#include#include#includeusing namespace std;char a[110005],str[220010];int p[220010];int cnt;void Manacher(){ int i,mx=0,id; for(i=1;i<cnt;i++){ if(mx>i) p[i]=min(p[2*i

2013-05-21 23:56:52 574

转载 Manacher算法

转自http://acm.uestc.edu.cn/bbs/read.php?tid=3258O(n)回文子串算法O(n)回文子串算法    这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法.原文地址:http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-

2013-05-21 21:47:42 408

原创 hdu4512 吉哥系列故事——完美队形I

准备知识:最长公共上升子序列 http://www.clarkok.com/blog/?p=353#include#include#includeusing namespace std;int main(){ int a[210],f[210]; int t,n; int i,j,k,ans; scanf("%d",&t); while(t--){ memset(f,0,

2013-05-21 20:05:30 451

原创 【模板】最长公共上升子序列

Description:给定两个序列A,B,其长度分别为N,M,现在要你求出这两个序列中最长的一个公共子序列,并使这个子序列递增。比如数列{1,2,0,4,5}和{1,0,4,5,2},其最长公共上升子序列就是{1,4,5},长度为3。Input:第一行:一个N;第二行:N个数,为数列A;第三行:一个M;第四行:M个数,为数列B。Output

2013-05-21 18:54:13 585

原创 sdut2157 Greatest Number

Greatest NumberTime Limit: 1000ms   Memory limit: 65536K 题目描述    Saya likes math, because she think math can make her cleverer.    One day, Kudo invited a very simple game:

2013-05-21 00:18:51 637

原创 poj2576 tug of war

二维费用背包,不能使用滚动数组!#include#include#include#define max(x,y) (x>y?x:y)using namespace std;int f[51][23000],a[101];int main(){ int n,i,j,k; scanf("%d",&n); int side=(n+1)/2,sum=0; for(i=1;i<=n;i+

2013-05-19 16:22:25 711

原创 hdu1232 畅通工程

#include#includeint father[1001];int n,m;int find(int c){ if(father[c]!=c) father[c]=find(father[c]); return father[c];}void uun(int a,int b){ int aa=find(a); int bb=find

2013-05-19 01:16:02 424

原创 hdu1047 Integer Inquiry

#include#include#includeusing namespace std;int main(){ char a[110],b[110],c[110],c1[110]; int n,ii; int i,j; int k,up; scanf("%d",&n); for(ii=0;ii<n;ii++){ mem

2013-05-19 01:13:10 412

原创 sdut2151 Phone Number

用trie树做的#include#include#includeusing namespace std;struct node{ bool set; node *next[10]; node(){ set=0; memset(next,NULL,sizeof(next)); }};char a[1010];bool flag=0;void insert(char s

2013-05-19 01:08:06 522

原创 sdut2158 Hello World!

#include#include#include#includeusing namespace std;struct node{ int x;int y;}list[1002],list1[1002];bool cmp(node a,node b){ if(a.x==b.x) return a.y<b.y; else return a.x<b.x;}int main

2013-05-19 01:06:05 539

原创 hdu4159 郑厂长系列故事——体检

#include#include#includeusing namespace std;int main(){ int t,k,m,n; scanf("%d",&t); while(t--){ scanf("%d%d%d",&k,&m,&n); if(k<=n){ printf("%d\n",m);

2013-05-19 01:03:42 525

原创 hdu1272 小希的迷宫 hdu1856 More is better

之所以把这两题放一块看是因为寻找祖先结点是有区别的,不然一个爆栈,一个TLEhdu1272 小希的迷宫#include#include#includeusing namespace std;int root[100001],foot[100001];int find(int t){ //不能用递归寻找祖先借点,不然会爆栈,汗 while(root[t]!=t)

2013-05-18 01:47:07 487

原创 poj2262 Goldbach's Conjecture

#include#include#includeusing namespace std;bool judge(int c){ int i; bool flag; if(c%2==0) return 0; for(i=3,flag=1;i*i<=c;i+=2) if(c%i==0){ flag=0; break; } if(flag) return 1;

2013-05-14 20:54:14 385

原创 hdu4427 Math Magic

#include#include#includeusing namespace std;const int MOD=1000000007;int dp[2][1010][1010];int num[1000],LCM[1010][1010];int gcd(int a,int b){ if(b==0) return a; return gcd(b,a%b);}in

2013-05-13 20:56:25 764

原创 hdu3172 Virtual Friends

并查集题目用map映射的代码跑了1100多ms,而采用trie树保存人名的代码仅跑了203ms。采用map映射#include#include#include#includeusing namespace std;int root[10010],sign[10010];maplist;int find(int c){ if(root[c]!=c) root[c]=f

2013-05-13 20:29:55 462

原创 hdu2159 FATE

初看是背包问题,但没有往二位费用背包上想。对于最多的杀怪数为k的条件尝试增加一维,dp[i][j]中j表示已杀的怪的数目,得到状态转移方程dp[i][j]=max(dp[i][j],dp[i-1][j-b]+a),每种怪的数目不限,对于第一维[i]是完全背包问题,采用完全背包的顺序循环方式,这样看状态转移方程第二维[j]似乎不是表示已杀的怪的数目,思路在这被卡住了。翻看了一下背包九讲找到了这个问题

2013-05-11 17:14:13 484

原创 hdu1829 A Bug's Life

#include#include#includeusing namespace std;int father[2001];bool relative[2001];int find_root(int c){ if(father[c]!=c){ int ori=father[c]; father[c]=find_root(father[c]); relative[c]=(re

2013-05-10 19:11:57 475

原创 sdnuoj 1060 找第K大数

1060.找第K大数Time Limit: 1000 MS    Memory Limit: 32768 KBTotal Submission(s): 109    Accepted Submission(s): 22Description给定 n(1 Input第一行,两个整数n, K,第二行n个整数

2013-05-08 18:56:52 756

空空如也

空空如也

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

TA关注的人

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