
省赛之后
文章平均质量分 59
lazy_virus
这个作者很懒,什么都没留下…
展开
-
poj1942——Paths on a Grid//大数的C(n,m)
组合数学问题,求解c(n,m).数据类型要求甚严。用吉林模板的话,会tle。#includeusing namespace std;double com(double n,double m){ double i; double s(1); if(n>=m-n) n=m-n; for(i=m;i>=m-n+1;i--) { s*=(i/(i-(m-n))); } return s;}int main(){ double n,m; while原创 2011-05-10 21:02:00 · 560 阅读 · 0 评论 -
poj1423——Big Number//Stirling公式
<br />题意:求N!的位数。<br />思路:1,Stirling公式 <br /> 2,一个数X的位数是由log10(X)取整后加1得到。<br />#include<iostream>#include<cmath>using namespace std;#define pi 3.1415926535897932#define e 2.7182818284590452354#define e1 exp(1.0)int main(){ int test;原创 2011-05-05 23:45:00 · 488 阅读 · 0 评论 -
poj1226——Substrings//KMP
kmp解法。PS:本人认为正确的kmp写法,网上的kmp样式太多了。#include#includeusing namespace std;class node{public: char str[110];};node st[110];int n;void getnext(char s[],int next[],int len){ int原创 2011-06-30 16:47:00 · 425 阅读 · 0 评论 -
poj1675——Happy Birthday!//atan2求角度
<br />题意:判断能否把三个点划分在圆的三个均等区域内。<br />思路:利用atan2(y,x)求角度,求出的范围为-pi~pi。逆时针的角度为正。判断每两个点之间的夹角是否大于120。这边的夹角指的是两个点之间,能把第三个点包含进去的那个方向。atan()不能计算(0,0)的情况,所以,(0,0)的情况单独判断。<br />#include<iostream>#include<cmath>#include<cstdio>#include<algorithm>using namespa原创 2011-05-09 18:41:00 · 1063 阅读 · 0 评论 -
poj2602——Superlong sums
<br />果然恶心,用字符串输出才过得了...<br />#include<stdio.h>#define MAX 1000000char a[2][MAX], sum[MAX];int main(){ int n, i; scanf("%d", &n); for(i=0; i<n; i++) { scanf("%d", &a[0][i]); scanf("%d", &a[1][i]); }原创 2011-05-10 01:22:00 · 521 阅读 · 0 评论 -
poj1455——Crazy tea party
<br />学校百年校庆... 好几天没A题了的说。<br />此题模拟下,算出每对需要移动的最小step即可。<br />#include<iostream>#include<cstdio>#include<string>using namespace std;void solve(int n,int t){ int i,len=n/2,sum=0; int step,st; for(i=1;i<=len;i++) { int m=n+1-i;//对应位置原创 2011-05-09 14:40:00 · 498 阅读 · 0 评论 -
poj1661——Help Jimmy//最短路
<br />思路:转化为求最短路。建图比较麻烦,每一个平台拆成两个点,上下两个平台之间距离不超过maxlen的点加边。<br />#include<iostream>#include<cstdio>#include<string>#include<algorithm>using namespace std;#define maxn 2100#define maxcost 99999999int maxlen,sx,sh,n,st,ed;class node{publi原创 2011-05-09 16:42:00 · 459 阅读 · 0 评论 -
poj 2121——Inglish-Number Translator
<br />题意:将英文数字翻译为阿拉伯数字。囧!结束条件忘了判断,贡献两wa。<br />#include<iostream>#include<cstdio>#include<string>using namespace std;char to20[][20]={"zero", "one", "two", "three", "four", "five", "six","seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen原创 2011-05-09 20:28:00 · 840 阅读 · 0 评论 -
poj1811——Prime Test//素数判断+整数分解因子
题意:给定N,如果N为素数,输出“Prime”,否则输出其最小因子。思路:用miller_rabin判断素数,pollardRho用于整数因子的分解。整数因子分解还有一个更快的算法:SQUFOF。#include#include#include#include#include#define time 8#define call 200using namespace std;__in原创 2011-07-02 19:33:00 · 799 阅读 · 0 评论 -
poj1269——Intersecting Lines//直线交点
判断两直线的位置:或重合,或平行,或相交。用叉积搞定。框架,求交点算法自己实现。#includeusing namespace std;const double epx=1e-10;struct Point{ double x; double y;};原创 2011-07-08 15:01:36 · 518 阅读 · 0 评论 -
poj3720——Occurrence of Digits//循环节
#includeusing namespace std;#define esp 1e-10int ans[102][11];int vis[1000];void getans(int n){ int now=10; memset(vis,0,sizeof(vis)原创 2011-07-10 19:46:11 · 721 阅读 · 0 评论 -
poj3715——Blue and Red//最小顶点覆盖
看题的时候,看不出这是最小顶点覆盖,悲剧。注意点:1,顶点从0开始,所以,my[]的标记不能以0为标准。 2,枚举法确实很不错。#include#includeusing namespace std;int n,m;int f[220];c原创 2011-07-12 12:10:27 · 706 阅读 · 0 评论 -
poj2914——Minimum Cut//最小割Stoer_Wagner
题意:求最小割。起初用最大流算法求最小割,但没有枚举汇点,结果WA。后来,搜了报告,才知道不能用最大流算法求,会TLE。参考:Stoer_Wagner讲解 算法过程#include #include #include #include #include #incl原创 2011-07-14 15:54:36 · 554 阅读 · 0 评论 -
堆排序算法实现
闲着无聊,实现下堆排序算法。此堆为大根堆,实现升序排序功能。#include #include #include #include #include #include #include #include #include using namespace std原创 2011-07-16 10:15:10 · 428 阅读 · 0 评论 -
表达式计算//java类
昨天,看到一求助表达式计算的帖子,才知道,原来java里有封装了这样的类。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import jav原创 2011-07-18 08:18:52 · 617 阅读 · 0 评论 -
poj1716——Integer Intervals//差分约束系统
对于差分约束系统,注意:1,加入源点,保证其他每个顶点到源点可达(对于此题,可以不加);2,要找出题目中所有隐含关系;3,>=、#include #include #include #include #include #include #include #inclu原创 2011-07-18 18:37:22 · 427 阅读 · 0 评论 -
poj1201——Intervals//差分约束系统
如1716.#include #include #include #include #include #include #include #include #include using namespace std;int n;class node{pu原创 2011-07-18 18:38:56 · 434 阅读 · 0 评论 -
poj3352——Road Construction//最小割边
题意:最少添加多少条边,可以让图成为双向连通图。对trajan算法还没有了解深入,参考博客:http://www.cppblog.com/Icyflame/archive/2009/07/04/89227.html http://hi.baidu.com/buaa_babt/blog/item/4d9a16c934384e2cf9dc61da.html原创 2011-05-01 23:08:00 · 506 阅读 · 0 评论 -
poj1401——Factorial
<br />题意:求N!后面有多少零。<br />#include<iostream>#include<cstdio>using namespace std;int main(){ int i,t; int n,sum=0; cin>>t; while(t--) { scanf("%d",&n); for(sum=0,i=5;i<=n;i*=5) sum+=n/i; cout<<sum<<endl; } return 0;}原创 2011-05-04 17:34:00 · 481 阅读 · 0 评论 -
poj1388——Ugly Numbers
<br />import java.util.Scanner;public class c { /** * @param args */ public static void main(String[] args) { Scanner sc=new Scanner(System.in); int []ugly=new int [1505]; int n,i,d2=1,d5=1,d3=1; ugly[1]=1; for(i=2;i<=1500;i++)原创 2011-05-04 13:31:00 · 539 阅读 · 0 评论 -
STL之multiset应用。
要求:可添加,可删除最大、最小的数,可查询当前最大、最小的数。#include#include#include#includeusing namespace std; int main(){ int a,b;int c,d; int i=0; char ch[4]; scanf("%d%d",&a,&b); getchar(); multiset tree; tree.clear (); multiset::iter原创 2011-05-12 00:51:00 · 565 阅读 · 0 评论 -
poj2451——Uyuw's Concert//半平面交
<br /><半平面交>资料详见:朱泽圆06年论文。<br />半平面交思想:<br />1,对半平面预先处理,求极角并排序、去重。<br />2,在凸多边形交里面,根据论文所讲,反复做删去、加入半平面的操作。<br />具体实现,可以参考http://hi.baidu.com/lgq1205/blog/item/8e7a99fb31586b879f514646.html 代码有注释,讲得很好!<br />#include<iostream>#include<algorithm>#include<原创 2011-05-18 20:58:00 · 938 阅读 · 0 评论 -
hash查找//hash函数及建表
<br />给定一个序列:abcd,从中间一处断开,然后两段可以自由组合。比如ab-cd 组合有:abcd,abdc,bacd,badc,cdab,cdba,dcab,dcba。类似这样。问有多少种组合。<br />思路:hash来记录状态,模拟。<br />#include<iostream>#include<string>using namespace std;#define maxn 10000class node{public: string st; node *原创 2011-05-19 01:13:00 · 512 阅读 · 0 评论 -
poj1279——Art Gallery//半平面交 求面积
<br />用上题模板,一次AC。<br />#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int maxn=20010;const int bound=10000;const double esp= 1e-10;class point{public: double x,y;};class node{public: point a,b;原创 2011-05-19 14:01:00 · 711 阅读 · 0 评论 -
poj2004——Mix and Build
<br />思路:用长度作为关键字排序,对于str[i].ch,寻找i之前能被str[i].ch继承的最大的str[i-x].ch!<br />注意点:考虑aa,aaa,aaaa的情况<br />#include<iostream>#include<cstdio>#include<string>#include<algorithm>using namespace std;class node{public: char ch[25]; int vis[29]; int原创 2011-04-21 17:06:00 · 600 阅读 · 0 评论 -
poj2002——Squares
题意:n个坐标,问能组成多少正方形。思路:先按x轴优先排序,然后枚举每两个点是否能组成正方形。涉及到坐标的旋转及简单hash操作。#include#include#include#includeusing namespace std;#define maxn 19998class point{public: int x,y; point * next; bool operator ==(const point & p) { return p.x ==x&原创 2011-04-22 22:41:00 · 507 阅读 · 0 评论 -
hdu2222——Keywords Search
<br />ac自动机。参考:http://www.cppblog.com/mythit/archive/2009/04/21/80633.html<br />#include<iostream>#include<cstdio>#include<string>#include<queue>using namespace std;class node {public: node *fail; node *next[28]; int count; node() {原创 2011-04-25 22:01:00 · 487 阅读 · 0 评论 -
poj1204——Word Puzzles
<br />ac自动机应用。遍历图八次,直到w个单词都被找到。<br />#include<iostream>#include<string>#include<cstdio>using namespace std;int dir[][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};class word{public: char ch[1001]; int x,y,len; char dirr;原创 2011-04-26 15:13:00 · 621 阅读 · 0 评论 -
poj2481——Cows
<br />题意:给定区间[a,b],问这个区间被完全覆盖多少次。注意:如果有另一区间也是[a,b],他们不互相覆盖。<br />思路:树状数组,E从小到大排序,如果E相等,则S从大到小排序。从后往前遍历,这样保证先遍历的一定不被后面的覆盖。<br />#include<algorithm>#include<iostream>#include<cstdio>#include<string>using namespace std;class node{public: int s原创 2011-04-30 15:50:00 · 502 阅读 · 0 评论 -
poj2352——Stars//树状数组
<br />精巧的树状数组:<br />#include<algorithm>#include<iostream>#include<cstdio>using namespace std;int c[32001];int out[15001];int N=32001;int lowbit(int x){ return x&(x^(x-1));}void Modify(int i,int x){ while(i<=N) { c[i]+=x; i原创 2011-04-30 18:10:00 · 456 阅读 · 0 评论 -
poj1330——Nearest Common Ancestors
LCA离线算法,递归求解。详见:http://blogold.chinaunix.net/u3/105033/showart_2238641.html#include#includeusing namespace std;int tree[10001][100],in[10001],p[10001];int cas,s,t;int n,q1,q2;bool vis[10001];void Make_Set(int t){ p[t]=t;}int Find(int原创 2011-04-28 23:24:00 · 504 阅读 · 0 评论 -
poj3321——Apple Tree//树状数组
记住树状数组的基本操作:http://hi.baidu.com/wuxyy/blog/item/a4ad808b59be8bd2fd1f109d.htmlint lowbit(int x){ return x&(x^(x–1));}利用机器补码的特点,这个函数可以改得更方便int lowbit(int i){ return i&(-i);}如果要把a[n]增加m,可以通过调用如下函数实现void add(int i,int v){ while (i原创 2011-04-30 18:02:00 · 609 阅读 · 0 评论 -
poj3322——Bloxorz I//bfs
广搜,关键在于状态转移及状态的记录。 很囧的是,代码太死长了 而且,效率也不行...#include#include#includeusing namespace std;#define maxn 505char g[maxn][maxn];int R,C;int dir[][2]={{1,0},{0,1},{0,-1},{-1,0}};int vis[ma原创 2011-06-24 15:08:00 · 1038 阅读 · 0 评论 -
poj1102——LC-Display
模拟题。参考运用七段数码显示。参考:http://hi.baidu.com/%8E%E1%D0%B3/blog/item/0846471b6ccf8371dab4bd9a.html#include#include#includeusing namespace std;char n1[11]={"- -- -----"}; //笔画1被数字0,2,3,5,6,7,8,9覆盖char n2[11]={"| ||| ||"};原创 2011-05-02 17:07:00 · 426 阅读 · 0 评论 -
poj1160——Post Office//dp
<br />动态规划还是最无语的一块~ 参见:http://zebozhuang.blog.163.com/blog/static/1714798042010107104459174/<br />#include<iostream>#include<cstdio>#include<string>#include<math.h>using namespace std;#define maxn 305#define maxcost 9999999int w[maxn][maxn],原创 2011-05-02 20:36:00 · 496 阅读 · 0 评论 -
poj3177——Redundant Paths//最小割边
<br />跟3352一模一样,不过,需加判重。<br />#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,r;#define maxn 5005bool map[maxn][maxn];class node{public: int to,next;};node g[maxn*5];int head[maxn],cnt;int dfn[maxn],原创 2011-05-01 23:56:00 · 481 阅读 · 0 评论 -
poj1470——Closest Common Ancestors//LCA
<br />果然A得辛苦,我想是用错模板了。囧,好累。http://www.cppblog.com/abilitytao/archive/2009/09/21/96886.html<br />#include<iostream>#include<string>#include<cstdio>#include<vector>using namespace std;const int maxn=906;vector<int >p[maxn];class node{public原创 2011-05-03 14:56:00 · 537 阅读 · 0 评论 -
poj1325——Machine Schedule//最小顶点覆盖
题意:一项工作,可由A机器的mode_a完成,或者由B机器的mode_b完成,现在要完成K项这样的工作,而每次转换一次mode,需要重启一次机器。问,最少需重启多少次?思路:要尽量让参与的mode_x数尽可能少。转化为最小顶点覆盖:即让每项工作的mode_a、mode_b之间原创 2011-08-09 21:31:07 · 435 阅读 · 0 评论