自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

平凡的脚步也可以走完伟大的行程。

这个世界上任何奇迹的产生都是经过千辛万苦的努力而得的,首先承认自己的平凡,然后用千百倍的努力来弥补平凡。

  • 博客(81)
  • 收藏
  • 关注

原创 51nod 1586 约数和

题目描述有三个下标从1到n的数组a、b、c。 a数组初始全为0。 b[i]=∑j|ia[j],c[i]=∑j|ib[j]b[i]=∑_{j|i}a[j] ,c[i]=∑_{j|i}b[j] 需要进行下列操作: 1 x y :将a[x]加上y 2 x :询问当前c[x]的值数据范围(1<=n,q<=1,000,000,x随机,1<=x<=n,1<=y<=10^6)考虑用a表示cc[i]=

2016-08-17 22:47:12 485

原创 51nod 1491 黄金系统

题目描述q=(√5+1)/2,在黄金系统下面a0a1…an等于 ∑ni=0ai∗qn−i\sum_{i=0}^na_i*q^{n-i} ,其中 ai 是0或者1。 现在给出两个黄金系统下面的数字a和b,请比较他们的大小。 n<=10^5类斐波那契数q2=(√5+1)2/4=(5+1+2√5)/4=(3+√5)/2=1+(1+√5)/2=1+qq^2=(√5+1)^2/4=(5+1+2√5)/4=

2016-08-17 21:02:57 776

原创 Binary

