ACM
文章平均质量分 68
leeeyupeng
驰骋沙场,万马行空。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
poj1511 Invitation Cards Dijkstra+最小堆(heap)
<br /> Dijkstra+最小堆(heap) #include<stdio.h> #define MAX 1000000 #define MAXX 1000000000 struct edge{ int to; long long val; int next; }e[MAX+1],re[MAX+1]; int vex[MAX+1]; int rvex[MAX+1]; int final[MAX+1]; long long D[MAX+1]; long long dui原创 2010-08-07 11:16:00 · 647 阅读 · 0 评论 -
poj1423 tmd公式
<br />#include<stdio.h> #include<math.h> int stirling(int n); int main() { int k; int n; scanf("%d",&k); while(k--) { scanf("%d",&n); printf("%d/n",stirling(n)); } return 0; } int stirling(int n) { doub原创 2010-08-17 17:49:00 · 436 阅读 · 0 评论 -
hku2585 hotel
<br />#include<stdio.h> #include<string> bool pipei(bool c[52][52],char a[52],char b[52],int m,int n) { if(c[m][n]==true)return false; if(m==0) { if(a[m]=='*')return true; else if(a[m]=='?'&&n==0)return true; else if(n==0&&a[m]==b[n])r原创 2010-08-22 17:22:00 · 477 阅读 · 0 评论 -
Message Flood 字典树 小心memset的使用
#include #include #include #include using namespace std; int tr[200000][27]; int num; int tri(char temp[11]) { int i=0;int loc=0; while (i原创 2010-08-20 13:33:00 · 453 阅读 · 0 评论 -
Arithmetically Challenged 排列树 子集树 24点问题 回溯 关联容器
#include #include #include using namespace std; set s; int a[20]; int kkk; void backtrack1(int k); void backtrack2(int k); void swap(int &x,int &y); bool ff(int i,int k,int j); void swap(int &x,int &y) { int temp; temp=x; x=y; y=temp;原创 2010-08-25 11:31:00 · 667 阅读 · 0 评论 -
Bridging signals 如果f(i)只和i-1有关系 可以使用两个一维数组 交替循环
<br />#include<stdio.h> #include<string.h> int a[2][40002]; int n; int b[40002]; int DP() { int x=1; int i; for(i=0;i<=n;i++) a[0][i]=0; while(x<=n){ int k,kk; k=x%2;kk=(x+1)%2; for(i=1;i<b[x];i++) a[k][i]=a[kk][i]; f原创 2010-08-30 17:10:00 · 530 阅读 · 0 评论 -
Common Subsequence 动态规划 不难 但是犯了个错误刚开始 没用标记数组 直接使用a判断 是否为零 结果是测试数据有很多key为零 超时
<br />#include<stdio.h> #include<string.h> int a[512][512]; bool sign[512][512]; char b[512],c[512]; int DP(int x,int y) { if(x<0||y<0)return 0; if(sign[x][y])return a[x][y]; int max;int temp; max=DP(x-1,y); temp=DP(x,y-1); if(temp>m原创 2010-08-30 15:44:00 · 547 阅读 · 0 评论 -
图论经典题目
<br />1062* 昂贵的聘礼 枚举等级限制+dijkstra 1087* A Plug for UNIX 2分匹配 1094 Sorting It All Out floyd 或 拓扑 1112* Team Them Up! 2分图染色+DP 1125 Stockbroker Grapevine FLOYD 1135 Domino Effect 最短路 1149* PIGS 网络流 1161* Walls floyd 1201 Intervals 差分约束 1236* Network转载 2010-09-12 21:53:00 · 2026 阅读 · 0 评论 -
Dominos 拓扑排序 强连通 缩点
<br />#include<iostream> #include <stdio.h> #include<queue> #include<stack> using namespace std; int a[100002][2];//0:next0,以i为头的边链表,1:next1,以i为尾的边链表; bool sign[100002]; int arce[100002][4];//0:i条边的头,1:next0,2:i条边的尾,3:next1; int ccount ; int n,m;原创 2010-09-01 22:00:00 · 814 阅读 · 0 评论 -
Drainage Ditches 网络流 最大流 注意有重边 破编译器gcc貌似不要定义这样count max 等好的变量
#include #include using namespace std; #define MAX 202 int e[MAX][MAX]; int n; int m;//n是边的个数,m是点的个数 bool sign[MAX]; int path[MAX]; bool signn; int countt; int maxx; void DFS(int k) { sign[k]=true;countt++;path[countt]=k; if(k==m){sig原创 2010-09-03 19:42:00 · 716 阅读 · 0 评论 -
Greatest Number 山东省第一届ACM程序设计大赛
#include #include using namespace std; int tmax;//当前得到的值 int num,mmax; int maxx; //当前下得到的最大值 struct myComp { bool operator()(const int &a,const int &b) { if(a!=b) return a>b; else return a>b; }原创 2010-11-22 08:31:00 · 858 阅读 · 0 评论 -
Running Median 2009 Greater New York Regional
<br />#include<iostream> #include<set> using namespace std; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { int test; int inme; cin>>test>>inme; multiset<int> s;原创 2010-11-22 08:46:00 · 620 阅读 · 0 评论 -
简历
<br />转自:http://crazycoder.cn/Bo-abstracts-selected/Article169304.html<br /> <br />前言<br /> 首先,非常感谢众多读者,网友对本BLOG的支持与关注,以及对本人的信赖与支持。今天,正是本BLOG开博半年。刚好,收到了一封来自普通大学的但搞过ACM的同学的一封邮件。本人认真细读了他的来信,也认真的回复了他。<br /> 鉴于他的问题的典型性,能力也比较突出,在征得他本人同意之后,现在,我把这封原邮件+我转载 2011-04-12 16:42:00 · 886 阅读 · 0 评论 -
Poj3635 Full Tank?
/* 从一个城市走到另一个城市,每个城市都有加油站,但是价格不同,油箱大小固定,计算行走过程中的最小花费。 1。使用优先队列,标记,链表表示边,二维数组超时 2。每次从优先队列中取的最小值,执行 油箱加一操作,if(v + 1 m + Price[c]|| Money[c][原创 2011-09-26 10:22:27 · 1204 阅读 · 0 评论 -
logo 注意使用三角函数
#include//假设起点为00原点 #include #include using namespace std; double startx,starty;//当前开始坐标 double fx,fy;//方向 double distance;//距离 double pi=acos(-1); void move(double &startx,double &starty,double fx,double fy,int d)//求前进后的坐标 { startx+=d*fx原创 2010-08-18 16:59:00 · 748 阅读 · 0 评论 -
Virtual Friends 字典树 并查集
<br />#include<stdio.h> #include<string.h> int fnum[200001];//父节点里面存放本集合内的元素个数 int bing[200001];//并查集使用 int tri[10000][53];//字典树 int tnum=0; int find(int k) { if(bing[k]!=k) bing[k]=find(bing[k]); return bing[k]; } void cinn(char temp[21])原创 2010-08-19 07:09:00 · 474 阅读 · 0 评论 -
ACM POJ 3463 Sightseeing
题目大意:求源点S到终点T的最短路的数量和比最短路长1的数量。解题思路:我们可以利用dijstra算法的思想,只需在其中进行一些改进即可。可以先定义一个二维的数组dist[N][2]。dist[i][0]代表源点S到点i的最短路,dist[i][1]代表源点S到点i的次短路。初始化dist[S][0]=0,其余的都初始化为无穷大。然后定义一个二维数组waynum[N][2]记录路径方法数,waynum[S][0]=1,其余初始为0。再定义一个标记数组vis[N][2],初始vis[S][0]被标记已访问,其原创 2010-08-05 16:15:00 · 2174 阅读 · 3 评论 -
poj3356AGTC
<br />多case 动态规划 备忘录 scanf返回值<br />#include<stdio.h> char a[1001]; char b[1001]; int c[1001][1001]; int f(int x,int y); int main() { int A,B; int i,j; while(scanf("%d",&A)!=EOF){ for(i=0;i<=A;i++)scanf("%c",&a[i]); scanf("%d",&B); for(i=0原创 2010-08-10 15:31:00 · 422 阅读 · 0 评论 -
poj1088滑雪
<br />动态规划+最小堆排序 最小堆空间的分配 判断句的嵌套 和&&注意了 <br />#include<stdio.h> int a[101][101]; int b[101][101]; int dui[10001][3]; int x,y; int r,c; int sizenum=0; int dele(); void adjust(int i); void insert(int a1,int a2,int a3); int f(int n); int main()原创 2010-08-10 18:52:00 · 863 阅读 · 0 评论 -
poj2503Babelfish字典树
<br />#include<stdio.h> int str[200000][27];//数组大小? char strr[100000][11];//存放字符串 char temp[11]; char t[11]; int init(); int p(char * a); int main() { init(); while(1) { p(temp); if(scanf("%s",temp)!=1)break; } return 0;原创 2010-08-11 13:03:00 · 554 阅读 · 0 评论 -
poj1050To the Max 动态规划 +分治 +矩阵压缩 经典
#include int a[100][100]; int n; int max1(int c[100]); int sumij(int i,int j); int init(); int max2(); int main() { init(); printf("%d/n",max2()); return 0; } int max2() { int i; int j; int summax=0; for(i=n-1;i>=0;i--) for(j=i;原创 2010-08-11 16:10:00 · 543 阅读 · 0 评论 -
poj 2533Longest Ordered Subsequence
<br />#include<stdio.h> int f(int i); int A[1000+1]; int B[1000+1]; int main() { int k; k=1; int temp=k; while(k--) { int n; int max=0; scanf("%d",&n); int i; for(i=1;i<=n;i++)scanf("%d",&A[i]),B[i]=0; f(n);原创 2010-08-10 10:59:00 · 439 阅读 · 0 评论 -
poj1050To the Max 枚举的程序 严重超时 wa 浪费了大量时间,但分配数组的时候学到了点东东
<br />#include <stdio.h> char a[5050][5050]; bool c[5050][5050]={false}; int b[100][100]; int n; int to(int x1,int x2); int sum(int x1,int x2,int y1,int y2); int init(); int f(int x1,int x2,int y1,int y2); int main() { init(); printf("%d/n",f原创 2010-08-11 16:14:00 · 1253 阅读 · 0 评论 -
poj2488 回溯 注意字典 边缘的处理思想
#include bool a[30][30];//标志 char way[678][2];//路径 int k; int p,q; bool f(int x,int y); void init(); int main() { int n; scanf("%d",&n); int i=1; while(i原创 2010-08-12 13:21:00 · 579 阅读 · 0 评论 -
poj3099 Go Go Gorelians 建图 DFS 回溯
<br />#include<stdio.h> #include "math.h" int e[2001][2];//边[0],to.[1]next; int a[1001][5];//点[0],ID,[1]next;2x3y4z int c[1001]; int cnum; int max;int m; bool sign[1001]; int n;//点的数目 int en;//边的数目 void initt(); void init(); int DFS(int s); in原创 2010-08-12 20:01:00 · 1125 阅读 · 0 评论 -
poj1321棋盘问题
<br />#include<stdio.h> bool arce[9][9]; bool isign[9]; bool jsign[9]; int num; int n,k,kk; void init(); bool DFS(int h); int A(int k); int main() { while(scanf("%d%d",&n,&k)) { if(n==-1&&k==-1)break; int c=0;int i; init(); for(i=原创 2010-08-13 11:07:00 · 563 阅读 · 0 评论 -
poj 3278 Catch That Cow 广度优先搜索 + 回溯 队列 剪枝
#include #include #include using namespace std; int num; int sign=100000;//当kk>k的时候剪枝 int n,k; bool c[100001];//记录是否已经使用过 vector test[2];//队列交替 vector::iterator t; int DFS(); int main() { scanf("%d%d",&n,&k); if(n>=k){printf("%d",n-k);retu原创 2010-08-13 15:21:00 · 720 阅读 · 0 评论 -
poj 2676 Sudoku 破水题废了我一天时间 其实一点含量都没有 郁闷。。。想多了。。。
<br />#include<stdio.h> #include<string.h> int a[10][10]; bool sign[10][10];//标ji bool ssign;//标记是否已经得到结果 bool isign[10][10];//第i行中1-9是否已经填入 bool jsign[10][10];//第j列中1-9是否已经填入 bool ijsign[4][4][10];//小方块中1-9是否已经填入 int N=9; void init(); int iDFS(原创 2010-08-14 16:24:00 · 598 阅读 · 0 评论 -
poj 1129 Channel Allocation
<br />#include<stdio.h> #include<string.h> int a[27];//存放i的取值1-26 bool b[27];//i是否是新数值,还是从i前面找到的 bool arce[27][27];//初始化为真临近为false不临近true int n; int num=0; int min=26; void init(); int DFS(int k); int main() { while(scanf("%d",&n)==1)原创 2010-08-16 08:47:00 · 439 阅读 · 0 评论 -
字符串处理 递归
Description Last year summer Max traveled to California for his vacation. He had a great time there: took many photos, visited famous unive原创 2011-09-26 14:30:14 · 714 阅读 · 0 评论
分享