ACM解题记录
文章平均质量分 78
keroro520
这个作者很懒,什么都没留下…
展开
-
HDU 2433 最短路
/* 最短路 好题 题意:给出边建图,然后分别删除各条边,问每一次删边后的所有端点的两两最短路之和,若有一对端点不连通,则返回INF 思路:暴力解法是每次删边后都来n次最短路。这里面的冗余就是删除的边并不影响一些点的最短路树,所以这些点可以不用在删边后都来次dijkstra>。标程解法就是在暴力解法上加上一些剪枝。先预处理出所有点原创 2013-06-19 19:35:53 · 720 阅读 · 0 评论 -
poj 3694 双连通 缩点 桥 LCA
/* 双连通 缩点 桥 LCA 题意:给一个无向连通图,问每次新加进一条边后,图中桥的数目。 重边算一条。 思路:求双连通分量,利用并查集缩点,形成一棵树,树边肯定都是桥,然后每对点x,y,找原图中x,y点对应的新图中的点,如果不是一个点,则向上>找它们的LCA,因为它们之间连了一条边,所以这些点到它们的LCA之间的边都不是割边了,找L原创 2013-07-31 16:03:35 · 694 阅读 · 0 评论 -
ISAP模板 邻接表
/* ISAP模板 邻接表 */int cur[MAXN], head[MAXN], aug[MAXN], pre[MAXN], gap[MAXN], dis[MAXN];struct Edge { int u, v, next, cap; Edge () { } Edge (int u, int v, int next, i原创 2013-07-31 16:08:52 · 1092 阅读 · 0 评论 -
bzoj 1878 [SDOI2009]HH的项链 树状数组 离线查询
这两场多校都有树状数组+离线查询,之前没做过这种题目,今天做了一道,觉得很妙。/* 树状数组 区间维护 区间查询 离线查询 经典题 题意:数组大小为N, 有Q个询问:不断查询区间[L, R]内的不同数字的个数。 思路:离线存所有询问,按左端点为第一关键字,右端点为第二关键字排序。 初始化:对于每个数字x第一原创 2013-08-02 12:14:52 · 1158 阅读 · 0 评论 -
hdu 4630 no pain no game 树状数组+离线查询
理解好这道题的树状数组所代表的含义是解题的关键,可是网上的题解都没点出其树状数组的含义(难道是大家都觉得太简单了吗=_=),然后我看题解都看不会,这两天切了几道简单的同类型题,有所收获。 反正我第一次想通这类树状数组的含义时是挺orz的...下面记录是建立在对树状数组的Update/Query过程已经有一个感性的理解的条件之上的。 Update(p, value)原创 2013-08-04 09:59:45 · 2549 阅读 · 2 评论 -
hdu 4336 概率DP 状压DP
/* 概率DP 状压DP 条件期望DP 好题 题意:有n种卡片,一袋面里有一张卡片或者没有。给出每种卡片出现在一袋面里的概率,问要收集完n种卡片所需要买的袋面数目的期望(n 思路:状压表当前已收集到的卡片的状态,位为1表收集到了,0表没有收集到。 对于状态T,考虑最近买的那袋面之前的状态S(也就是状态X在买了这袋面之后变成原创 2013-08-06 01:41:05 · 612 阅读 · 0 评论 -
lightoj 1061 KM 二分图匹配
/* KM 二分图匹配 MCMF DP 搜索 好题 题意:在8*8棋盘上,给出8个皇后的初始位置,要求移动这8个皇后使得皇后之间互不攻击。皇后移动一步可以沿直线或对角线移动任意个格子,但不>能跨过一个原本有皇后的格,即会被有皇后的格挡住。皇后的攻击方式跟移动方式一样的。 问最小移动总步数。 思路:neko最初给我看的时候我第一反原创 2013-08-09 03:39:16 · 744 阅读 · 0 评论 -
Splay树笔记 poj 3486
/* 学习资源: UnGeek kuangbin总结 国外好玩的splay demo(什么策略能把一棵splay树拉成一条链呢) 两篇论文: 杨思雨《伸展树的基本操作与应用》 Crash《运用伸展树解决数列维护问题》 ** 把kuangbin的数组形式改成结构题形式怎么比原来快了1s原创 2013-08-11 21:27:24 · 805 阅读 · 0 评论 -
virtual ABBYY2.0 Eazy
今天做virtual ABBYY2.0 Eazy,D题死活没搞出来,自己出的数据都过了但就是WA在第4个点上。题不难,难在是否能把情况都考虑到,是否处理了所有情况,区间有重叠什么的。处理边界还有琐细的情况是我的弱项,常常自己觉得好像都考虑到了,又没有很大的把握。赛后看xianxingwuguan和fubao的代码,感觉他们的处理方式简单而巧妙。利用普遍的性质来覆盖掉琐细的细节,就是可以不用考虑原创 2013-10-05 23:48:37 · 726 阅读 · 0 评论 -
hdu 4790 数论 实现 组合数学
题意:从给定的[a,b]区间选出一个数x,从[c,d]区间选出数y,问有多少对(x,y)满足(x+y) % p = m思路:其实成都现场赛的时候我在网上就看到题了,觉得这道题我自己的算法编码好麻烦,现场这么多大神过,应该有什么简单的解法吧。。然后,然后成都现场赛重现之后看了几个题解,编码都挺复杂的------对我这种一分多种情况考虑就跪的菜鸟来说。于是硬着头皮按自己的思路写了一发,原创 2013-11-18 18:52:19 · 1006 阅读 · 0 评论 -
CF round#205 D
昨天做CF D题,是neko搞出来的,赛后看了一下standing上别人的代码,记下对这道题的理解。problem link: http://codeforces.com/contest/353/problem/D首先来一个最短的代码:for(int i = 0; i < n; i++) { if(str[i] == 'M') x++; else if(x) y = m原创 2013-10-11 13:27:01 · 599 阅读 · 0 评论 -
poj 1436 区间线段树 离散化
/* 线段树 扩点 扩线 区间覆盖 好题 题意:给出n条平行于Y轴的线段(y', y'', x),然后3条一组,问有多少组可见线段组。“可见”的定义为,两条线段能由一条水平先连接但不交于其它的线段。“可见线段组”的定义为该组内的3条线段两两可见。 心得:之前看poj_3225,死活看不懂,跳过了。做这道题,它们的离散化方法是一样的:线原创 2013-07-31 15:46:35 · 662 阅读 · 0 评论 -
hdu 2732 最大流
/* 最大流 拆点 简单图论 SAP 题意:有一些蜥蜴在一个迷宫里面,求这些蜥蜴还有多少是无论如何都逃不出来的。蜥蜴最远能够跳跃距离D,若某一时刻蜥蜴能跳到迷宫外围,则算>蜥蜴逃出来了。每只蜥蜴有一个初始的位置,题目保证这些位置都有一些柱子,每次蜥蜴从一个位置跳到另外一个位置的时候,就会由于反作用力使得一根柱子倒下。每根柱子都有最大jump数,若有超过jum原创 2013-07-31 16:08:36 · 658 阅读 · 0 评论 -
poj 2942 双连通 点双连通 边双连通 奇圈
/* 双连通 点双连通 边双连通 奇圈 经典题 好题 TLE + WA 了 N次,终于AC了... 题意: 亚瑟王要在圆桌上召开骑士会议,为了不引发骑士之间的冲突,并且能够让会议的议题有令人满意的结果,每次开会前都必须对出席会议的骑士有如下要求: 1、 相互憎恨的两个骑士不能坐在直接相邻的2个位置; 2、 出席会原创 2013-07-31 16:00:16 · 671 阅读 · 0 评论 -
HDU 2377 最短路
/* 最短路, 终点集合到s的最远距离最短,求s. 即已知终点集{d}求一s使得Min{ max{ dis(s, di) } } 好题 思路: 多次单源最短路,选出最大值 在对每个x进行分层搜索的过程中, 用max_d[y]记录每个地区x到达地区y的最短距离中的最大值. 最后求得原创 2013-06-19 19:39:33 · 725 阅读 · 0 评论 -
HDU 2586 LCA
/* 最小公共祖先 题意: 给出一颗无向有边权树, 询问若干个(u,v)对的距离. 所谓LCA 的Tarjan算法, 实际上就是在建树的过程中把query中的lca给计算出来, 所以称为`离线算法` . 是的, 本质就是这么简单, 好多解释都搞复杂了. 步骤略, 自己google. 理解这个算法一定要抓住`递推`的思想(也有递归在里面,原创 2013-06-19 19:41:03 · 746 阅读 · 0 评论 -
njupt 字典序最大的出栈序列
/* 题意:给出入栈序列{A},保证{A}各个元素值各不相等,输出字典序最大的出栈序列. 如入栈序列{A} = 1, 2, 9, 4, 6, 5 则字典序最大的出栈序列为9, 6, 5, 4, 2 1 思路:栈的性质就是先进后出,所以对于依次入栈的两个元素a,b,有两种情况: 先压a进栈,不弹出,再压b进栈,则最原创 2013-07-24 11:53:50 · 3019 阅读 · 0 评论 -
njupt Keroro侵略地球
E. Keroro侵略地球Keroro来侵略地球之前,曾跟Giroro伍长打赌:“我一个人灭掉整个地球给你看!”.于是Keroro同学真的自己一个人来到地球开始他的侵略行动了。从K隆星出发之前,Keroro从Kururu曹长那儿拿了若干台左手武器{Li}和若干台右手武器{Ri},Keroro需要从{Li}里选一台左手武器,从{Ri}里选一台右手武器,用来组合成可用的恐怖武器。左原创 2013-07-24 11:58:17 · 737 阅读 · 0 评论 -
njupt 会漏的栈
出题原意是考双端队列,但是因为A题要让大家都过,所以把数据搞得很小。第一份代码是纯数组模拟栈暴搞的,遇到大数据会完蛋,第二份是用双端队列模拟,可以胜任大数据的情况。/* 纯数组模拟栈暴搞*/#include using namespace std;int S[10005];int K, top , m, x, bottom;int main(){ string s原创 2013-07-24 11:51:43 · 560 阅读 · 0 评论 -
njupt 社团吞并
C. 社团吞并某段时间社会上流行企业收购,而南邮也受此社会风气影响,各个社团到处想着吞并其它社团,以实现扩张势力范围且梦想着统治南邮社团,于是,凶残的“社团吞并风波”就是这样开始了...已知每个社团有两个个属性:势力,标签。 势力代表一个社团的强大能力,任何一个社团只能吞并势力比它小的社团。标签代表该社团是属于什么类型的>,一个社团可以有多个标签,如传媒科协有“技术类”原创 2013-07-24 11:57:04 · 687 阅读 · 0 评论 -
poj 3667 区间合并 区间线段树
/* 区间线段树 区间合并 题意:Hotel有N房间,两种操作:一种checkin(x),某个团的x个人要住连续的x间房间(k,k+1,..,k+x-1),若有合适的房间则输出最小房间编号k,否>则0,表示谢绝这个团的生意。另一种checkout(x,y),原住x,x+1,..,x+y-1的人要离开,则这些房间就空了出来,这里面可能有一些原本就是空的。 思路原创 2013-07-31 15:54:17 · 543 阅读 · 0 评论 -
hdu 1394 线段树求逆序数
/* 线段树求逆序数 求小逆序数 神奇 题意:给定一个序列,对该序列的n种排列(排列如下)的每种排列(0 ~ n-1)的逆序数求最小值: a1, a2, ..., an-1, an a2, a3, ..., an, a1 a3, a4, ..., an, a1, a2 ...原创 2013-07-31 15:43:28 · 608 阅读 · 0 评论 -
uestc 1546 括号序列 区间线段树
/* 区间线段树 区间覆盖 括号序列 lazy 题意:给一串括号序列,问[l,r]的括号序列是否合法。合法的定义:1,Empty 2,S合法,则(S)合法 3,A和B合法,则AB合法。有两种操作,一种一般区间修改(reverse, set),还有Query. 思路:之前一遇到括号序列就跪,因为我到现在都搞不清楚what is regul原创 2013-07-31 15:49:05 · 983 阅读 · 0 评论 -
uestc Another LCIS 区间线段树
/* 区间线段树 lazy 延迟标记的好题 题意:求区间最长*连续*上升序列。两种操作:一般的询问(l,r),要求返回该区间的LCIS(longest continuous increasing subsequence);add操作(l,r, add_value) 思路:很久很久以前看过解题思路了,不过要开始写的时候又想犯懒直接看题解,最后还是忍原创 2013-07-31 15:53:02 · 614 阅读 · 0 评论 -
codeforces 241 div2
A, B,C略D./* 思路题 多if 题意:给一个正整数数列A. 问你这个数列至少可以拆成多少个等差数列. 拆的时候要连续. 如(8, 6, 4, 2, 1, 4, 7, 10, 2) 就可以拆成(8, 6, 4, 2), (1, 4, 7, 10), (2) 现在这个数列里面会出现 -1 ,表示这个位置的数未知,你可以用任意正整数替换. 所以,原创 2014-04-15 18:01:05 · 795 阅读 · 0 评论