摘要: 生活 阅读全文
posted @ 2011-08-28 00:54 →木头← 阅读(346) 评论(0) 推荐(0) 编辑
  2012年11月28日
摘要: 本博已停用,现在的博客是www.huangshuquan.info 阅读全文
posted @ 2012-11-28 21:33 →木头← 阅读(578) 评论(0) 推荐(0) 编辑
  2012年2月10日
摘要: 第一次遇到的时候,这个题目完全没思路,看了人家的解题报告才做,,也不行,各种TLE。。也没什么想法。。只能借鉴别人的了。。看完这个应该可以彻底的理解这个题目的。。:http://apps.hi.baidu.com/share/detail/17119728下面是我的代码:#include<iostream>#include<stdlib.h>#include <string.h>using namespace std;#define N 70int sticks[N];//用来存放木棒的长度int used[N];//用来记录木棒是否使用过int n,cnt 阅读全文
posted @ 2012-02-10 17:06 →木头← 阅读(399) 评论(0) 推荐(0) 编辑
  2012年2月8日
摘要: 题意:给你一个数,,求有几种方法可以用连续的素数相加的和而成。。直接打个素数表,然后DFS。。简单题。。#include <iostream>using namespace std;int p[1250],pnum;int n;bool u[10006];void getprim()//素数表。。{ int i,j; int k,x,m=(10003+1)>>1; p[0]=2,p[1]=3;pnum=2; for(i=3;i<=m;i+=3) for(j=0;j<2;j++) { x=2*(i+j)-1; while(u[x]==0) { p[pnum++ 阅读全文
posted @ 2012-02-08 22:41 →木头← 阅读(196) 评论(0) 推荐(0) 编辑
  2012年2月6日
摘要: //简单KM,,要注意的是XOR是异或的意思。。不要看不懂。。我看了半天才知道。。//这个知道了就可以很简单的KM了。。这个题目也可以用最小费用最大流来做。。但是图比较难建。。#include <iostream>#include <stdio.h>#define MAX 105#define min(a,b) a<b?a:b #define max(a,b) a>b?a:b int lx[MAX],ly[MAX],match[MAX],visx[MAX],visy[MAX],lack,g; int map[MAX][MAX]; using namespac 阅读全文
posted @ 2012-02-06 13:41 →木头← 阅读(312) 评论(0) 推荐(0) 编辑
  2012年2月4日
摘要: //农田里有M条路,有W条虫洞。。判断有没有负环。。用Bellman-ford算法。。#include <iostream>using namespace std;#define MAX 999999#define EDGE_MAX 50000//边数最大值#define VER_MAX 10000//顶点个数最大值struct Edge{int x,y,v;//边:起点、终点、权值};Edge edge[EDGE_MAX];//存储所有的边int m;//实际边的个数int n;//顶点个数int W;int i,j,k,t;int dist[100000];bool bellm 阅读全文
posted @ 2012-02-04 20:50 →木头← 阅读(140) 评论(0) 推荐(0) 编辑
摘要: //总结:想到应该马上敲,,不要在那里犹豫,,推什么狗屁公式、。、先敲再说。。//推一个敲一个。。不然时间会被耗光。。就是这样。。//就考个物理公式,,然后要一步一步来,,理清题目的要求的。。题目给出3种鸟的飞行方式,,然后求飞行距离。。#include<stdio.h>#include<iostream>#include<math.h>using namespace std;const double G=9.8;int main(){ double H; while(cin>>H) { char ch[10]; scanf("%s&q 阅读全文
posted @ 2012-02-04 20:28 →木头← 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 题意显而易见,不说了。。注意下排列的顺序就好,。。用的是库函数。。#include <iostream>#include <algorithm>using namespace std;int main(){int a[4],i;int cas=0;while(scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3])!=EOF){if(a[0]==0&&a[1]==0&&a[2]==0&&a[3]==0)break;if(cas!=0)cout&l 阅读全文
posted @ 2012-02-04 20:18 →木头← 阅读(266) 评论(0) 推荐(0) 编辑
  2012年2月3日
摘要: //这个题目第一次遇到的时候不会。。然后看了大神的解题报告才懂的。。 //N个城市,M条路。。有Q个任务。。,求最少需要几个人才能完成任务。。先用FLOYD出任意两点的最短距离、、然后根据每个任务的时间排序。。然后拆点建边、、 阅读全文
posted @ 2012-02-03 21:41 →木头← 阅读(242) 评论(0) 推荐(0) 编辑
  2012年2月2日
摘要: //公司有M个顾客,给出每个顾客的发车时间,和起点和终点,如果第i个顾客 //到达之后而第j个顾客还没出发,那么第i辆车就可以去送第j个顾客。。求最少要几辆车。 //这样就比较容易想到最短路径覆盖了。。最短路径覆盖=顶点数-最大匹配数。把可以两个顾客一辆车送的连起来,然后匈牙利算法好了。。 阅读全文
posted @ 2012-02-02 21:48 →木头← 阅读(226) 评论(0) 推荐(0) 编辑
摘要: //基本上能想到二分匹配就能做得出来了。。把第j门课与星期a的第b节课相连,,然后匈牙利算法就直接出来了。。#include <iostream>#include <stdio.h>#include <string.h>using namespace std;int const maxn=500;int mk[maxn] ;int nx, ny;//X和Y集合中顶点的个数int g[maxn][maxn];//邻接矩阵, X集合和Y集合中顶点间边的信息int cx[maxn] , cy[maxn];//cx[i]表示最终求得的最大匹配中与Xi匹配的Y顶点, 阅读全文
posted @ 2012-02-02 16:57 →木头← 阅读(217) 评论(0) 推荐(0) 编辑