acm
文章平均质量分 72
wxfwxf328
这个作者很懒,什么都没留下…
展开
-
usaco 1.4.2 Packing Rectangles
图上描绘的就是所有的基本摆放方法即4的全排列种方法+交换任意x,y=所有的摆放方法/*ID: w.x.f.g1PROG: packrecLANG: C++*/#include#include#includeusing namespace std;#define forn(a,n) for(int i=a;i<n;i++)#define init() t原创 2012-02-16 10:55:19 · 807 阅读 · 0 评论 -
专题——线段树和树状数组(HDOJ)14 LCIS
#include#includeusing namespace std;#define lrt (rt<<1)#define rrt (rt<<1|1)#define mid ((l+r)>>1)#define lson l,mid,lrt#define rson mid+1,r,rrt#define llen mid-l+1#define rlen r-midconst原创 2012-03-27 13:44:05 · 637 阅读 · 0 评论 -
专题——线段树和树状数组(HDOJ)09 Turing Tree 【hdu 3333】
读入所有query,按右端点递增排序,hash记录当前值的下标,删去(0,t)中相同且非最后一次出现的元素,计算每个queryBest solutions for Problem 3333Language : AllG++GCCC++CPascalJavaRankAuthorExe. TimeExe. MemoryCode Len.Langu原创 2012-03-28 14:13:57 · 703 阅读 · 0 评论 -
poj 3261 Milk Patterns 【后缀数组】
给定一个字符串,求至少出现 k 次的最长重复子串,这 k 个子串可以重叠。算法分析:这题的做法和上一题差不多,也是先二分答案,然后将后缀分成若干组。不同的是,这里要判断的是有没有一个组的后缀个数不小于 k。如果有,那么存在k 个相同的子串满足条件,否则不存在。这个做法的时间复杂度为 O(nlogn)#include#include#includeusing namespace原创 2012-03-22 10:38:21 · 736 阅读 · 0 评论 -
spoj 694&&705 后缀数组
每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照 suffix(sa[1]), suffix(sa[2]),suffix(sa[3]), …… ,suffix(sa[n])的顺序计算,不难发现,对于每一次新加进来的后缀 suffix(sa[k]),它将产生 n-sa[k]+1 个新的前缀。但是其中有height[k]个是和前面的字符串的前缀是相同原创 2012-03-22 10:34:01 · 767 阅读 · 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 · 514 阅读 · 0 评论 -
HDU 3579 Hello Kiki【中国剩余】
#includeusing namespace std;typedef long long ll;ll ext_gcd(ll a,ll b,ll &x,ll &y){ if(b==0){x=1;y=0;return a;} ll d=ext_gcd(b,a%b,x,y),t; t=x;x=y;y=t-a/b*y; return d;}inline ll原创 2012-02-24 20:25:01 · 939 阅读 · 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 · 536 阅读 · 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 · 1385 阅读 · 1 评论 -
hdu3590 PP and QQ 【ext_anti-nim】
anti-nim 博弈扩展(树形博弈)详细见:http://wenku.baidu.com/view/e0c822d3240c844769eaeea8.html#include#include#includeusing namespace std;int head[1000],nxt[1000],ev[1000];int edge=-1;int fa[2000];v原创 2012-03-02 18:13:23 · 984 阅读 · 0 评论 -
hdu3584 Cube【三维树状数组】
详细见:http://wenku.baidu.com/view/2175f419ff00bed5b9f31db4.html 更新8个顶点就行了#include#include#includeusing namespace std;#define lowbit(x) x&-xconst int maxn=105;int n,m,a[maxn][maxn][maxn];v原创 2012-03-02 18:10:23 · 920 阅读 · 0 评论 -
HDU 4167 User Names【string stl】
#include#include#include#includeusing namespace std;int main(){ cin.sync_with_stdio(false); int n,maxlen,cas=1; while(cin>>n>>maxlen) { if(n==0&&maxlen==0) break;原创 2012-03-03 18:30:49 · 1047 阅读 · 0 评论 -
HDU 3589 Jacobi symbol 【二次剩余】
#include#includeusing namespace std;const int maxn=1000000+10;typedef long long ll;bool not_pri[maxn];int cnt=0,pri[maxn>>3];void init(){ for(int i=2;i<maxn;i++){ if(not_pri[i])原创 2012-03-02 18:07:51 · 923 阅读 · 0 评论 -
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 · 1262 阅读 · 0 评论 -
zoj 3602 Count the Trees 二叉树HASH 浙江省第9届大学生程序设计竞赛 第三题
记左儿子对应的hash值为a,右儿子对应的hash值为b,使val=hash(a,b) {hash(a,b)=find(a,b)?hashval:cnt++;},则每种形状的树的表示是存在且唯一的。首先对每一种形状树是显然存在对应hash值的。条件a:若树rt的子树a与子树b唯一,则树rt唯一。(显然成立,值为第一次计算到时对应的cnt)条件b:叶子节点的hash值唯一(初始化成一样就原创 2012-04-23 19:46:24 · 2666 阅读 · 0 评论 -
UVA 5811 Cards 数学期望DP
YM一下zyc,瞬间拍完1Aa的期望=sum(a的子状态期望*a的子状态的概率)。#include #include #include using namespace std;double dp[15][15][15][15][5][5]; //期望bool vis[15][15][15][15][5][5];int e[5];inline double min(doubl原创 2012-05-02 22:04:58 · 1781 阅读 · 0 评论 -
hdu 3071 Gcd & Lcm game
一道还不错的题目,解法:线段树+位压缩对任意xint prime[]={ 2, 3, 5, 7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};int dpos[]={28,25,23,21,20,19,18,17,16,15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2原创 2012-04-20 03:48:07 · 1775 阅读 · 0 评论 -
2012金华网络赛赛后【缺ABC】
A Mines (HDU 4400)B Battery (HDU 4401)C Magic Board (HDU 4402)D A very hard Aoshu problem (HDU 4403)枚举“=”的位置,分别对左右两部分进行DFS,统计出相等的个数即可: #include #include #include using nam原创 2012-10-03 03:41:50 · 2540 阅读 · 2 评论 -
2012长春网络赛赛后【完结】
A A Simple Problem with Integers (HDU 4267)树状树组维护arr[i]-arr[i-1],实现成段更新单点查询。#include#includeconst int N=55555;struct TreeArr{ int arr[N],n; void init(int n){memset(arr,0,4*n+4原创 2012-10-02 23:36:27 · 2910 阅读 · 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 · 3572 阅读 · 0 评论 -
BNUOJ 12884 kruskal+ext_lca
貌似BNUOJ只能用这个链接去了http://oj.51isoft.com/bnuoj/problem_show.php?pid=12884还是把题目复制过来,免得挂了找不到题吧。题目:灯泡队Time Limit: 10000 ms Case Time Limit: 10000 ms Memory Limit: 65535 KBDescription原创 2012-11-04 01:33:51 · 1903 阅读 · 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 · 2005 阅读 · 0 评论 -
hdu 3663 Power Stations【DLX】
题意及分析来自:http://hi.baidu.com/z917912363/item/8ca932347e723ccd2f8ec269题意:给你一个最多60个点150个边的无向图,每个点是一个村庄,每个村庄都有一个发电站,每个电站可以给它所在的村庄和它有边直接连接的所有村庄供电,现在让你选出一些电站,使每个村庄都能被供电且每个村庄只被一个电站供电。另外,每个村庄的发电站都只能在1-d天内的一原创 2012-11-05 00:37:50 · 2332 阅读 · 0 评论 -
2012天津regional的五道水题(ABCEH)
做virtual judge时的代码,感觉有点挫,随便贴一下吧,继续切博弈。A题 模拟题这题本身还是非常水的。写的时候要注意题意,队友读的题意我写了很久调不出来,最后慢慢读题了才一个个错误地改出来了。#include #include #include #include #include #include using namespace std;mapmp;void原创 2012-10-28 23:55:35 · 4136 阅读 · 0 评论 -
hdu 4347 【KD-TREE】
KD-TREE #include #include #include #include using namespace std; const int N=55555,K=5; const int inf=0x3f3f3f3f; #define sqr(x) (x)*(x) int k,n,idx; //k为维数,n为点数 struct point { in原创 2012-11-07 15:29:59 · 5099 阅读 · 0 评论 -
hdu 3400 Line belt【三分嵌套】
二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值。但当函数是凸性函数时,二分法就无法适用,这时三分法就可以“大显身手”~~类似于二分的定义Left和Right,mid = (Left + Right) / 2,midmid = (mid + Right) / 2; 如果mid靠近极值点,则Right = midmid;否则(即midmid靠近极值点),则Left = mid;原创 2012-01-24 17:08:34 · 1144 阅读 · 3 评论 -
2012成都网络赛赛后【缺CHJ】
A Coder (HDU 4288,与Codeforces 85D相同)应该用线段树写,我是块状链表水过了 #include #include #include #include using namespace std; typedef long long ll; const int N=320*320; struct Query {原创 2012-10-03 03:42:43 · 2895 阅读 · 0 评论 -
ACM必备算法列表 (先分个类,争取全部学会)
第一阶段:练经典常用算法1.最短路(Floyd、Dijstra,BellmanFord)2.最小生成树(先写个prim,kruscal要用并查集,不好写)3.大数(高精度)加减乘除4.二分查找. (代码可在五行以内)5.叉乘、判线段相交、然后写个凸包.6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简)7.数学上的有:辗转相除(两行内),线段交点、多角形面积原创 2012-04-24 21:07:56 · 4392 阅读 · 1 评论 -
求质数表 素数筛求素数 效率比较 数论相关
第一个是平时最常用的基本写法(还有一种写法是for(j=i*2;j第二个是以i*i为起点开始筛的,要注意浮点溢出!第三个不太好简洁地说清楚程序中途分别输出每次计算了的prime[500000],从而为了验证计算结果的正确性的#include#includeusing namespace std;const int N= 40000000;int prime[N],cnt原创 2012-01-21 04:17:15 · 693 阅读 · 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 · 832 阅读 · 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 · 1791 阅读 · 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 · 857 阅读 · 0 评论 -
后缀数组——罗穗骞倍增算法详细注释
#includeconst int maxn=100010;int wa[maxn],wb[maxn],wv[maxn],ws[maxn];int cmp(int *r,int a,int b,int l){return r[a]==r[b]&&r[a+l]==r[b+l];} //就像论文所说,由于末尾填了0,所以如果r[a]==r[b](实际是y[a]==y[b]),说明待合并的两原创 2012-05-24 21:09:05 · 7344 阅读 · 0 评论 -
Spoj数论专场解题报告
Spoj数论专题http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=8035#overview Problem ASPOJ ARCTANUse of Function ArctanProblem BSPOJ CUTSQRSCutting off原创 2012-05-29 11:03:52 · 6173 阅读 · 5 评论 -
2012杭州网络赛赛后【缺ACDI】
A Boomerang (HDU 4410)B Arrest (HDU 4411)最小费用流,建-inf边保证n个点都被访问到 #include #include #include using namespace std; const int N=222,M=111111; const int inf=0x3f3f3f3f; MinCos原创 2012-10-03 03:41:20 · 1788 阅读 · 0 评论 -
ural 1016 Cube on the Walk 状态压缩最短路
http://acm.timus.ru/problem.aspx?space=1&num=1016http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id=140761016. Cube on the WalkTime Limit: 2.0 secondMemory Limit:原创 2012-05-17 10:47:33 · 5968 阅读 · 0 评论 -
hdu 3555 Bomb【数位DP】
第一次接触数位DP#includeusing namespace std;long long dp[20][3]={0,1,0},d[20][3];int main(){ for(int i=1;i<20;i++) { dp[i][0]=10*dp[i-1][0]+dp[i-1][2];//含49 dp[i][1]=9*dp[i-1][1原创 2012-02-13 22:03:32 · 1020 阅读 · 0 评论 -
hdu1598 find the most comfortable road 并查集
hdu1598 find the most comfortable road 并查集#include#includeusing namespace std;const int maxn=200+10; //pointconst int maxm=1000+10; //edgeint p[maxn],r[maxn],n,m;struct node{ int s,e;原创 2012-01-20 15:05:44 · 934 阅读 · 0 评论 -
hdu 1811 rank of tetras 拓扑排序+并查集
这题写了几天了,好几次写了一半又删了的,发现拓扑还是用queue好啊1.3种结果的优先关系conflict>uncertain>ok,只要是conflict就不是看后两者了,如果不是只有判了是uncertain就不看是否ok了,用solve()函数返回结果的情况2.q.size()>1,同时多个点入度为0,uncertain.(要=判断了conflict才确定) 入q次数与n'不等则原创 2012-01-23 13:53:16 · 735 阅读 · 0 评论 -
母函数(Generating function)详解【转自www.wutianqi.com】
原文地址:http://www.wutianqi.com/?p=596最近更新:2011.4.31.鉴于文章图片和排版的问题,对文章进行了重新编辑。2.看见网上很多朋友在转载时不尊重别人的劳动成果,任意删除文章里关于作者的信息,希望大家在转载时保留文章所有信息,遵守版权规定。前段时间写了一篇《背包之01背包、完全背包、多重背包详解》,看到支持的人很多,我不是大牛转载 2012-01-23 22:12:42 · 724 阅读 · 0 评论