- 博客(34)
- 资源 (1)
- 收藏
- 关注
原创 POJ 1679 次小生成树
#include#include#include#include#define M 105#define Max 10000000using namespace std;int n,m;int map[M][M];int max_val[M][
2011-07-27 09:28:19 452
原创 POJ 2186
大致思路:算出有多少个强连通分量,再进行缩点处理再判断出度为零的缩点是否唯一#include#include#include#include#include#includeusing namespace std;#define M 10005
2011-07-26 21:58:19 488
原创 POJ 1011 木棒问题
•问题描述: 乔治拿来一组等长的棍子,将它们随机地裁断(截断后的小段称为木棒),使得每一节木棒的长度都不超过50个长度单位。然后他又想把这些木棒恢复到为裁截前的状态,但忘记了棍子的初始长度。请你设计一个程序,帮助乔治计算棍子的可能最小长度。每一节木棒的长度
2011-07-25 20:28:11 1471
原创 深搜 IDA* 算法 POJ2286
文章引用:http://blog.csdn.net/urecvbnkuhBH_54245df/article/details/5856756# 写得真是太好了 而IDA*算法具有如下的特点:(综合了A*算法的人工智能性和回溯法对空间的消耗较少的优点,在一些规模很大的搜索问题中会起
2011-07-24 16:15:29 953
原创 POJ 2287
把双方的马从大到小排序 然后从前往后比较 老田赢了呢 就继续往下比 老田比不过呢 就拉老田最慢的马跟这个比 这里好理解还有比平的情况 比平了还是从后面找一匹马 找的时候 要是老田后面的马可以赢对应位置的马 就接着往前比 然后找到的那匹就跟前面这匹马比不能理解的话看下面这组测试数据
2011-07-23 16:56:36 695
原创 POJ 1204
http://poj.org/problem?id=1204#include#include#define M 1010char ss[M][M];char str[M*2];int L,C,W;int tot;int len[M];int
2011-07-22 22:44:14 654
原创 POJ 1195 二维树状数组
#include#include#define M 1030int c[M][M];int LB[M];int n;void Update(int x,int y,int k){ int i,j; x++; y++; wh
2011-07-21 19:23:38 446
原创 POJ 3630
问给你几个号码中是否有某个号码是其它号码的前缀开始用动态Trie树,果断TLE静态加排序就过了 这是参照别人的代码写的静态Trie树#include#include#includeusing namespace std;struct node{ int next[10];}tre
2011-07-20 09:53:23 458
原创 HDU 1251 基础的Trie树(字典树)
#include#include#includetypedef struct node{ int cnt; node *next[26];}T,*Tree;Tree root;void Insert(char a[]){ int i,j; Tree p=root,NewNode;
2011-07-19 23:11:19 397
原创 POJ 2528
#include#include#includeusing namespace std;int x[10100],y[10100];//bool v[10010];int h[20020];int a[10000010];int num;
2011-07-19 20:47:06 365
原创 POJ3468
#include#define MIN -1000000001struct node{ int l,r; long long sum,lnc;//用__int64WA了无数次 }T[400010];void Init(int l,int r,int id){ T[id].l=l;
2011-07-19 20:36:01 404
原创 POJ 2362 经典的深搜
#include#includeusing namespace std;int aver,n;int a[30];bool v[30];bool cmp(int a,int b){ return a>b; }int dfs(int tot,int sum,int k){ if(t
2011-07-17 22:54:53 566
原创 pku2689 素数查找
#include#include#include#includeusing namespace std;__int64 prime[50000],next=0;bool v[50000],res[10000100];void getprime()//先找50000以内的素数{ _
2011-07-17 19:10:59 457
原创 ZJNU1869
这里贴两篇自己写的代码#includeint map[60][60],n,ans;int f(){ int min[60],v[60]; int i,max,j,k; for(i=0;i<n;i++) {min[i]=1000000;v[i]=0;} min[0]
2011-07-17 19:09:47 408
原创 深搜 字典序
#includeint a[5],sign[5]={0};void dfs(int t){ int i; if(t==4) { for(i=1;i printf("%d ",a[i]); printf("\n"); return; } for(i=1;i { if(!
2011-07-17 19:07:54 498
原创 ZJNU 1903
我的代码:dis:两人财产的差值,p:物品个数total:两人所得财产的总值ans:当前两人所得财产总和的最大值#include #include #include #include #include using namespace std; __int64 a[30
2011-07-17 19:06:54 465
原创 ZJNU 1888
#include#include__int64 a[30];int num=0,cnt=0,n,k;int prim(__int64 a){int i;if(a==1) return 0;else if(a==2) return 1;else for(i=2;iif(a%i==0
2011-07-17 19:05:35 469
原创 ZJNU1909
#include#include#include#includeusing namespace std;char a[30],b[30];bool mark[30];int n;int judge(){int i,j,num;char c;for(i=0;i{c=a[i];for
2011-07-17 19:04:13 410
原创 POJ 3842 大数判断素数 + 位运算优化判重
#include#include#include#include#include#define M 100000.0using namespace std;int len,num=0;int list[10000],p=0;char str[10];bool v[10];int
2011-07-17 19:03:28 926
原创 HDU 1069
题目要求是 , 把给定尺寸的长方体 ( 数量不限 ) 叠在一起 , 能叠加的条件是 , 上面一个长方体的长宽比下面一个长方体的长宽短都短 , 或者一边相等 , 另一边较短 , 长方体可以任意面朝下摆放 , 求这些长方体能够叠成的最高的高度 . 不难看出 , 这题和最长递减子序列很
2011-07-17 19:01:50 408
原创 ZOJ 2972
#include#include#includeusing namespace std;int dp[120][120]//dp[i][j]记录跑过第i段路剩余j能量所需的最小时间; int n,v;int mmin(int a,int b){return a}void ff()
2011-07-17 19:00:24 432
原创 POJ 3126
题目的意思很简单,给你两个素数n,m,求经过几步变化n变到m。每次只改变一位,所得数必须也是素数,并且每个素数只能出现一次 #include#include#includeusing namespace std;bool v[10000];int a[10000],b[1000]
2011-07-17 17:58:52 543
原创 poj 3278 简单的广搜入门
这道题是一道最基础的广度优先搜索题,需要剪枝,否则超时,剪枝时剪掉已经计算过的数,否则会式计算次数成幂指数增长。广度搜索最基本的思想就是遍历每一层,之后遍历下一层,因此剪枝十分重要。我开始考虑用数组来存放到达y所需步数a[y],后发现用队列实现更好,由于队列先入先出的特点,所以使
2011-07-17 17:58:04 689
原创 POJ 3414
大致题意:给你两个容量分别是a,b的瓶子,问你能不能通过以下三种操作倒出c体积的水1. 将瓶子灌满 2. 将瓶子里的水全部倒掉3. a瓶子往b瓶子倒水(a瓶空了或b瓶满了) b瓶子往a瓶子倒水(b瓶空了或a瓶满了)#include#include#include#
2011-07-17 17:56:58 500
原创 POJ 1426
大致题意是: 告诉你一个数n,让你求出一个只由0,1组成的n的倍数,答案可能有多种,输出一种即可简单的宽搜题 #include#include#includeusing namespace std;bool v[300];struct node { int x; int ys;
2011-07-17 17:55:58 423
原创 hdu 2544 最短路 (dijkstra/floyd/spfa)
dijksta:#include#include#include#define MAX 10000000using namespace std;int map[110][110],dist[110];bool v[110];int main(){ int n,m,i,j,k
2011-07-17 17:54:27 427
原创 ZOJ 2833
#includeint fa[100001],cnt[100001];void init(int n){ int i; for(i=1;i { fa[i]=i; cnt[i]=1; }}int getf(int x){ if(fa[x]==x) return x; fa[x]
2011-07-17 17:51:47 637
原创 hdu 1558 并查集 加 判断线段相交
#include#include#include#define eps 1e-8using namespace std;int fa[1010],num[1010];struct node{ double x1,y1; double x2,y2;}seg[1010];
2011-07-17 17:50:56 476
原创 以时间为种子生成随机数
#include#include#includeint main(){ int a[26]; int n,i,c,cas,j; freopen("C:\\Users\\y460\\Desktop\\stdin2.txt","w",stdout); srand(time(0));
2011-07-17 17:47:25 1141
原创 HDU1133 大数乘小数 大数除小数
#include#include#define N 100int a[N+1];void das(int x){ int i,j,ad; a[N]=1; for(i=1;i<=x;i++) {
2011-07-17 17:40:30 1006
原创 HDU 1010 经典深搜+奇偶剪枝
/*奇偶剪枝的重要思想是:如果从当前位置还需要偶数(奇数)的时间才能到达目标位置,而当前剩余的时间数为奇数(偶数),那么即刻退出不再沿着纵深方向继续搜索。略微思考便知:奇偶剪枝的效果是立竿见影的!*/ #include#include#includechar map[10][10
2011-07-17 17:28:04 1084 1
原创 HDU 3400 Line belt 三分
题意:就是给你两条线段AB , CD ,一个人在AB上跑速度p, 在CD上跑q,在其他地方跑速度是r问你从A到D最少的时间是多少#include#include#include#define eps 1e-6#define INF 9999999999.0int P, Q, R;struct point{ double x, y;}A, B,
2011-07-16 21:37:48 482
原创 HDU 2899 求导+二分
http://acm.hdu.edu.cn/showproblem.php?pid=2899指定区间不满足单调性 先求导一阶导数=0的时候就是极大值或者极小值,先要把导数求取来,这时候的变量代进函数,就可以求出极值。具体问题还要看时间情况,是最大值还是最小值 #include#include#include#define eps 1e-7double c
2011-07-16 17:33:28 451
原创 HDU 2199 简单的二分
#include#include#includedouble Y;double solve(double x){return 6*pow(x,7.0)+8*pow(x,6.0)+7*pow(x,3.0)+5*x*x-Y*x;}int main(){ int T; double
2011-07-16 16:43:31 804
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人