题目大意拆位涉及位运算的操作,通常需要拆位,不过这题稍有不同,因为括号里有个+x的操作。 我们可以把a[i]%2^i后加入第i个线段树里(权值线段树),然后对于一个&y的操作,我们就可以只考虑y的二进制下有1的位。 先忽略x 假如这一位为10000 那么找到对应的线段树,查询10000~11111的个数,我们就可以得到贡献了。 那么有x操作,naive的想法就是查询max(0,10000-

2016-08-17 17:10:39 600

原创 Value

题目描述首先确定顺序,显然wi小先选,所以可以排序一下。dp肯定要枚举选了几个物品,而如果正着来做,我们不能确定选了这个物品后还要再选多少个物品,也就无法确定这个物品最终的贡献,就需要枚举一下选的物品数量,转移是O(n),总复杂度O(n^3)。 如果倒着做,就不需要枚举选的物品数量,因为物品的贡献可以直接确定,然后就O(n^2)(好水啊)代码#include<cstring>#include<a

2016-08-17 16:52:18 751

原创 Matrix

题目描述数据范围n,a,b,Li,Ti<=10^5一道水。。题。。考虑一个位置(i,j)到(n,n)的会乘a^(n-j)*b^(n-i),还要乘一个系数为(i,j)到(n,n)的方案数(可以用组合数解决),预处理阶乘和逆元即可。代码#include<cstring>#include<algorithm>#include<cmath>#include<cstdio>#define fo(i,a

2016-08-17 16:40:05 407

原创 car (CF 581E)

题目描述Keith买了一辆新车,打算把自己的新车开到学校,给403的小伙伴们看看。 Keith家(多个)在城区,从城区到学校的路可以抽象成一个数轴,Keith家的坐标为W,学校的坐标为E。路上有很多加油站,每个加油站能提供92#,95#,98#三种汽油中的一种。由于Keith不缺钱,每到一个加油站,他都能加任意多的油。由于道路是双向的,Keith的车既能往左开,也能往右开。 1升汽油可以跑1千米

2016-08-16 23:05:04 1219

原创 ninja (Spoj-SOPARADE)

题目大意有n个位置,每个位置有一个标识,范围为1到4,限制相邻两个位置的差的绝对值至少为2。同时还给出了m个限制,每个限制选定k个位置,要求这k个位置上的标识互不相同。请你输出是否存在合法的方案使得所有位置上的标识都满足限制。 n,m<=1000002-SAT奇数位置和偶数位置上的标识肯定是不同的,因为相邻两个位置的差的绝对值至少为2。 当然,不止这点性质。 位置1上的标识如果为1或2,位置2

2016-08-16 20:55:49 587

原创 Math(CC PARSIN)

题目大意给出m,n和一个两位小数x。 求∑k[1]+k[2]+...+k[m]=nΠmi=1sin(k[i]∗x)\sum_{k[1]+k[2]+...+k[m]=n}\Pi_{i=1}^msin(k[i]*x) n<=10^9,m<=30这题真的是道数学题首先考虑一个简单的dp 设f[i][j]表示i=∑jl=1k[l]i=\sum_{l=1}^jk[l]时所有情况的和 容易想到一个简单的

2016-08-16 17:11:38 574

原创 Buy(CC LEBOXES)

题目大意给出n个袋子和m个粮食,每个袋子有p[i]%的概率获得v[i]个金币,有1-p[i]%的概率获得1个钻石,而购买一个粮食要付出c[i]个金币和d[i]个钻石。求购买粮食的期望个数。 n,m<=30 v[i],c[i]<=10^7,p[i]<=100注意到n很小,也就是钻石数很小设f[i][j]表示拥有钻石数为j时,购买i个粮食所需的最小金币代价,这是个经典背包问题,可以O(n^3)解决。

2016-08-16 15:57:23 701

原创 Game

题目大意给出一个n*m的网格图,一个格子可以选择是否选取,每一行给出一个限制,要求该行连通块(一个连通块之间没有格子是不取的,且至少有一个格子被选取)的个数等于a[i],每一列也给出一个要求,要求该列连通块的个数等于b[i],即一共有n+m个限制,求有多少种选取方案。输出方案数mod(10^9+7)的值。 n<=5,m<=20。dp求方案数通常做法都是dp。。。 设f[i][j][k]表示做到第

2016-08-16 13:04:20 462

原创 CA Loves Substring(HDU 5659)

题目大意给出一个由‘0’~‘9’构成的长度为n的字符串s,f[i]表示s从i断开后(即s[1~n]分成s[1~i]和s[i+1~n]两个串),两个串中本质不同的串的个数(例如一个不同的子串a在两个串出现的总次数为cnt,cnt>1则对f[i]+1)。 输出∑n−1j=1f[j]∗100013n−j−1mod(109+7)\sum_{j=1}^{n-1}f[j]*100013^{n-j-1}mod(

2016-08-16 12:37:31 785

原创 矩阵

题目大意给出一个长为n宽为m大写字母矩阵,求有多少个本质不同的子矩阵。 n<=110 (该题放了一个烟雾弹说“往后缀三姐妹上想,呵呵”,于是我就没敢往那上面想,呵呵了。。。)哈希设ha[i][j][k]表示第i行第j列开始的宽度为k的子串的hash值,这个可以n^3预处理。 然后枚举一个宽度k,把每一列视为一个长度为n的字符串(字符即为hash值),然后问题就变成了求m个字符串本质不同的串的个

2016-08-11 21:50:51 580

原创 圈地计划

题目大意有个N*M的矩形,每个区域选择两种类型,分别获得Ai,j和Bi,j的收益。一个格子如果有与其相邻的k个格子与其类型不同,则可以带来Ci,j的收益。求最大收益。二元关系由于是最大值,所以不能直接求最小割。 可以把边权取反,再求最小割。但是流量不能是负数,可以先把答案加上总和。 详细讲解请看wzd的博客 http://blog.csdn.net/werkeytom_ftd/article

2016-07-28 20:11:23 615

原创 快速求素数个数

问题:求1~n出现了多少个素数。线性做法很简单,直接筛就好了。 可是如果n大一点,比如大于10^9,线性做法就挂了。 大千世界无奇不有,就有比线性更快的做法。洲阁筛法网上关于这个的讲解真的好少。

2016-07-24 20:47:08 2187

原创 zkw算法

最小费用最大流问题顾名思义在最大流问题的基础上附加了费用最小的条件,已经是一个毫不陌生的问题了。zkw算法(zkw大神,orz) 费用流经典的做法是最短路做法,然而zkw也利用了最短路思想却没用使用spfa,dij等常用最短路算法,而是类似于km算法,用顶标来维护图的最短路性质。 任何一个最短路算法保证,算法结束后有,对于任意从u到v的边,dis[u]w[u][v]w[u][v

2016-07-22 22:26:43 4562 1

原创 积性函数求前缀和

积性函数定义若函数f满足 a,b互质有f(a*b)=f(a)*f(b),我们则称f是积性函数。 常见的比如欧拉函数,莫比乌斯函数,都属于积性函数。积性函数求前缀和线性筛法,利用积性函数的积性,筛素数同时可以计算积性函数。 然而有些问题要求低于线性的复杂度。杜教筛同样利用积性函数的性质。 举常见的莫比乌斯函数为例。 求∑ni=1μ(i)\sum_{i=1}^n\mu(i)(1<=n<=10^

2016-07-21 20:29:47 742

原创 km算法学习小记

这个算法其实在学匈牙利算法时就看过了,不过当时没搞懂??? 现在一看,其实还挺好理解的。应用km算法是求最大权完备匹配,事实上它同时能处理最小权完备匹配(把边权取反)和非完备匹配(添加原本不存在的边且边权赋值为0),另外还在一位神犇的博客里了解到,如果我想要边权之积最大,则每条边权取自然对数,然后求最大和权匹配,求得的结果a再算出e^a就是最大积匹配。至于精度问题则。。。不知所措。正确性KM算法是

2016-07-18 22:05:24 534

原创 两棵树

题目描述树形dp设f[i][j]表示第一棵树中以i为根的子树和第二棵树中以j为根的子树实现对称所需要的最小代价,而i的儿子x和j的儿子y的f[x][y]的值是已经求出来的,如何转移到f[i][j]二分图带权匹配我们要求的其实就是个最小权完备匹配(和最大权类似,把边权取反即可),对于儿子数不同的点对,我们可以直接添点,边的权值即为对应点的size。由于费用流不会,果断选择km算法。代码#include

2016-07-18 21:33:36 395

原创 SuperMemo

题目大意给出一个序列,要求你支持区间反转,交换相邻区间,添加一个元素和删除一个元素,以及查询区间最小值等操作。序列之王——splay对于区间反转,可以类似懒标记传递修改。 添加或删除一个元素都可以通过splay操作使要添加或删除的元素成为叶子节点,然后就很容易添加或修改了 交换相邻区间,相对比较麻烦。 有一个机智的做法,利用反转来实现, 假如我们要交换[a,b]和[b+1,c]两个区间,其实

2016-07-14 16:24:54 934

原创 组合数的一些性质

众所周知,当n,m在自然数集中有 Cmn=n!m!(n−m)!C_n^m=\frac{n!}{m!(n-m)!} 由此可证得Cmn=Cmn−1+Cm−1n−1C_n^m=C_{n-1}^m+C_{n-1}^{m-1} 而Cm−n=−(1)mCn+m−1mC_{-n}^m=-(1)^mC_{n+m-1}{m} 是否也能用两个组合数来表示Cm−nC_{-n}^m 答案是肯定的。 容易猜想Cm

2016-06-28 20:50:02 2303

原创 组合数的推广

一直只以为组合数只是用于自然数集。后来发现这个世界无奇不有(简直变态)组合数CmnC_n^m下标n已经推广到实数集,m推广到整数集。 个人觉得有些部分的应用不是很广,但下标n,m在整数集的应用挺重要的,有必要了解一下。 众所周知,n,m都为自然数时有个公式 Cmn=(1)n(n−1)(n−2)...(n−m+1)m!=(2)n!m!(n−m)!C_n^m=(1)\frac{n(n-1)(n-2

2016-06-28 20:23:16 3774

原创 树的统计

题目大意一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。要求你对这棵树完成 一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 I II. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u和v本身数据范围 1<=n<=30000,0<=q<=2000

2016-06-27 20:45:06 409

原创 排序机械臂

题目大意给出一个长度为n的序列a,有n次操作,第i次操作把数值a第i小的位置记作p[i],位置i到p[i]的数反转(如1,2,3,4反转后变成4,3,2,1)。求输出序列p。范围a[i]<=2*10^9,n<=10^5。先离散化裸splay用splay树维护size。答案p[i]=size[i的左儿子]+1。 对于反转操作,可以打个标记。代码#include<cstdio>#include<cs

2016-06-26 21:27:09 751

原创 结束了——开始了

中考告一段落,结果还不清楚,但是自己估分还不错,至少考回本校高中是没问题了。 这是人生中比较重要的一次考试,也给自己留下挺多难得的记忆,心情在这段时间里起起落落,终于,暂时平静。 接踵而至的是高中的学习,竞赛将愈演愈烈。心怀梦想,即要刻苦努力,未来也许残酷,自己必要坚强。 结束了,才开始。

2016-06-25 09:52:29 544 2

原创 中考RP++

不久就要中考了,不得不暂时停止竞赛的训练。 自己的心态需要挺多的调整。。。 原本丝毫没有放松竞赛,经常抽空来机房,文化课倒不怎么紧张,比较自信。结果—— 最后的一次模考考挂,带来了不少压力,同伴们几乎都是在最后受到鼓舞,自己却是受到打击,教练,老师,家长也都与我有过了交谈,帮我分析问题,给予我建议,也确实对我有挺大的帮助。 郁闷了一两天后,自己也安慰了一下自己,毕竟还只是模考,现在暴露的问题

2016-05-26 19:51:53 708

原创 雨天的尾巴

题目大意给定一棵n个点的树。有m个操作,每个操作给出x,y,z,然后对于点x 到点y 的路径上(含x 和y) 每个点对应数值为z的数的个数+1。 最后输出每个点个数最多的数的数值(个数相同输出数值较小值)。数据范围 n,m <= 100000,z<=10^9。树链剖分,复杂度O(nlogn2n log n^2)(werkeytom大神用线段树合并O(n log n)解决) z比较大,但最多也就m

2016-05-25 18:33:09 500

原创 ​Pty爬山

题目描述在Pty学校附近,有一座名之为岳之麓的高山。Pty很喜欢和(哔——)一起爬山。山的平面模型如下:山由一个顶点集:A1,A2…An给定,保证Ai的x单调递增。我们将Ai和Ai+1之间连上线段,表示山的某一段。如下图所示:​Pty想要爬到这座山的最高的顶点,当两个顶点的高度相同时,我们认为x比较大的顶点要高一些。Pty不是盲人,所以他将会在爬山时采取一些策略,使得他能够尽量快的到达最高的顶点。P

2016-05-24 21:37:43 947

原创 旅行

题目大意给定n个点,给出m条边。 给出k,选择使用一些边,求满足∑ki=1(i和n−i+1连通)\sum_{i=1}^k(i和n-i+1连通)的最小边权和。数据范围n,m<=10000,k<=4斯坦纳树模型:一个图中求给定的k个点相互连通的斯坦纳生成树 这题其实就是裸题。 如何求斯坦纳生成树呢 设d[i][j]表示以i为根的子树,k个关键点的选取状态为j(2进制数,0表示该点还没连通)时的最

2016-05-24 21:06:51 450

原创 Freda的传呼机

题目大意给定一个n个点,m条边的图,每个边最多仅在一个环中 有q个询问,每次询问给出任意两点x和y,输出x和y的最小距离。每个边最多仅在一个环中——仙人掌为了方便,我们先对原图进行一次spfa,设di[1]=0,算出其他的di。 然后建一个新图,每个环中,除顶点(原深度最小的点)外,都向顶点连一条权值为0的边,记录环的总长,同时删除环中的原边。 新图一定是棵树,于是我们就可以倍增求lca。

2016-05-24 20:35:42 650

原创 2016.5.21初中部模拟赛总结

开始前这周六要数学小测,虽然做完时大概8:15,但我还顺便完成了会儿作业,到8:30才开始去机房,只剩下大概3h做四道题,时间根本不够嘛!t1一看就和最短路有关,又想到是最小生成树之类的,然后,就懵逼了,后来知道是斯坦纳树,之前没接触过,不会。t2最有想法的题,我想到了怎么处理出每个点看到的最高点,然后傻逼的去打了个记忆化(我以为一个点的方向定后,答案便定了,但是其实它可以反复变向)。t3树链剖分,

2016-05-23 12:46:04 352

原创 求生之路

题目大意给出n个数a[1]~a[n] 求有多少个d满足 an初始值为0,∑ni=1an=(anan初始值为0,\sum_{i=1}^nan=(an xorxor (a[i]−d)),an最终值为0(a[i]-d)),an最终值为0 数据范围,n<=2*10^5,a[i]<=10^18。数位DP由于有xor操作,我们容易想到拆位,进而想到数位dp。 设f[i][j]表示,当前做到第i位,有j个

2016-05-20 19:54:09 652

原创 寺庙逃脱

题目大意有q个询问,每个询问给出 给出a[0]=k,和递推式 a[n]=A∗a[n−1]+BC∗a[n−1]+Da[n]=\frac{A*a[n-1]+B}{C*a[n-1]+D} 求a[n] mod p的值。 数据范围q<=104,n<=1018,p<=109,|A,B,C,D|<p,保证p为素数q<=10^4,n<=10^{18},p<=10^9,|A,B,C,D|<p,保证p为素数矩阵

2016-05-19 20:53:13 539

原创 树的难题

题目大意t个询问,每个询问 给一个n个点树,边有权值,每个点有一个范围在0~2的点值。 删去若干条边,花费代价为边权和,使森林中的每一个树都满足 点值为0的点的个数为0或点值为1的点的个数小于2。 求最小花费代价。(t<=5,n<=300000,边权<=10^9)树形DP很显然是树形动规。 设f[i,j,k]表示点i为根的子树中,有j个点的点值为0,有k个点的点值为1时的最小花费。 j的

2016-05-18 21:02:36 767

原创 BZOJ

题目大意给一张n个点的无向完全图,每条边有一个1~l的全值,问有多少张图满足d[n]=k(d[i]表示1到i的最道路) 数据范围 n,k<=12,l<=10^9动态规划枚举1到每个点的最短路d[i]。当我们知道每个点的最短路时,是可以通过计算来得到方案总数的。 一定存在d[1]=0,d[n]=k。 对于d[i]>=k的值,我们不关心它到底是多少,可以直接用k表示。 对于2~n-1的点,我们也

2016-05-17 20:55:23 887 1

原创 K 大数查询

题目大意有N个集合,初始为空。有M个操作, 修改操作:编号范围在l~r的集合都加入一个数值为a的数, 询问操作:编号范围在l~r的集合数值为第k大的数。 n,m<=50000,|a|<=n,k树套树当然可行,但我不会考虑离线——整体二分L,R表示数值的区间,mid=(L+R)/2。 用线段树维护在编号范围在l~r的集合中数值范围在mid+1~R的数的个数 修改操作的a的数值若>mid则编

2016-05-15 12:05:05 418

原创 异或树

题目大意给出一棵有n个节点树,树的编号为i节点有一个权值a[i],且边也有权值c[num],每一个点对的贡献为p[i,j]=dis[i,j]*(a[i] xor a[j]),同时有t次修改操作,每次求改一个节点的权值,每次修改后要输出∑n−1i=1∑nj=i+1p[i,j]\sum_{i=1}^{n-1}\sum_{j=i+1}^np[i,j]数据范围a[i]<16384=2142^{14},c[n

2016-05-15 11:30:44 737

原创 最小公倍数之和

题目大意求∑n−1i=1lcm(i,n)\sum_{i=1}^{n-1}lcm(i,n)欧拉函数∑n−1i=1lcm(i,n)\sum_{i=1}^{n-1}lcm(i,n)=n∗∑d|n∑[n−1d]i=1[gcd(i,nd)=1]∗i=n*\sum_{d|n}\sum_{i=1}^{[\frac{n-1}{d}]}[gcd(i,\frac{n}{d})=1]*i

2016-05-13 20:57:44 636

原创 互补约数(GCD)续

GCD的题解里,我不知道怎样证明O(∑n√k=1nk−−√\sum_{k=1}^{\sqrt{n}}\sqrt{\frac{n}{k}})=O(n34n^\frac{3}{4}) 于是我又yy了一番,想到用积分去搞一搞。两个基本初等函数求导公式(自己也只会基本的求导的知识) a是常数 (xa)′=a∗xa−1(x^a)'=a*x^{a-1} (a∗x)′=a∗(x)′(a*x)'=a*(x)

2016-05-11 21:21:22 629

原创 欧拉函数的经典公式

证明N=∑d|Nφ(d)\sum_{d|N}φ(d)(为何我要写关于这个的博客呢,因为我问度娘,却没找到详细的证明,于是自己yy了一番) 首先我们知道当p为素数时有φ(pk)\varphi(p^k)=pk−1∗(p−1)p^{k-1}*(p-1),然后可以开始证了证:设N=ΠTi=1p[i]k[i]\Pi_{i=1}^Tp[i]^{k[i]}p[i]表示互异的素数。∑d|Nφ(d)\sum_{d|

2016-05-10 19:05:03 1735

原创 GCD

题目大意求∑ni=1∑d|ngcd(d,nd)\sum_{i=1}^n \sum_{d|n} \gcd(d,\frac{n}{d})数据范围n<=101110^{11}莫比乌斯反演题目相当于求∑ni=1∑[ni]j=1gcd(i,j)\sum_{i=1}^n \sum_{j=1}^{[\frac{n}{i} ]}\gcd(i,j)很像一道经典莫比乌斯反演题了。 设f(k)表示gcd(i,j)=k的

2016-05-09 12:38:30 1119 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除