
poj
文章平均质量分 73
gg_gogoing
这个作者很懒,什么都没留下…
展开
-
ACM 中的期望,概率 问题
一个简易的入门:点击打开链接kuangbin的总结:点击打开链接我搞的题目:点击打开链接前段时间一直在做概率的题目。一、期望其中求解期望问题刚开始一直不理解。后来做得多了有感觉。例:(有放回)在5件产品有4件正品,1件次品,从中任取2件,记其中含正品的个数个数为随机变量ξ,则ξ的数学期望Eξ是 1.6在5件产品有4件正品,1件次品,从中任取2件,记其中含正品的个原创 2015-01-25 10:33:34 · 8444 阅读 · 2 评论 -
背包问题(恰好背满 二维背包) 总结
关键字:学习DP,背包问题似乎是永远绕不过去的原创 2014-11-05 09:30:26 · 1438 阅读 · 0 评论 -
基础DP 19道
VJ链接:点击打开链接基础DP做好了更有益~!从中得出几个结论:1. 背包问题所选的物品是没有相关性,是填充性质2. LIS问题是元素之间有某种关系(多个属性则先排序某个,在依据另一个LIS)3. TSP组合问题,一般进行状压,求元素的某种序题目:1. 最大M子段和这个很像多维背包问题,有个数限制。同时我们可以发现最后这个元素只能是 i个子段中最后一个子段原创 2015-03-09 10:47:39 · 673 阅读 · 0 评论 -
ACM 容斥原理
VJ 点击打开链接参考 点击打开链接 非常好的译文:点击打开链接容斥原理的想法就是求多个集合的并集.所以要先设计好集合.组合数学问题中,正面解决会困难,常用方法是正难则反,使用容斥原理求反向在用全集减去.将对立面的限制条件分析清楚.eg 求区间互质的数的个数,则用除法等计算出一个数的倍数的方法再减去. UVa 11806 Cheerleaders求k个石子放原创 2015-02-08 08:57:35 · 6545 阅读 · 0 评论 -
字符串(1)---KMP & 扩展KMP & Manacher
字符串也是ACM中的重头戏,基本内容有KMP ,扩展KMP, Manacher ,AC自动机,后缀数组,后缀自动机.按照专题来做共分三部分. LCS LIS LCIS不知道算不算....点击打开链接小技巧:匹配问题不区分大小写,则将其全部转为小写.暴力匹配: 用strstr函数就能解决 I M N Z(枚举长度 三份)一.KMP算法解决单一模式串匹配问题.利用失配后原创 2015-03-15 10:56:56 · 867 阅读 · 0 评论 -
ACM网络流学习
练习题目:点击打开链接 网络流建模:点击打开链接之前写过 关于网络流的算法入门,其实那么多会一个就OK.首选Dinic,递归很好写25行.邻接表时候若是无向图则是四条边解决和值问题,都并入汇点找多条不同的路径,最小费用流问题.J 模板题测试Dinic模板K 电脑公司,这个其实也可以不用拆点,不过拆点更容易想,这个是第一个需要构图的题目,完全不会.其实就是不同类型机原创 2015-02-27 10:55:24 · 2071 阅读 · 0 评论 -
学习 LCA&&RMQ
参考:点击打开链接 点击打开链接 点击打开链接(一些总结) 点击打开链接(不错的模板)题目:点击打开链接花了4天时间做完了这个专题,LCA的问题用处还是很大,同时能体会RMQ的ST算法中dp的味道.基本方法就是ST,LCA转RMQ,LCA的Tarjan,LCA倍增(这个可存储边权)这个专题后面四道题都非常好,推荐大家做做.细节:1. ST方法2^i 包含自己,因此其真原创 2015-02-13 09:32:56 · 1048 阅读 · 0 评论 -
概率DP求期望入门,HDU 4405,POj 2096,HDU 3853
这两个题目的状态一个是一维的,另一个是二维的。刚开始做的是POJ 2096,我将HDU状态定义为dp[i][j] 走i步到j位置。HDU是个判定问题,是否走完。而那个是走到特定的两个状态下。HDU 4405裸概率题,dp[i]状态定义为从i走完的期望。对于飞行路线用个map,若有则直接等于了。。#include #include #include #include #in原创 2014-11-24 18:50:03 · 1547 阅读 · 0 评论 -
Best Sequence(poj 1699) 状压dp(TSP)
类似于前两天做的那个wordstack。状压的其实有时候爆搜+记忆化也差不多。就是这个是要与之前的都重合,移位预处理要注意。理解好第一个样例就行/* ***********************************************Author :bingoneCreated Time :2014/12/9 22:48:56File Name原创 2014-12-11 23:04:21 · 829 阅读 · 0 评论 -
长吐一口气~树形DP汇总(POJ 2486 3659 2342 1947 1463 hdu 2412 )
终于在考试前刷完了树形dp专题。树形dp其实相比于其他更简单,因为树本身就是无后向性的数据结构。关键在于每个节点状态的设计。POJ 2486 Apple Tree这道题如果可以不走回头路那么非常简单,因此#include #include #include using namespace std;#define N 105#define K 205#define ma原创 2014-12-22 10:36:47 · 696 阅读 · 0 评论 -
poj 3067 Japan(线段树 | 树状数组)
题意:有M个城市到N个城市修高速,问这个过程会有多少个交叉点?这道题和Stars很像,基本一个模型。在纸上画一画会发现,按照一个(小到大)顺序下来,交点的个数是以另一边为数组,大于该数把所有路按照以东海岸变为起点u,西海岸为终点v保存下来。然后按照u从小到大顺序排序(v的顺序不重要)。排完序之后,依次枚举就相当于从西海岸的城市1开始依次开始建立连接一直到n为止。当处理到第i条边时,原创 2014-10-31 21:19:24 · 733 阅读 · 0 评论 -
POJ 2155 树套树—线段树套线段树
Matrix 楼教主出的题目。题意:一个矩阵初始值都为0,每次给“C X1 Y1 X2 Y2" 去反转这个矩阵。或者"Q X1 Y1"查询这个点是0/1。第一次接触树套树的题目。一句AC:对于基本的线段树,再在每个节点建一个y方向上的线段树。tree[n][m]这道题目更新的时候,对于X方向就是(X1,X2)这个区间,再在其上对Y1,Y2进行更新。对于查询,X方向上,自顶向下到原创 2014-10-29 10:00:32 · 1602 阅读 · 0 评论 -
POJ 2481 Cows(树状数组)
当前树状数组练习最后一道题。借此写一下常用模型。Stars Japan 等线段树,树状数组的题目除了非常裸的模版题目(敌兵布阵)。都是将几个属性值按照次序排列。完后,所求即是线性区间个数问题。看规模很少有二维的,利用序将多维降维。(这题刚开始将E-S也当作一个属性在考虑.....失误)这道题也是,对于S,E的次序调整好,将两个变量(E-S的这个其实是区间长度包含意思,本身并不影响)换好原创 2014-11-01 10:17:00 · 710 阅读 · 0 评论 -
poj 1195 Mobile phones(树状数组)
裸树状数组,关键在于二维的求和操作不要写错。getsum(u+1,v+1)+getsum(x,y)-getsum(u+1,y)-getsum(x,v+1);#include#include #include#include#include #include#includeusing namespace std;#define N 1050int n,m原创 2014-10-31 00:07:08 · 650 阅读 · 0 评论 -
学习高斯消元
点击打开链接 习题 行列式高斯消元问题类型:用LCM 保持整型1. 基本的高斯消元,裸模板 HDU33592. 开关问题,用^操作代替 -, 求x[i]时候一样用* poj 1222 1830 17533. 枚举自由变元, return -1 是因为出现[0,0,0,0,a]这种情况,return 0 是唯一解,否则是有自由变元4. 取模方程 (a1*x1+原创 2015-03-03 14:13:18 · 717 阅读 · 0 评论 -
字符串(2)- AC自动机
AC自动机,其实就是Trie树与KMP的结合,且有dfa(有限状态机)的性质.理解的关键点:1. fail指针 起到回溯作用2.每次匹配都是主串不动,移动指针now去回溯找后缀的前缀3.一个优化点,将NULL指向root 编码更简单.考察时一般也会问道dfa的性质.AC自动机解决问题:1.多模式串匹配2.给定一个长度,满足XX条件能构造多少个.ABCD原创 2015-03-18 13:05:02 · 639 阅读 · 0 评论 -
POJ 1328 Radar Installation(贪心)
在区间上贪心#include#include#includeusing namespace std;struct point{ double x1,x2;}p[1005];bool cmp(point a,point b){ return a.x1<b.x1;}int main(){ int n,r,i,t,end_flag,count; doub原创 2015-06-12 18:51:45 · 522 阅读 · 0 评论 -
二分图学习
图论中的难见就是建图然后套用算法。特点: 只能一一对应,即XX只能有一个人。 先来一个比较好的入门资料二分图最大匹配 参考 二分图建图方法 算法的思路是不停的找增广路径, 并增加匹配的个数,增广路径顾名思义是指一条可以使匹配数变多的路径,在匹配问题中,增广路径的表现形式是一条”交错路径”,也就是说这条由图的边组成的路径, 它的第一条边是目前还没有参与匹配的,第二条边参与了匹配,第三条原创 2015-06-03 10:34:24 · 737 阅读 · 0 评论 -
Dancing Links 学习 AND 代码详解
今天花时间学习了下Dancing Links,其核心思想是降低在搜索中的范围,减少复杂。降低的方法就是将用链式结构构造的图中不需要的点去掉。如果回溯再恢复。这个方法依赖的数据结构是用数组存储的十字链表L[NN],R[NN],U[NN],D[NN] 左右上下的链接构造数据结构:head,cnt,L[NN],R[NN],U[NN],D[NN],H[NN],COL[NN],S[NN]原创 2014-10-13 07:18:51 · 958 阅读 · 0 评论 -
树链剖分学习
解决的问题 对于给出的树上两点求之间的最值或者更新操作变为logn。其他方法 Tarjan求LCA的复杂度为 O(N+Q)所以不断更新复杂度太高。本质: 就是将树划分为不重合的多条链每条链都有一个线段树中的编号(可类比dfs序转换线段树的想法)+线段树。在求的过程中根据重链不断逼近再用线段树维护即可。 入门文章 练习题目一般有对点建树和对边建树两种方案,看题目要求。对第几条边进行操作这种情况原创 2015-06-03 08:40:50 · 641 阅读 · 0 评论 -
单调队列 单调栈总结
单调队列单调栈应用范围:原创 2014-10-20 19:56:06 · 4749 阅读 · 0 评论 -
ACM中的几个小技巧(离散化,尺取法,数据预处理)
离散化 使用STL算法离散化: 思路:先排序,再删除重复元素,然后就是索引元素离散化后对应的值。 假定待离散化的序列为a[n],b[n]是序列a[n]的一个副本,则对应以上三步为: sort(sub_a,sub_a+n); int size=unique(sub_a,sub_a+n)-sub_a;//size为离散化后元素个数 for(i=0;i<n;i++) a[i]=lower原创 2015-05-11 10:00:33 · 5356 阅读 · 0 评论 -
Crossing River poj1700
过河问题 这个题目是之前微软的面试题,很经典. 问题难点在于还要把船送回来. 特殊点是起始和最后的,要考虑把所有人送过去,有一点就是最快的人送回来的速度最快,但同时发现如果最慢的两个人过去,节约了一个最慢的时间,但是送回来的时间却很长,这样就要最快的提前过去. 注意正确状态是所有人都到了对岸. PS: 考虑当前最慢的人,如果要把它送过去 1.可以利用最快的和它一起过去,最快的回来原创 2015-05-06 10:36:29 · 604 阅读 · 0 评论 -
CodeForces 13C && poj 3666 状态定义不同...
这个是因为状态定义不同产生的两种代码. 题意都是一样的,CF还简化了一种情况. 参考: poj3666 CF13 CF中定义: f[i][j] 表示将原始数列中的前 i 个数变成单调不降,第 i 个数最多为 B[j] 的最少操作次数 转移:f[i][j] = min(f[i][j-1],f[i-1][j]+abs(a[i]-b[j])) poj中定义: dp[i][j]表示:前i原创 2015-05-06 10:46:37 · 798 阅读 · 0 评论 -
贪心专题
贪心: 原则是根据固定的一个或几个属性进行抉择.达到缩小规模的目的. split to steps and shrink scope reference最近做的几个贪心题目 hdu 1052(田忌赛马) 根据马的速度排序,然后两边最小值,最大值的判断.这样做是因为两端的选择是唯一的,TJ最弱的马/最强的如果可以战胜那就是最好的抉择,不然就让其去当炮灰.(减少规模)#include<set>原创 2015-05-15 19:14:35 · 967 阅读 · 0 评论 -
赛码"BestCoder"杯中国大学生程序设计冠军赛
渣渣一枚总共做了4个题目.先总结下吧.题目质量很高. 题目链接 1001 这个题目第一眼就是hdu之前的题目今年暑假不AC.只选三个,那么就是左右两边贪心取优.#include#include#include#include#define MOD 4294967296using namespace std;typedef unsigned int LL;int原创 2015-05-03 07:43:02 · 1278 阅读 · 0 评论 -
近期做的比赛题目
这几天就没做专题了,做了点比赛题目.发现基本的内容才最重要.JXUFE_上海邀请赛选拔赛 和大一的小朋友一起玩,其中有的题确实不错. 1. E 这个题目其实就是找规律,起初以为是要用到很复杂的数论知识.哎,做多了有恐惧感.#include#include#include#include#include#include#include#define EPS原创 2015-05-10 21:43:23 · 591 阅读 · 0 评论 -
POJ 1012 Joseph 变形约瑟夫环
子问题与原问题........题意:有k个坏人k个好人坐成一圈,前k个为好人(编号1~k),后k个为坏人(编号k+1~2k)现在有一个报数m,从编号为1的人开始报数,报到m的人就要自动死去。问当m为什么值时,可以使得在出现好人死亡之前,k个坏人先全部死掉?PS:当前一轮第m个人死去后,下一轮的编号为1的人 为 前一轮编号为m+1的人。 前一轮恰好是最后一个人死掉,则下一轮循环回到开原创 2014-11-10 09:41:12 · 978 阅读 · 0 评论 -
一些思维训练
题目:点击打开链接要多多关注序这个属性.1. 贪心算法,取满足条件下最合适的,排序+匹配即可.using namespace std;const int maxn=21000;const int INF=0x3f3f3f3f;int N,M,K,L;int h[maxn];int k[maxn];int main(){ while(~scanf("%d%d",&N原创 2015-04-29 10:14:08 · 727 阅读 · 0 评论 -
poj 3321 Apple Tree(树状数组)
辉煌北大的月赛题质量真高啊,这种树状数组真难想到。树状数组的基本用法是区间,单点的应用,起初这个怎么都想不到如何套用到树状数组。转化方法是 将树上的节点信息查询,转为深度优先中节点顺序(代表结点编号)。进结点与出结点分别代表该结点管辖范围。题目大意级是说,给你一颗树,最初每个节点上都有一个苹果,有两种操作:修改(即修改某一个节点,修改时这一个节点苹果从有到无,或从无到有)和查询原创 2014-10-30 22:17:21 · 690 阅读 · 0 评论 -
poj 2352 stars (树状数组)
这个题目刚开始没读懂,以为就是二维树状数组求上角矩阵和。其实根本不用二维,因为数据已经有序,每次求的时候都是X方向上的比较。不过误打误撞也写了个离散化的代码。WA:#include#include #include #include#includeusing namespace std;#define N 15000int c[N][N],n,mm; int d[N];原创 2014-10-29 17:42:45 · 570 阅读 · 0 评论 -
POJ 3253 Fence Repair 题解(优先队列实现哈夫曼树)
题目大意:一个农夫用一根长木板切成若干自己原创 2014-08-18 09:49:11 · 610 阅读 · 0 评论 -
Trie树模板
百度资料一大堆,编码过程中要注意这几个数组维护(貌似ACM中树都是用数组——线段树,脸是前向星实现的) int sz;//节点编号,累加量 int ch[Word_Len][sigma_size];//Trie树 int Have_Word[Word_Len];//该节点下的单词个数 int val[Word_Len];//路径长度 int pre[Wor原创 2014-11-17 12:51:01 · 866 阅读 · 0 评论 -
POJ 1934 Trip(LCS+枚举+输出所有路径)
这道题一看就是LCS,直接写个裸的,硬搜。TLEvoid print(int r,int c,int n){ if(dp[r][c]==0) { string ss=tp; ans[ss]=1; //sprintf(ansstr[cnt++],"%s\n",tp); return; } if(ph原创 2014-11-16 09:30:35 · 1377 阅读 · 0 评论 -
POJ 1179 Polygon(区间DP) -补充
这道题是典型的区间DP,老师给我们小学期的DP就这么难。。。。。现在才能刷完。原创 2014-11-15 00:48:40 · 622 阅读 · 0 评论 -
POJ 1935 树形DP
题目大意:带边权的树,给点一个根,问从根出发遍历某些点,所需的最小花费。这既然是一棵树,那么从起点k到任意一个的路径都是唯一确定的(这就是树形的好处),我们可以深搜它的孩子,在过程中如果没有要访问的节点就直接返回。否则将这条路径都标记。而且题目中可知不一定要返回到其实位置,那么可以在某个点停下。sum[0][u]:回到u点的最短路径sum[1][u]:不回到u点的最短路径sum原创 2014-11-16 10:44:47 · 1183 阅读 · 0 评论 -
POJ 2373 (Dividing the Path)单调队列优化DP
USACO的数据 点击打开链接另一个讲解:sunny606数据查找:点击打开链接根据月赛的名称,我们可以写出数据地址。比如08年一月的月赛即是:http://contest.usaco.org/JAN08 这里要注意区分大小写。题意:在长为L(这道题,想到是DP,但是阶段与状态刚开始没搞明白。想到将每个区间当作一个阶段,这样过去。但是问题依旧很多,没原创 2014-11-16 21:52:16 · 1812 阅读 · 0 评论 -
POJ 2726 Holiday Hotel 一道水题
貌似是当年楼教主出的题目。有N个旅店,两个属性,距离D,价格C。选择旅店,若选择M1.比M近的,价格比它高2.比M便宜的,距离比它远求有多少个这样的旅店① 暴力做法两次排序,按照不同的关键字。然后扫描,过程中记录下前面另一个关键字的最小值,然后比较。若数组中sel为2则是。#include#include#include#include#includeusin原创 2014-11-17 08:48:53 · 1425 阅读 · 0 评论 -
POj 1170 Shopping Offers(变形背包+进制优化) 100
商店买东西会有优惠政策,使用优惠政策使顾客花的钱尽可能的少。这道题很有现实背景啊,起初看这道题想的是用规则去优化各种组合情况的物品,并没有想到用背包。因为没有做过“规则”这种物品还有一点就是接收输入信息的时候若用高维数组很难控制,当时竟然写出了int (*it)[5][5][5][5] 这种东西。这时,进制优化发挥作用了,其思想类似于康托展开,且因为这个问题并不是直接将位置映射到数集,原创 2014-11-12 15:59:33 · 693 阅读 · 0 评论 -
POJ 1458 LCS 数组过小因编译器不同引发
按道理说LCS的问题应该讨论的很明白了,不应该出问题。昨天晚上手贱点开了暑期写的LCS滚动数组的代码。发现毫无逻辑错误。但却是WA,用的C++,。于是随手换了个g++ 却手动把1-flag 与flag相比较输出最大,就AC#include#include #include #define N 2000char str1[N];char str2[N];int dp[2][N]原创 2014-11-12 10:39:40 · 721 阅读 · 0 评论