- 博客(70)
- 收藏
- 关注
原创 bzoj 2741 分块 + 可持久化trie
题意是求 【a,b】 中 的最大字段异或和。 。看了神牛题解才会的。首先将 区间 转化成 前项和 中两个的异或值。 也就是 将 1- n 个数a[ ],转化成 0-n 个数的数列b[ ]。 也就是b[ r ] ^ a[ l ] = a[l+1] ^ a[l+2]^...^a[ r ]b[2] ^ b[ 0 ] = a[1 ]^a[ 2 ] 在查
2013-11-03 13:29:58
2842
原创 bzoj 3166: [Heoi2013]Alo 可持久化trie
题意 : 选取一个区间 区间中的第二大的那个数 可以跟 区间中的任意一个数 进行 异或得到一个区间内的最大的值。 问任意选取区间,问最大的那个 异或的值是多少。 ? 枚举每个数是 区间中的 第二大的值, 找到 可行的区间,可行区间就是 : [ 左边第二个比这个大的数的下标 +1,右边第二个比这个数大的数的下标-1];然后 可持久化 tire ,求 区间 对于 a 的
2013-10-31 19:27:52
2487
原创 bzoj 3261 最大异或和 可持久化trie树
查询 i 属于【l,r】 中 p[i] ^ p[i+1 ] ^ ....^p[n]^x 中的最大值b【i】 为 p【1】^p【2】^……^p【i】 的异或值。也就是查询 b【i-1】^ b【n】^ X (i属于 [l,r])也就是变成在 一个区间中查询 对于A = (b[n]^ X)的最大的异或值。所以应该维护 b【i-1】。trick 对于 i =1 b
2013-10-30 22:34:00
5732
原创 spoj COT 可持久化数据结构 (LCA模版)
查询树链第K大 。 每个版本的线段树维护的是 从这个节点到 根的 树链的版本, 由于树链第K大,在统计比X 小的数个数时 是可以 进行加减法运算的,所以 就可以用可持久化数据结构。维护个数时 , sum = f(a) + f(b) - f(c) -f(d) : c 为 a,b 的最近公共祖先, d 为 c 的父亲节点。这样就是 四个版本运
2013-10-30 10:26:34
1600
原创 LA 6348 数据结构
想法题: 坑爹细节没想清楚就敲了 。。 整体的思路 在更新的时候出了问题。 10WA->AC 。。 战绩成渣了。。。 弱渣的艰辛奋斗史。,。。 题意是 : 给出 n个矩形,问每一个外边的那个矩形 的编号。 (0 -> n-1) 性质: 对于矩形 a,b ,若 a.x2 b.x1的矩形 同样不会在a 矩形中。(单调形)。性质2:若 a
2013-10-29 15:17:32
774
原创 bzoj 3207 hash + 可持久化数据结构
思路: 把长度为K 的串 hash 之后,就变成 查询区间中有没有某个数。不知道为什么 RKHash 的思想 hash 时一直不过, 暴力 O(NK) hash 时 可以通过。 // 。。。bzoj 3207 打死不过 给跪了#include #include #include #include #include #include #inclu
2013-10-28 17:22:11
1854
原创 bzoj 2653 middle 二分+ 可持久化数据结构(可持久化感悟)
本以为可持久化数据结构掌握的还不错,通过此题 我顿时觉得 可持久化数据结构比我想想的要强大。本以为只有在用到 树上的减法才会用到可持久化数据结构的,如动态区间第K大 这种 明显就是用了 区间属性 可以 两个 前项和的属性 相减得到 。此时 可持久化数据结构是 按 下标建树,构建了n个版本的树。第 K 棵树 表示的是 区间 1-K 的属性。第K版本的意义并非只有 区间 1-K。完
2013-10-26 22:46:12
3613
原创 bzoj 2120 数颜色 树状数组套可持久化数据结构。
查询区间l,r 中 不同值的个数, 修改操作是 单点更新。如果没有更新,此题直接 离线。有更新的话,就只有 树状数组套 平衡树 或者 可持久化数据结构。 问题一 。统计 在 【1,l-1】中都多少个值没有出现在 【l,r】。也就是统计 【1,l-1】中有多少个值,在【1,r】中仅出现在 【1,l-1】。统计 对于ai ,它的下次出现与ai 值相同的点的下标是多少。 相当于 把所
2013-10-16 12:25:56
2715
原创 bzoj 1901 动态区间第K大 树状数组套可持久化数据结构
空间复杂度 nlgnlgn 在zojMLE 大视野 AC第一次用树套树。。写的 不优雅。/************************************************************** Problem: 1901 User: OceanLight Language: C++ Result: Accepted
2013-10-14 20:06:42
2371
原创 poj 2104 K-th Number 静态区间第K大 可持续数据结构
静态区间第K大。。首先应该会 集合第K大的方法。 按值建树,[i,j] 分成【i,p】 【p+1,j】 线段树中的均分。 如果sum(i,p)>=k ,说明第k大在左区间,接下来在左区间找第k大,否则 在右区间找 第k-sum(i,p)大。。利用可持续数据结构 相减的性质, 每次求出在下标 left 到right ,值在 【i,p】的数的个数。#include #in
2013-10-14 20:03:35
1497
原创 可持久化线段树
给定一个序列 求在 li ri 之间的 数值大小在 【a,b】 的数的个数 有多少个 ?山东省省赛题目。 当时离线直接水过。 http://acm.upc.edu.cn/problem.php?id=2224#include #include #include #include #include #include #include #include #inc
2013-10-12 19:58:27
3600
原创 sgu 114 三分
题意: 在一条直线上 到每个点pi 个人,位置xi 。 建一个中转站 ,每个位置上的 不高兴 的值 就是 pi*( xi - X) ,X 为 中转站。问不高兴的值的总和最小是多少。对一个位置 向两边的变化速率的分析的。 一个点向右的速率是 左侧人数和 减去 右侧人数和。随着点从左端向右端移动的过程中 速率由负值一直增大, 则总和的变化就是 下凸曲线,就是三分曲线。
2013-10-10 21:36:48
754
原创 sgu 204
此题就是个坑题, 卡精度,eps 1e-12 才可过 并且最终答案 f(left) 不可行。。 只能是 最终left right mid 中的小的值。。。话不多说,代码#include #include #include #include #include #include #include #include #include #include
2013-10-10 19:36:27
839
原创 hdu 2298 Toxophily 公式 或者 三分+二分。
射箭 为射到靶子的最小出手角度。 出手速度 、靶子的位置 给出。公式推导。三角函数 推导 求解。最终公式 sin(2*p -q ) = (g*a*a + b)/(v*v * sqrt(a*a + b*b))a , b 为靶子的坐标 v是出手速度。p 要求的角度cos q = a/ sqrt(a*a + b*b);#include
2013-10-09 15:58:41
724
原创 hdu 4686 Arc of Dream 矩阵快速幂
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
2013-10-08 01:01:03
956
原创 hdu 3306 Another kind of Fibonacci 矩阵快速幂
Now we define another kind of Fibonacci : A(0) = 1 , A(1) = 1 , A(N) = X * A(N - 1) + Y * A(N - 2) (N >= 2).And we want to Calculate S(N) , S(N) = A(0)2 +A(1)2+……+A(n)2.s( n ) = s(n-1) + An^2
2013-10-08 00:25:08
1030
原创 hdu 3400 Line belt
先求一个点到 一条线段的最小值。从P 到B . 从 c 到 A 肯定是增加的 。设 cd 为x ,cb 是 L2 pc 是L1线段上 速率是 k2 其余为 k1t = sqrt(L1*L1 + x*x )/k1 + (L1 -x);求导。 f = 2/(k1 * sqrt(L1 *L1 + x*x)) *x - 1/k2随着x 的增大 f 逐
2013-10-07 15:30:50
804
原创 ZOJ 3203 Light Bulb
设 人离墙的距离是 x 则 F(x) =(H*x - D*h )/(x - D) + x;分析易得 是 a/x + x 小于 0 的部分 , 再加上一个常数。但是重要的一点是 : F(x) 的定义域并不是 0到 D 。 而是 0到 D*h /H .当超出这个区间时,在墙上部分 (H*x - D*h )/(x - D) 变成负值。无意思。 在三分求函数时一定要注意定
2013-10-06 23:13:20
661
原创 poj 3301 Texas Trip 三分
求n个点的最小包围正方形。对于其中的任意两个点构成一条边, 包围这条边 的正方形的边长,分析易得, 随着这条边的旋转角度的变化是 下凸曲线 ( 先下降后上升 ) 。然而 对于 n*(n-1) 条边的状态和, 对于 旋转角度 x ,所有边的状态和 是 求max (分析易得)。所以 n 的下凸曲线 的max 构成的曲线 还是下凸曲线。因此对于所有的点 通过旋转 求的面积
2013-10-06 14:07:19
1097
原创 hdu 3756 Dome of Circus 三分
求 能包围 n个点的 最小体积的圆锥 的 高 和 底面半径。对于一个点而言,通过分析 体积公式。 求导后,公式是单点的。 所以 体积公式是 先下降 后上升 (推导和分析好一会)。而对于n个点, Fi (h) 为高为h 时最小体积。 对于 高 h,得到 最小 V = max( Fi (h)) i 为 1--n 分析的 n 个 对钩函数 的max 也是对钩函数 (这里
2013-10-06 01:11:06
771
原创 poj 3737 UmBasketella 三分
水题一只。 已知 圆锥表面积 求最大体积 底面r 和 高推公式。 r^2 = s^2/( h^2*PI^2 + 2*PI *s )v = 1/3 *PI Ir^2 *h 发现 公式是分数形式 上边是常数, 下边是对钩 函数 a*x + b/x 的格式。 分析单调性 。直接求导 出结果 或者 三分#include #include #in
2013-10-05 12:54:26
1214
原创 子序列个数
写这个题完全是 由于自己竟然没想到这么做。。。 o(︶︿︶)o 唉。。。子序列的定义:对于一个序列a=a[1],a[2],......a[n],则非空序列a'=a[p1],a[p2]......a[pm]为a的一个子序列,其中1例如:4,14,2,3和14,1,2,3都为4,13,14,1,2,3的子序列。 对于给出序列a,有些子序列可能是相同的,这里只算做1个,要求输出
2013-10-04 17:04:49
3567
原创 LA 6135 - Environment Protection simpson积分
求深度 d 使得从深度0到深度d 的middle layer的面积是 A。一开始读错题意。 所以代码中的 A 是深度 ,ans 才是面积A。 变量名不一致。#include #include #include #include #include #include #include #include #include #include #include
2013-10-04 16:15:09
993
原创 hdu 1071 simpson 求积分
根据点 p1 y = a(x- x1 )^2 + c 在根据一个点 求出 a ,c。 根据 p2 p3 求出直线。 直接simpson 。#include #include #include #include #include #include #include #include #include #include #include
2013-10-04 14:07:35
991
原创 hdu 1724 自适应 simpson 算法 求积分
题意: 给出椭圆, l 和 r 求 在这之间的椭圆的面积。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #
2013-10-03 20:48:54
3960
原创 zoj 2614 Bridge 积分 (公式 和 simpson ) + 二分
问题最终转化成 过原点和 (x,y) 的抛物线 y = k*x^2 ,知道 (0,0)到(x,y)的曲线长度 s和 x 的值,求y 的值。二分 y, 求 长度(用到积分)。直到接近 s 为止。#include #include #include #include #include #include #include #include #in
2013-10-01 15:50:46
1291
原创 hdu 4035 Maze
题意 : 给定一棵树型迷宫,一开始在 1 号节点, 在 第i 个节点 时 有 Ki 的概率被杀死 回到 1 号节点, Ei 的概率 逃出这个 迷宫 , 还有 1- Ki -Ei 的概率到达相邻的点,到达相邻的点的概率是相等的, 包括 父亲节点, 。问逃出这个迷宫时 ,走过的树上的路径的期望是多少?对于 点i p = (1 - Ei - Ki )/ m; m 是 相邻的点的
2013-08-29 23:15:38
677
原创 poj 3744 Scout YYF I
题意 : 初始状态 你在 1 这个点上, p 个概率向前走一步, 1-p 的概率 向前有 两步。 现在,线上分布这 n 个雷, 也就是这n 个格子不能走,问成功走出这条路的概率。n概率DP : 考虑到 雷的坐标比较大 ,不可以直接DP ,但是 n 比较小,可以分段,对没有雷的坐标 x -> y , f[ i ] = f[ i -1] *p + f[ i-2 ]*(1 -
2013-08-27 23:13:41
640
原创 hdu 1525 Euclid's Game
给出 a,b , 每个人 可以 将 大的数 可以减去 小的数的倍数,但不能变成负的, 谁先出现 x ,0 的状态 谁赢。假设 当前可以选择的倍数k 是大于2 的, 那么这个状态就是必胜的。 a,b 转化成 b ,a%b 时, 若b, a%b 是必胜, 只要转化成 a%b+b , b 这个状态。若 b,a%b 必败, 则 直接转化成 b ,a%b 。 那么 决定先手胜负
2013-08-21 00:11:48
670
原创 hdu 1536 S-Nim
题意:给n个数的集合s, 再给m 组数据,每组表示 k 堆石子,每次可以取的个数只能是集合s中的数量。问先手胜还是输? 简单的SG 函数 求知 ,无规律,直接DP 求得所有解即可 。 在求值时 有两种方式 。 第一种先求出所有解。把所有的可能的数都求出来。还有一种 是 递归 求解。 只是在用到时, 求解。 依次求其子状态的值, 最终求出当前一个值得解,但是其子状态也已经求出
2013-08-18 16:56:00
744
原创 zoj 1024 Calendar Game
题意是: 日历翻页, 可以翻到下一天,也可以翻到下一个月的同一天, 如果没有同一天就不能翻, 其实日期 1900 1 1 结束日期 2001 11 4 。由于 状态比较少 , 直接 DP 就可破。#include #include #include #include #include #include #include #include #include #inc
2013-08-18 13:13:49
822
原创 poj 1830 开关问题 高斯消元
题意是 给一些开关的初始状态 0 或1 ,在给出终止状态, 在给出相关的变化规则,规则: x 变化 则 y 也变 , x y 读入。输出有多少种开关的拨动情况,使初始状态变成终止状态。此问题 很容易转化成 高斯消元 解 异或方程组。t = 方程组的自由化的个数,则结果就是 2^t .#include#include#include#include#includ
2013-08-14 00:58:56
894
原创 hdu 4628 Pieces 集合DP
给一个长度为 n ( for(int subset = set ; subset >0 ;(--subset)&=set)枚举 set 的子集 #include #include #include #include #include #include #include #include #include #include #include #inclu
2013-08-10 22:03:07
623
原创 poj 1222 EXTENDED LIGHTS OUT高斯消元。
把每个格子的状态看成一个变元。列出30个状态方程。 高斯消元 求解异或方程即可。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inc
2013-08-07 14:05:42
653
原创 hdu 4335 What is N? 数论
题意 给定 b,p,m 求 满足 n^(n!) %p =b ( 0m 的范围 2^64 -1 这里是个trick。。。 利用降幂的公式 。 a^x %p= a^( x%phi(p) + phi(p)) %p 就可以把指数降到 1 - p 这个范围内。 对于 kp+1 ~ (k+1)p (k>1)这个范围中的n 可以 映射到 1 - p
2013-07-31 23:20:37
703
原创 spoj 4491. Primes in GCD Table 莫比乌斯反演
http://www.spoj.com/problems/PGCD/题意: 给出 a ,b (1如果gcd(x ,y) = 1; 这个问题比较好求。g(n) 为 gcd(x ,y) = n 的方案数。f( n ) 为 gcd(x ,y) = b ,其中 n|b 的所有方案数f( a ) = sigma( g( b )) 条件 a|b;g( n ) =
2013-07-31 15:54:57
1516
原创 uva 861 Little Bishops
问 在n*n 的国际象棋棋盘中 能放 k个象的方案数?国际象棋中 白格 和 黑格 中的象不能互相攻击, 就可以 把这两部分拆开来看,分别统计由于象是斜着攻击的,我们可以把棋盘旋转45 度,然后对 格子做 水平和竖直方向的交换(不会影响方案数)。把白格子弄出来就是 * * * * * * * * *
2013-07-29 10:48:18
1198
原创 zoj 3687 The Review Plan I
题意抽象出来就是 在 n*n 的 棋盘中 加了 m 个禁位, 放置 n 个棋子 ,每两个棋子不在同一行 同一列,问有多少中放置方式 ?trick : M 个禁位 中 有相同 坐标的点。解法 : 利用 有禁位的排列的公式 (容斥原理): n! - r1 *( n-1)! + r2*(n -2)! - r3*(n-3)! +..........ri 指 在禁区中 选
2013-07-29 00:30:07
1043
原创 zoj 3688 The Review Plan II 组合数学
我的解法比较慢。 复杂度 O(nlgn) 有O( N )的解法 递推公式看不懂此题是 有 禁位 的排列 。相当于在 n*n的棋盘中 设置了 2n 个 禁位。 有 k个在 这 2*n 个禁位中 的排列数 Pk。 这 2*n 个 禁位 可以看成 一个有 t =2*n 个点 形成的环中 ,选出k个不相邻的组合数。可以通过 枚举圆上的 点 就将 圆拆分成了链。 先选取一
2013-07-27 15:35:11
1256
原创 hdu 4045 Machine scheduling 组合数学
题意是 有n台机器,从中选出r台机器,满足两台的编号差不小于k , 并将这r台,分成m组, 问有多少种组合方式?第二部分 就是裸的 第二类斯特林数。 重点是第一部分 : 问题 抽象出来就是 : 从 数字 1 - n 种,选出 r 个 ,相邻的两个差不小于k 。 这个题的解法有两种。 一种是 dp 一个一个递推。 第二种就是 组合公式。
2013-07-27 13:51:46
864
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人