- 博客(30)
- 问答 (1)
- 收藏
- 关注
原创 洛谷 1379 八数码难题
题目:八数码难题思路:bfs+hash判重。注意:1、hash的链表不能写错。2、由于用的是一位数组,所以移动时要判断左右边界。比如当前的空位在5处,就不能向右移+1。0 1 23 4 56 7 8代码:#include<iostream>#include<cstdio>#include <cstdio>#include <iostream>...
2017-12-31 13:52:48 306
原创 LA 4670 Dominating Patterns
题目:Dominating Patterns 思路:ac自动机。注意有重复。 代码: #include<iostream>#include<cstdio>#include <cstdio>#include <iostream>#include <algorithm>#include <stack&...
2017-12-28 16:37:09 238
原创 ac自动机模板 1
题目:ac自动机模板 代码:#include<iostream>#include<cstdio>#include <cstdio>#include <iostream>#include <algorithm>#include <stack>#include <queue>#include
2017-12-28 13:51:15 195
原创 洛谷2292 HNOI2004 L语言
题目:思路:trie+dp。先将所有单词 倒着 存进字典树,val为单词的长度。对于每一篇文章,bool f[i] 表示前i个字符能否被破解。其中如果前i个字母构成的字符串的后缀中有在字典树中存在的单词,则只需要看这篇文章去掉单词后缀后剩下的前面一段能否被破解。也就是说 只要存在任意 j,使得 f[ i - val[ j ] ] = true,那么 f[i]=true。最后只需找到最大的i使得 f...
2017-12-27 10:39:20 230
原创 LA 3026 Period
题目:Period思路:假如一段字符串有周期,那么 i - next[i]一定是最小周期长。因为next[i]表示最长的相同前缀、后缀的长度,假设这个有周期的字符串一共有x个周期,此时,最长的相同的前缀、后缀是 第1到第x-1个周期 和 第2到第x个周期,则一个周期长就是 i-next[i]。比如一个字符串为 abcabcabc,next=6,i=9,则周期长为3。如果一个字符串的 i%( i -...
2017-12-26 16:35:49 235
原创 【模板·字典树(trie)】 洛谷2580 于是他错误的点名开始了
题目:于是他错误的点名开始了 思路:trie树模板。 代码: #include <cstdio>#include <iostream>#include <algorithm>#include <stack>#include <queue>#include <deque>#include &...
2017-12-26 15:41:15 374
原创 洛谷2375 NOI2014 动物园
题目:动物园 思路:kmp。就是把nxt求出来后再顺着nxt往前匹配,直到满足条件为止。要设一个数组记录nxt为i时的公共前后缀数量。注意查询时,要重复利用j,不然会TLE成50'。 代码:50'代码:#include<bits/stdc++.h>using namespace std;#define md ((int)(1e9)+7)...
2017-12-26 13:07:34 392
原创 uva 11732 strcmp() Anyone?
题目:"strcmp()" Anyone? 思路:将所有单词记入trie中,再查找。 注意:1、用 long long 。2、在插入时,应在字符串后多插入一个\0,不然 "there" 和 "the" 这种会有问题。 代码: #include <cstdio>#include <iostream>#include <a...
2017-12-25 11:23:16 327
原创 LA 3942 Remember the Word
题目:Remember the Word思路:递推+trie。注意:1、不能用string,不然会超时。2、strlen不能算很多次,不然会超时。3、如果写了构造函数,并且在一个函数中调用,会挂。代码:#include <cstdio>#include <iostream>#include <algorithm>#include <stack>...
2017-12-23 20:31:34 314 1
原创 LA 3938 Ray, Pass me the dishes!
题目:"Ray, Pass me the dishes!"思路:线段树。代码:#include <cstdio>#include <iostream>#include <algorithm>#include <stack>#include <queue>#include <deque>#include &
2017-12-19 12:38:23 248
原创 uva 11987 Almost Union-Find
题目:Almost Union-Find思路:并查集。对于操作 2 x y ,此时既要把x移动到另一个集合,又要保证x下挂着的数能连接到根节点。所以可以把数x复制一份到另一个集合,原集合中的x的数值、数目都不存在,但是仍然指向根。代码:#include #include #include #include #include #include #incl
2017-12-15 11:18:03 294
原创 LA 4487 Exclusive-OR
题目:Exclusive-OR思路:并查集。先将 I p v 的格式转化成 I p n v ,其中n为一个虚拟的根节点,在此后,n一定也要做根节点。然后就可以借助并查集来记录两数之间的关系。其中 fa[i] 记录 i 的根, d[i]=i ^ fa[i] 。如果x、y共一个根节点,那么 x^y = x^fa^y^fa = d[x]^d[y] 。对于每一个询问,要知道它是否
2017-12-14 22:32:05 269
原创 洛谷1273 有线电视网
题目:有线电视网思路:DP。f[i][j]表示根节点为i的子树中选j个叶子节点可以得到的最大利润。代码:#include #include #include #include #include #include #include #include #include using namespace std;int n,m;int a[3005]={0}
2017-12-13 12:48:50 237
原创 洛谷2014选课
题目:选课思路:先把森林转成二叉树,再记忆化搜索。代码:#include #include #include #include #include #include #include #include #include using namespace std;struct Node{ int l,r,fa; Node(){r=-1,l=-1,fa
2017-12-13 09:48:53 400
原创 洛谷1040 加分二叉树
题目:加分二叉树思路:DP。f[i][j]为中序遍历为a[1][j]的二叉树的最大分值。枚举根节点k,转移方程:f[i][j]=f[i][k-1]*f[k+1][j]+a[k]代码:#include #include #include #include #include #include #include #include #include using n
2017-12-13 09:45:19 338
原创 uva 11136 Hoax or what
题目:Hoax or what思路:STL中的multiset。代码:#include #include #include #include #include #include #include #include #include using namespace std;multiset s;int main() { int n; whi
2017-12-12 12:25:47 210
原创 洛谷2704 炮兵阵地
题目:炮兵阵地思路:位运算+记忆化搜索注意:记忆化时要存2个状态代码:#include #include #include #include #include #include #include #include #include using namespace std;#define maxn 100#define maxm 10
2017-12-12 11:02:10 341
原创 洛谷1879 [USACO06NOV]玉米田Corn Fields
题目:Corn Fields思路:记忆化搜索+位运算 。代码:#include #include #include #include #include #include #include #include #include using namespace std;long long m,n;long long b[5000]= {0};long l
2017-12-12 09:09:39 363
原创 洛谷2915 usaco08nov 奶牛混合起来 Mixed Up Cows
题目:Mixed Up Cows思路:状态压缩DP。f[i][j]:i的二进制表示已经排过的牛,j表示最新的被加进来的牛。对于选择接下要加进来的牛u,只需要考虑他和j的关系(只和相邻的有关),及只要u和j的距离代码:#include #include #include #include #include #include #include #inc
2017-12-11 22:27:02 269
原创 uva 11235 Frequent values
题目:Frequent values思路:由于这一串数是不下降的,可以看出所有相等时的数都在一起。由此,可以把相同的几个数简化成一段数,设这一段数的值为这一段中数的个数。对于提问的一段,一般的可以分为3段:左边、右边两段不完整的,中间由几段完整的数拼起来的。也有分成2段不完整的,或只有一段不完整的情况,这些特殊处理即可。还是说3段的那种一般情况,两边的可以直接计算,中间一段中的
2017-12-11 13:34:30 214
原创 LA 4329 Ping pong
题目:Ping pong思路:树状数组。设a[i]是一个人i的数值。根据乘法原理可以看出,对于每一个人i而言,以他为裁判一共可以举行的比赛场数= 在他左边数值比他小的(c[i]) * 在他右边数值比他大的(n-i-d[i]) + 在他左边数值比他大的 (i-1-c[i]) *在他右边数值比他小的 (d[i]) 。此时,要求c[i]和d[i],就可以用树状数组。对于每一个裁判i,先设f[
2017-12-11 09:59:56 342
原创 LA 3027 Corporative Network
题目:Corporative Network思路:并查集。注意:只能将i挂在j上,不能写成了把i挂在j的根节点上。代码:#include #include #include #include #include #include #include #include #include using namespace std;int n;i
2017-12-10 21:59:07 195
原创 LA 3644 X-Plosives
题目:X-Plosives思路:并查集。只有当存在环时,才有可能爆炸。代码:#include #include #include #include #include #include #include #include #include using namespace std;int f[1000000];int find(int x){ if(
2017-12-10 21:56:03 232
原创 uva 11997 K Smallest Sums
题目:K Smallest Sums思路:如果假设在前i行中,已经求出了k个最小的和,那么,也可以求出加上第i+1行数后的k个最小值(及第i+1行中的结果只和前i行的结果有关)。所以,如果把前第i行得到的k个数看成一行,这题可以拆分成k-1个小问题,即:在两行数中找出k个最小的值。然后,对于其中的每一个小问题,可以运用归并排序的思想,只是要用到优先队列。每一次将和最小的弹出,把
2017-12-10 21:53:15 244
原创 LA 3135 Argus
题目:Argus思路:模拟,把每一次的情况存入优先队列。代码:#include #include #include #include #include #include #include using namespace std;struct A { int x,y; A() {} A(int xx,int yy) { x=xx,y=yy;
2017-12-09 22:51:45 204
原创 uva 11991 Easy Problem from Rujia Liu?
题目:I Can Guess the Data Structure!思路:略。代码:#include#include#include#include#include#include#includeusing namespace std;map > mp;int n,m;int main() { while(~scanf("%d%d",&n,&m)
2017-12-09 22:47:20 203
原创 uva 11995 I Can Guess the Data Structure!
题目:I Can Guess the Data Structure!思路:模拟。代码:#include#include#include#include#includeusing namespace std;int n;int main() { while(~scanf("%d",&n)) { bool fstack=1,fque=1,fpri=1;
2017-12-09 22:44:26 172
原创 uva 11729 Commando War
题目:Commando War思路:优先队列代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;struct A{ int x,y; A(){} A(int xx,int y
2017-12-09 22:41:53 244
原创 uva 11292 Dragon of Loowater
题目:Dragon of Loowater思路:贪心,每个头都让刚好能砍掉这个头的能力最差的人砍。代码:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;int a[20005]=
2017-12-09 22:38:26 249
空空如也
关于splay的分裂与合并问题
2018-08-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人