乱搞
Jiahe Xu
为何要去攀登珠穆朗玛峰,因为她就在那里啊.
展开
-
Heavenly Blue dfs+素数筛
Description escription 这颗星沾染了 天与水的颜色 淡地 彩虹的轮廓清晰了 又模糊了 迷人眼的夜色 你所吟唱的歌 究竟能 传达到这世界多远的角落 每个星球都有自己的一标号 每个星球都有自己的一标号 每个星球都有自己的一标号 每个星球都有自己的一标号 每个星球都有自己的一标号 每个星球都有自己的一标号 S,不断吟唱歌曲呼唤着另一个星球 ,,不断吟唱歌曲呼唤着另一个星原创 2014-10-23 10:37:57 · 627 阅读 · 0 评论 -
bzoj1019: [SHOI2008]汉诺塔 dp
根据操作方式,易知对给定任意状态->题中目标状态的操作序列均是唯一的.所以想到递推. 结合汉诺塔&&BLAH,可想到递推方程: f[x][i] ,g[x][i] 分别表示,当前x柱上有i个圆盘,将它们移至任意另一个柱的操作数,和另一柱子的编号.(如上,这显然对任意连续的i个圆盘,都是唯一固定的) f[x][i],g[x][i] 可由 f[][i-1],g[][i-1] 推得: 汉诺塔的经典转原创 2014-12-10 23:26:54 · 1027 阅读 · 0 评论 -
bzoj1269: [AHOI2006]文本编辑器editor rope
rope大法好!!!!!!!!#include #include #include #include using namespace std; using namespace __gnu_cxx; inline int read() { int x=0;char ch=getchar(); while(ch>'9'||ch<'0')ch=getchar(); while(c原创 2014-12-29 18:49:57 · 677 阅读 · 0 评论 -
bzoj3294: [Cqoi2011]放棋子 容斥原理
这道题的dp方程容易想到:令f[i][j][k]表示前i种颜色占了j行,k列的方案数,g[i][j][k] 表示用第i种颜色占了j行,k列的方案总数,则f[i][j][k] = sigma(f[i - 1][x][y] * g[i][j - x][k - y]);关键是g[i][j][k]怎么求,这就是经典的容斥原理了。 由于这个g函数里的数字都很小,所以就一开始打表处理吧,跟早上余行江讲的原创 2014-12-28 22:37:27 · 1084 阅读 · 2 评论 -
bzoj1830: [AHOI2008]Y型项链 贪心+乱搞
首先我们知道假如确定了某个长度的项链,那么多的肯定去掉。 我们可以先找两个串找出它们的公共部分,其余的删掉,再确定第三条。 由于三个项链是像栈一样的存储方式,我们从0开始往上有一个不同的话,后面的都得换,如果还要加入珠子的话操作不就更多了吗/#include #include #include #include using namespace std; int len[10]; cha原创 2014-12-14 22:04:13 · 979 阅读 · 0 评论 -
bzojNOI2003Editor stl_ROPE
rope大发好.......#include #include using namespace std; using namespace __gnu_cxx; crope list; int t,now; char ch[3000005]; inline int read() { int x=0,f=1;char ch=getchar(); while(ch>'9'||ch<'0'原创 2014-12-29 18:46:52 · 710 阅读 · 0 评论 -
spoj GSS4 - Can you answer these queries IV 线段树
字符串hash好题,当长度大于m*l时要把一开始多出来的部分原创 2014-11-01 14:44:45 · 624 阅读 · 0 评论 -
自定义set比较函数
#include #include #include using namespace std; struct node { int a,b; node(int aa, int bb) {a=(aa),b=(bb);} }; struct cmp { bool operator()(node s1,node s2) { if( s1.a原创 2016-08-15 20:47:38 · 721 阅读 · 0 评论 -
CF702E - Analysis of Pathes in Functional Graph
题目大意:给你一个图n个点n个边(有向),每个边长度为1,上面有一个数字。给你一个K 对每个点询问距离为k的路径中 所有数的和,以及所有路径中最小的数。n 题解:由于k很大,很明显得倍增,于是直接用RMQ就好了。#include using namespace std; #define sint long long const int maxn = 1e5+5; int f[maxn][42原创 2016-08-18 11:42:58 · 557 阅读 · 0 评论 -
bzoj1014: [JSOI2008]火星人prefix splay
spaly+hash,我的hash方式有点慢。。。。。#include #include #include #include #include using namespace std; #define maxn 200000 typedef long long sint; #define mod 9875321 int tr[maxn][2],fa[maxn],id[maxn]; int原创 2014-12-29 20:47:19 · 1098 阅读 · 0 评论 -
704B - Ant Man
题目大意:给你n个点的横坐标,及其相应的4个相关值。给定起点和终点,可以任意跳跃,要求每个点只能走一次,并且从起点走到终点。求消耗的最小值。 由两种消耗 |xi - xj| + ci + bj if j i |xi - xj| + di + aj otherwise (j > i) 范围:5000个点 题解:由于考虑顺序的话复杂度太大而且无法有效地控制终点位置。所以可以把此题原创 2016-08-14 10:03:36 · 650 阅读 · 0 评论 -
hdu5809 Ants KD-tree+并查集
初次接触kd树,其实kd树就是将空间上的点分块,然后暴力查找,查找的时候用估价函数判断最值。主要还是靠模板。 题意:二维平面上有n(10W)个点,蚂蚁一开始只会出现在某个点上,然后向着直线距离最近的点走。有10W个询问,每次询问两个点,询问从这两个点出发的蚂蚁是否会相遇。 题解:因为每个点的蚂蚁的行动路线是固定的,所以只需要把所有路线相连的点放入一个并查集里就好了,为了找到最近点可以使用kd树原创 2017-03-14 10:33:04 · 517 阅读 · 0 评论 -
hdu5726 GCD ST表+离线
给定一个序列,每次询问一个区间 输出这个区间上所有数的GCD,以及GCD与其相同的区间个数(整个序列) 一个连续区间的GCD,用倍增法预处理一下,就能做到 O(1)查询 对于相同区间计数,就把询问先离线一下 枚举区间左端点,区间GCD是随右端点递减的,并且是阶梯式的 并且由于GCD递减的很快,这样一个阶梯只有几层,可以当作log的 所以对于每一个GCD,二分右端点,就能求原创 2017-03-14 10:51:39 · 446 阅读 · 0 评论 -
hdu5782
给定两个长度相等的字符串 问他们的第 i个前缀是否循环相等 循环相等的定义是,两个长度相等的字符串 其中一个字符串能通过循环移位得到另一个 Bp[i][j]表示以B串中1~i为子串,和A中以j开头的子串是否匹配#include using namespace std; typedef pair Pii; typedef long long LL; typedef unsigne原创 2017-05-03 18:45:29 · 462 阅读 · 0 评论 -
zoj3966 Domino Tiling dp
题目大意:给你一个n*m的棋盘 你只能用1x2的格子拼接 且不能同时有4个不同格子的角汇聚在同一处。200组左右的输入 输出任意方案。 题解:由于限制条件太强所以最优方法是确定的 首先假设n#include using namespace std; #define orz printf("orz\n"); #define pf printf #define ss system("pause")原创 2017-05-09 18:27:30 · 941 阅读 · 0 评论 -
hdu4347 kd-tree询问k近点
亲测直接写暴力是过不了的,必须得加上神秘的剪枝技巧。 #include #include #include #include #include #include #include #include #include #define ll long long using namespace std; const int N=50007; const int K=6; int原创 2017-03-14 20:30:17 · 579 阅读 · 0 评论 -
bzoj2038: [2009国家集训队]小Z的袜子(hose) 莫队算法(分块)
莫队算法 能使用莫队算法的前提是这样的 如果我们已知[l,r]的答案,能在O(1)时间得到[l+1,r]的答案以及[l,r-1]的答案,即可使用莫队算法。时间复杂度为O(n^1.5)。如果那个只能在logn的时间求,则时间复杂度是O(n^1.5*log n)。 说白了,就是用一个“神奇的数据结构”维护插入、删除操作 这道题的话我们很容易用“数组”来实现那个“神奇的数据结构”,做到O原创 2014-12-08 22:25:49 · 604 阅读 · 0 评论 -
bzoj3781: 小B的询问 莫队算法
裸莫队,没什么好说的。。。。。。。#include #include #include #include #include using namespace std; #define maxn 60000 typedef long long sint; int n,m,k; int save[maxn],pos[maxn]; sint ans,s[maxn]; struct node {原创 2014-12-08 22:38:15 · 559 阅读 · 0 评论 -
poj3657 二分+并查集
二分哪一次操作是最后一次正确转载 2014-09-07 15:34:06 · 966 阅读 · 0 评论 -
vijosP1754 最优贸易
双向bfs第一次求最短路,第二次求最长路,两次的原创 2014-10-08 16:34:22 · 928 阅读 · 0 评论 -
poj3974 Palindrome 字符串
这个可以借鉴这篇博客http://blog.csdn.net/u013508213/article/details/29597201 #include #include #include #include #include using namespace std; #define maxn 1100000 char st[maxn],play[maxn<<1]; int p[maxn转载 2014-09-25 22:39:57 · 531 阅读 · 0 评论 -
poj2931 Ombrophobic Bovines dinic
坑点:答案很大会爆int 细节点很多,二分原创 2014-11-18 16:56:40 · 639 阅读 · 0 评论 -
bzoj3234: [Ahoi2013]立方体 括号法
看到题目首先想到200^4的乱搞。竟然有70分。。。。 正解是神奇的括号法,对8个角进行处理,然后求一下前缀和。 再从一个没被包住的点开始访问,如果访问到一个点的f值是正数,说明这是一个面。#include #include #include #include #include using namespace std; int f[210][210][210]; bool vis[2原创 2014-11-30 22:22:01 · 689 阅读 · 0 评论 -
BZOJ1011: [HNOI2008]遥远的行星 乱搞
这真是一道坑爹的题目啊,虽然我猜到怎么做了,但是还是不会搞。 设f[i]表示第i个行星所受的引力,g[i]表示第i个行星所受引力的最后来源行星。 则: 注意到题目中说了误差允许在百分之五之内,所以我们考虑f[i+t]与f[i]的关系。 由于: #include #include #原创 2014-11-29 12:50:14 · 719 阅读 · 0 评论 -
bzoj1007: [HNOI2008]水平可见直线 凸包
一种类似于凸包的做法。 相同斜率的直线 b小的会被b大的遮住。 不同斜率的直线最后就会构成一个像开口向上的二次函数的图像。 按照斜率排序,再一个个加到栈里面。 相同斜率的直接判断,不同斜率的直线间可以发现,设栈顶编号为(top);如果当前直线和栈中编号为(top-2)的交点横坐标在 直线(top-1)和(top-2)交点的左侧,那么当前直线就把top遮住了。 建议自己画图。 交点横坐标原创 2014-11-28 23:36:38 · 631 阅读 · 0 评论 -
bzoj3105: [cqoi2013]新Nim游戏 高斯消元
Sol: 我们第一次拿完后,要使得剩下的火柴中不存在异或和为0的子集,否则对方会将先手必败的状态留给我们。 因此我们需要寻求极大的线性无关组,答案即为总和减去极大线性无关组的权值和。 显然存在线性无关组,因此必然存在解。 那么如何求解极大线性无关组呢? 我们能够证明这是一个拟阵,因此只需要从大到小排序,依次贪心的添加到当前集合就可以了。 有关拟阵的证原创 2014-12-22 12:54:20 · 839 阅读 · 0 评论 -
bzoj 1941 kd-tree求最大最小曼哈顿距离
给出平面上n个点,求距离每个点最大距离减最小距离(不算自己)的最小值;(曼哈顿距离) n#include #include #include #include #include using namespace std; #define ll long long #define maxn 600000 #define inf 2100000000 in原创 2017-03-14 10:38:48 · 1021 阅读 · 1 评论