ACM
文章平均质量分 68
leeeyupeng
驰骋沙场,万马行空。
展开
-
poj1511 Invitation Cards Dijkstra+最小堆(heap)
<br /> Dijkstra+最小堆(heap) #include<stdio.h>#define MAX 1000000#define MAXX 1000000000struct 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 · 600 阅读 · 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 · 394 阅读 · 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 · 431 阅读 · 0 评论 -
Message Flood 字典树 小心memset的使用
#include#include#include#includeusing 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 · 419 阅读 · 0 评论 -
Arithmetically Challenged 排列树 子集树 24点问题 回溯 关联容器
#include#include#includeusing 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 · 614 阅读 · 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 · 485 阅读 · 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 · 493 阅读 · 0 评论 -
图论经典题目
<br />1062* 昂贵的聘礼 枚举等级限制+dijkstra1087* A Plug for UNIX 2分匹配1094 Sorting It All Out floyd 或 拓扑1112* Team Them Up! 2分图染色+DP1125 Stockbroker Grapevine FLOYD1135 Domino Effect 最短路1149* PIGS 网络流1161* Walls floyd1201 Intervals 差分约束1236* Network转载 2010-09-12 21:53:00 · 1952 阅读 · 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 · 768 阅读 · 0 评论 -
Drainage Ditches 网络流 最大流 注意有重边 破编译器gcc貌似不要定义这样count max 等好的变量
#include#includeusing namespace std;#define MAX 202int 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 · 665 阅读 · 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 · 818 阅读 · 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 · 579 阅读 · 0 评论 -
简历
<br />转自:http://crazycoder.cn/Bo-abstracts-selected/Article169304.html<br /> <br />前言<br /> 首先,非常感谢众多读者,网友对本BLOG的支持与关注,以及对本人的信赖与支持。今天,正是本BLOG开博半年。刚好,收到了一封来自普通大学的但搞过ACM的同学的一封邮件。本人认真细读了他的来信,也认真的回复了他。<br /> 鉴于他的问题的典型性,能力也比较突出,在征得他本人同意之后,现在,我把这封原邮件+我转载 2011-04-12 16:42:00 · 822 阅读 · 0 评论 -
Poj3635 Full Tank?
/* 从一个城市走到另一个城市,每个城市都有加油站,但是价格不同,油箱大小固定,计算行走过程中的最小花费。1。使用优先队列,标记,链表表示边,二维数组超时2。每次从优先队列中取的最小值,执行 油箱加一操作,if(v + 1 m + Price[c]|| Money[c][原创 2011-09-26 10:22:27 · 1142 阅读 · 0 评论 -
logo 注意使用三角函数
#include//假设起点为00原点#include#includeusing 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 · 701 阅读 · 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 · 433 阅读 · 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 · 2099 阅读 · 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 · 377 阅读 · 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 · 822 阅读 · 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 · 512 阅读 · 0 评论 -
poj1050To the Max 动态规划 +分治 +矩阵压缩 经典
#includeint 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 · 505 阅读 · 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 · 391 阅读 · 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 · 1203 阅读 · 0 评论 -
poj2488 回溯 注意字典 边缘的处理思想
#includebool 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 · 541 阅读 · 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;2x3y4zint 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 · 1026 阅读 · 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 · 524 阅读 · 0 评论 -
poj 3278 Catch That Cow 广度优先搜索 + 回溯 队列 剪枝
#include#include#includeusing 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 · 671 阅读 · 0 评论 -
poj 2676 Sudoku 破水题废了我一天时间 其实一点含量都没有 郁闷。。。想多了。。。
<br />#include<stdio.h>#include<string.h>int a[10][10];bool sign[10][10];//标jibool 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 · 553 阅读 · 0 评论 -
poj 1129 Channel Allocation
<br />#include<stdio.h>#include<string.h>int a[27];//存放i的取值1-26bool b[27];//i是否是新数值,还是从i前面找到的bool arce[27][27];//初始化为真临近为false不临近trueint 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 · 406 阅读 · 0 评论 -
字符串处理 递归
DescriptionLast 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 · 664 阅读 · 0 评论