- 博客(12)
- 收藏
- 关注
转载 BZOJ1500维修数列 splay
一道题昨天写了一天然后写的乱七八糟,后来发现自己思路有问题。然后找了两位大佬的题解: https://www.cnblogs.com/zig-zag/archive/2013/03/28/2987390.html http://blog.csdn.net/qwsin/article/details/53995984 侵删。 思路: splay也可以看作会旋转的线段树。每个结点有 size
2017-12-30 11:45:25 192
原创 Cow Neighborhoods(并查集+set+曼哈顿距离)
题意:了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个“群”.每只奶牛在吃草的时候有一个独一无二的位置坐标Xi,Yi(l≤Xi,Yi≤[1..10^9];Xi,Yi∈整数.当满足下列两个条件之一,两只奶牛i和j是属于同一个群的: 1.两只奶牛的曼哈顿距离不超过C(1≤C≤10^9),即lXi – xil+IYi – Yil≤C
2017-12-09 13:28:27 377
原创 POJ2761Feed the dogs (treap)
刚开始学treapA的第一个题,虽然是模板题,但是还是查了好久的错。而且这个题,用cin和cout输入输出会T #include #include #include #include #include using namespace std; const int maxn=100000+100; const int maxm=50000+500; struct Query{
2017-12-08 20:10:19 181
原创 HDU3308LCIS(线段树区间合并)
题意: Given n integers. You have two operations: U A B: replace the Ath number by B. (index counting from 0) Q A B: output the length of the longest consecutive increasing subsequence (LCIS) in
2017-12-02 19:01:06 286
原创 HDU4046panda (线段树)
题意: 给出一个只包含w和b的字符串,要求支持一下两种操作:1,统计区间[a,b]中wbw的数量。2,修改a[p]的值为v。 分析: 线段树,sum[o]为结点o的wbw的数量。 在建树时,对与o结点的sum[o]=sum[2*o]+sum[2*o+1];如果两个结点连接处有wbw则将sum[o]++;更新的过程类似于建树的过程。 在查询[ql,qr]区间的wbw数量时,当两个区间合并时
2017-12-02 18:08:23 233
原创 HDU2492ping pang (线段树求逆序对)
题意: 一条大街上住着n个乒乓球爱好者,经常组织比赛切磋技术。每个人都有一个不同的技能值a[i]。每场比赛需要3个人,两名选手,一名裁判。他们有一个奇怪的规定,既裁判必须住在两名选手的中间,并且技能值也在两名选手直接。问一共能组织多少种比赛。 1 分析 枚举2到n-1为裁判,假设c[i]为 a[1]到a[i-1]中比a[i]小的数量,d[i]为a[i+1]到a[n]中比a[i]小的数量。
2017-12-02 17:47:41 517
原创 HDU4825 01trie+二进制
题意:Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整数 S ,之后 Zeus 需要在集合当中找出一个正整数 K ,使得 K 与 S 的异或结果最大。 分析: 将每个集合中的数拆为二进制串的形式,存入字典树,对于每个正整数S,也拆为二进制串,我们知道异或具有开关性质,因此在字典树中查找的时候,
2017-11-18 11:39:43 159
原创 LA3644,LA3027 并查集,LRJ训练指南
两道训练指南上的例题。 LA3644: 装车,把一些两个元素组成的化合物按输入次序往车上装,如果会发生爆炸(存在k个简单化合物,正好包含k种元素),记录,输出不能装车的化合物总数。 分析: 每个化合物又两个元素组成,可以看作一个边连接着两个点。当边和点的数量相等的时候,就是这些边正好组成环的时候才满足,可以利用并查集来求环。 ---------------------------
2017-11-18 10:36:10 180
原创 LA3942 trie+dp
题意: 给出一个由S个不同单词组成的字典和一个长字符串。把这个字符串分解成若干个单词的连接(单词可以重复使用),有多少种方法? d[i]表示从i开始到字符串结尾有多少种分解方法。d[i]=sum{d[i+len(x)]},x是以i为开头的字典中的单词。一开始一直在纠结边界条件是什么,想先跑一边字典树把其中所有的单词的d[]都设为1,然后再进行dp。但是后来看了看其他人的代码,发现了一个很棒很巧
2017-11-12 10:09:57 291
原创 UVA 10457 ,uva10048 kruskal,最小瓶颈树,floyd
题意:m条路,每条路上必须维持速度v,现在有一辆车,启动能量和结束能量为a, b,途中消耗能量为经过路径最大速度减去最小速度,现在每次循环给定起点终点,问最小能量花费 这道题是个人赛的时候学长找的一道题,注意到q的值很小,所以对于每次询问都要进行计算,从小到大枚举边,作为最小值的边,然后再用比他大的边来跑kruskal,当起点和终点联通的时候(既处于同一个集合中),此条边减去最小值的边的值,
2017-11-10 19:27:41 236
原创 UVA1151buy or build 最小生成树+子集枚举
思路:按照紫书上给的思路写的,先跑一边kruskal,把每个边存起来。枚举套餐,然后只用存起来的边跑kruskal。思路很明确和清晰。对我来说,问题在于怎么枚举子集。按照紫书的方法是二进制来枚举子集。
2017-11-07 21:23:46 217
原创 UVA658,隐式图+最短路+二进制子集枚举
题目: 首先给出n和m,表示有n个bug和m个补丁。一开始存在n个bug,用1表示一个bug存在0表示不存在,所以一开始就是n个1,我们的目的是要消除所有的bug,所以目标状态就是n个0。对于每个补丁,会给出使用这个补丁的时间,另外会给出两个长度为n的字符串,第一个字符串表示这个补丁适用于什么情况下的bug,第二个字符串表示使用完这个补丁后原来的bug会变成怎么样。先说第一个字符串,s[i]=’
2017-11-07 14:35:03 283
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人