poj
文章平均质量分 66
wxfwxf328
这个作者很懒,什么都没留下…
展开
-
poj 2243 bfs Knight Moves
#include#include#include#includeusing namespace std;struct node{ int x,y,step;};node s,e;bool vis[10][10];int d[8][2]={{1,2},{-1,2},{2,1},{-2,1},{1,-2},{-1,-2},{2,-1},{-2,-1}};queueq;原创 2012-01-20 16:01:20 · 408 阅读 · 0 评论 -
poj 2002 Squares【HASH】POJ最快
先排序,然后枚举任意两点(x1,y1)(x2,y2),则如果存在点(x1+y1-y2,y1-x1+x2)(x2+y1-y2,y2-x1+x2)则它们能构成一个正方形157MS#include#include#include#includeusing namespace std;const int maxn=10000+10;struct node{ int a,b,c原创 2012-02-05 21:34:27 · 785 阅读 · 0 评论 -
POJ 2154 Color 【polya+dfs】
看来有必要变得更加强大啊......... 141MS#include#include#includeusing namespace std;const int maxn=1<<15;vector >v;int vis[maxn],prime[maxn];int n,mod,cnt=0;void init(){ for(int i=2;i<maxn;i++)原创 2012-02-07 01:51:47 · 596 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers【线段树】
#include#includeusing namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define mid (l+r)>>1typedef long long ll;const int maxn=100000+10;ll sum[maxn<<2],add[maxn<<2];inline voi原创 2012-02-24 21:37:58 · 521 阅读 · 0 评论 -
poj2774 Long Long Message && hdu 1403 Longest Common Substring 最长公共字串【后缀数组(倍增)】
参考自2009年国家集训队论文《后缀数组——处理字符串的有力工具》(罗穗骞)将串a与串b连接后用后缀数组求最大height#include#includeusing namespace std;const int maxn=200000+10;int sa[maxn],rank[maxn],height[maxn],num[maxn];int wa[maxn],wb[max原创 2012-02-17 21:32:29 · 1371 阅读 · 1 评论 -
poj 2893 hdu 3600 M*N数码问题
S = x0 + y0 + 逆序对个数(包含0)x0 y0指当前状态的0的坐标所以最终就是判断(初始的 x0 + y0 + 逆序对个数) %2 == ( m-1 + n-1 + m*n-1 )%2或者分奇偶性讨论亦可#include#include#includeusing namespace std;int a[1000000],_tmp[1000000];原创 2012-03-10 04:33:26 · 1246 阅读 · 0 评论 -
poj 3261 Milk Patterns 【后缀数组】
给定一个字符串,求至少出现 k 次的最长重复子串,这 k 个子串可以重叠。算法分析:这题的做法和上一题差不多,也是先二分答案,然后将后缀分成若干组。不同的是,这里要判断的是有没有一个组的后缀个数不小于 k。如果有,那么存在k 个相同的子串满足条件,否则不存在。这个做法的时间复杂度为 O(nlogn)#include#include#includeusing namespace原创 2012-03-22 10:38:21 · 719 阅读 · 0 评论 -
poj 1743 Musical Theme 【后缀数组】
有希望成为最长公共前缀不小于 k 的两个后缀一定在同一组。然后对于每组后缀,只须判断每个后缀的 sa 值的最大值和最小值之差是否不小于k。如果有一组满足,则说明存在,否则不存在。#include#include#includeusing namespace std;const int maxn=20100;int a[maxn],b[maxn],s[maxn],c[maxn];i原创 2012-03-22 10:40:39 · 501 阅读 · 0 评论 -
poj 2823 Sliding Window 【单调队列】
方案一:STL——DEQUE(C++:TLE G++:8461MS)#include#includeusing namespace std;const int maxn=1000000+10;int a[maxn],b[maxn],c[maxn];int main(){ ios::sync_with_stdio(false); int i,n,k; d原创 2012-01-24 21:43:17 · 818 阅读 · 2 评论 -
POJ4046 Sightseeing
题意及解题思路:http://www.cnblogs.com/Fatedayt/archive/2012/05/10/2493967.html#include#include#include#include#includeusing namespace std;typedef long long ll;const int N=1010;const int M=40010;原创 2012-05-10 13:52:33 · 1778 阅读 · 0 评论 -
poj 1365 Prime Land 【简单数论】
#include#include#include#includeusing namespace std;bool not_prime[40000];vectorprime,ans;int main(){ for(int i=2;i<40000;i++) if(!not_prime[i]) { prime.push_ba原创 2012-02-24 20:22:25 · 848 阅读 · 0 评论 -
poj 1183 反正切函数的应用
Spoj数论专场解题报告http://blog.csdn.net/wxfwxf328/article/details/7611961好像插入不了数学公式#includeusing namespace std;long long t,a,i;int main(){ cin>>t; while(t--){ cin>>a;i=2*a;原创 2012-05-10 20:12:32 · 3531 阅读 · 0 评论 -
poj 3349 Snowflake Snow Snowflakes【HASH】/【最小表示】
发现最小表示+sort好像还快一点点HASH#include#include#includeusing namespace std;const int maxn=9997;struct node{ int a[6],sum;};vector v[maxn];bool cmp(node b,node c){ if(b.sum!=c.sum) retu原创 2012-02-04 19:11:22 · 611 阅读 · 0 评论 -
poj 1840 Eqs 【hash】
#includeusing namespace std;const int maxn=50*50*50*50;short hash[maxn*6+10];int main(){ int a,b,c,d,e,ans=0; cin>>a>>b>>c>>d>>e; for(int i=-50;i<=50;i++) if(i) f原创 2012-02-04 15:24:27 · 474 阅读 · 0 评论 -
poj 2559 hdu 1506 Largest Rectangle in a Histogram
#includeusing namespace std;const int maxn=100000+10;int a[maxn],b[maxn],c[maxn];//a[i]:高度 b[i]:左边小于a[i]高度的第一个 c[i]:右边小于a[i]高度第一个inline void read(int &d){ char ch; while(ch=getchar(),ch>原创 2012-01-25 14:38:29 · 794 阅读 · 0 评论 -
poj 1157 LITTLE SHOP OF FLOWERS 【简单DP】
//dp[i][j]=max(dp[i][j-1]+a[i][j],dp[i][j-1]);#include#includeusing namespace std;const int inf=0x3f3f3f3f;int dp[110][110];int main(){ int n,m,tmp,ans=-inf; scanf("%d%d",&n,&m); f原创 2012-01-28 18:10:49 · 507 阅读 · 0 评论 -
poj 2181 Jumping Cows 【简单DP】
//dp[i][0]=max(dp[i-1][1]-a[i],dp[i-1][0]);//dp[i][1]=max(dp[i-1][0]+a[i],dp[i-1][1]);#include#includeusing namespace std;const int maxn=200000;int dp[maxn][2],a[maxn];int main(){ int p;原创 2012-01-28 19:20:58 · 447 阅读 · 0 评论 -
poj 1159 Palindrome 【DP】
dp[i][j]=dp[i+1][j-1],(s[i]==s[j]) dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1,(s[i]!=s[j])DP+Short数组:Problem: 1159 User: wxfwxf328Memory: 40716K Time: 391MSLanguage: C++ Result: AcceptedSource Code原创 2012-01-31 17:19:57 · 484 阅读 · 0 评论 -
poj 1200 Crazy Search【hash】
#includeusing namespace std;const int maxn=1000000+10;char s[maxn];bool hash[maxn];int vis[150];int main(){ int n,nc,cnt=0,tmp,sum=0,ans=0,mod=1; cin.sync_with_stdio(false); cin>>n>原创 2012-02-04 14:23:02 · 631 阅读 · 0 评论 -
poj 2503 Babelfish【trie】
trie:141MS#includeconst int maxn=100000+10;const int tk=26,tb=97;int triecnt=1,bufcnt=0,tree[maxn<<2][tk+1];char buf[maxn<<1][12];int search(char *s){ for(int rt=0;rt=tree[rt][*s-tb];)原创 2012-02-05 00:27:35 · 676 阅读 · 0 评论 -
poj 2977 Box walking
#includeusing namespace std;int sqr(int x){ return x*x;}int main(){ int a,b,c,x,y,z,ans; while(cin>>a>>b>>c>>x>>y>>z&&!(a==0&&b==0&&c==0&&x==0&&y==0&&z==0)) { if(x==0||y=原创 2012-02-06 11:53:57 · 921 阅读 · 0 评论 -
POJ 3211 Washing Clothes【01背包+STL】
洗每种衣服时间dp[sum[i]-dp[sum[i]>>1];#include#include#include#includeusing namespace std;int dp[1<<17];int main(){ int n,m;cin.sync_with_stdio(false); string str; while(cin>>n>>m&&m&&n)原创 2012-02-06 14:46:29 · 583 阅读 · 0 评论 -
poj 2503 Babelfish 【hash】
HASH:141MS#include#include#define th(a) this->a=a;const int maxn=100000+10;const int prime=25013;struct Hash{ char *s1,*s2; Hash *nxt;}hashpool[maxn];Hash *head[prime+1],*ph;char bu原创 2012-02-04 23:54:09 · 752 阅读 · 0 评论 -
poj 2002 Squares 【stl二分】
764K 1375MS#include#include#includeusing namespace std;const int maxn=10000;paira[maxn];int main(){ int n; while(scanf("%d",&n)&&n) { for(int i=0;i<n;i++) scanf("%d%d",&a[i原创 2012-02-05 21:28:39 · 633 阅读 · 0 评论 -
POJ 3080 Blue Jeans【stl】
#include#includeusing namespace std;int main(){ string s[20],ans,com; int t,n; cin>>t; while(t--) { ans.clear(); cin>>n; for(int i=0;i>s[i]; for原创 2012-02-06 10:02:46 · 840 阅读 · 0 评论 -
POJ1655 【树的分治】
楼教主的题。//每次选择树的重心,删去重心形成多棵子树(子树一定小于上一层的一半),最多log(n)层 #include #include #include using namespace std; const int N=22222; int ev[N],ew[N],nxt[N],head[N],e; int vis[N],dp[N],arr[N]; int n,原创 2012-11-04 01:26:37 · 1991 阅读 · 0 评论