自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qwb的博客

ACing

  • 博客(26)
  • 资源 (6)
  • 收藏
  • 关注

原创 莫队算法 Codeforces617E XOR and Favorite Number

传送门:点击打开链接题意:给n个数和一个k,有很多次查询,每次查询有l,r,求[l,r]有多少个子区间的xor之和等于k思路:很明显是个裸莫队算法(原来在国外也烂大街有几个要注意的地方,就是对于左端点操作的时候,实际上是操作L-1,以及vis和sum的更新顺序还有就是记录数量的时候,vis数组至少要开109w,而不是100w,因为最后的异或可能把后面的0全部填满区间的个数可能会

2016-01-31 21:18:35 962

原创 DFS Codeforces440C One-Based Arithmetic

传送门:点击打开链接题意:只能使用由1组成的数字,通过加法和减法得到n。问这些数字的1个个数之和最少是多少。思路:非常经典的一道暴搜题,每一层有2个分支,层数递减,很容易证明复杂度最坏大约是O(2^16)#include#include#include#include#include#include#include#include#include#include#i

2016-01-30 16:19:17 930

原创 dp Codeforces505C Mr. Kitayuta, the Treasure Hunter

传送门:点击打开链接题意:现在有3w个点,最开始站在第0个点上,第一次会向右跳d个点。若上一次为d,这次只能向右跳d-1,d,和d+1步。步数不能为0,当不能向右跳时即停止。思路:不考虑时间和空间,最朴素的方法就是设dp[i][j]表示上一步跳了j步,当前在i点上,之后的转移也很好写然而这明显是会爆时间爆空间的,不过我们可以发现,二维的j并不需要等于30000,而只会在[d-245

2016-01-30 10:25:19 1408 2

原创 Splay hdu1890 Robotic Sort

传送门:点击打开链接题意:一种排序,找到最小的,然后讲整段翻转,把数字提前。思路:看到旋转就应该想到用splay。问题是怎么知道第几大的数字当前是第几个。这里有种方法,就是记录每个数字的节点编号,然后只要把这个节点Splay到根节点,那么size[son[root][0]]就是数字所在的位置了。有个需要注意的地方,就是翻转的时候,一定要这样写,不然会出各种问题,上一道Splay题都

2016-01-29 13:17:53 836

原创 Splay hdu3487 Play with Chain

传送门:点击打开链接题意:有很多次操作。可以讲区间一部分取出来插入到令一个位置,也能翻转区间思路:翻转区间和添加删除等区间操作,都是splay的最强大的地方,这题也可以说是splay的一道超级经典的入门题#include#include#include#include#include#include#include#include#include

2016-01-27 19:21:05 796

原创 模拟 Codeforces620F Xors on Segments

传送门:点击打开链接题意:n个数,m次查询。n每次查询为一个区间l,r,要在n的数的[l,r]区间内选出2个数a,b(a思路:标准答案好像是莫队算法+trie不过好多人复杂度都是O(n(n+m))的,,Tourist也是。。只要你敢写就能过。大概就是i枚举第一个数a,然后j枚举第二个数b,mx记录另一个数所在的数组范围在[i,j]的对应的函数的最大值。遍历所有的查询,看i是

2016-01-26 16:15:15 1455

原创 二维LIS Gym100820G Racing Gems

传送门:点击打开链接题意:一个赛车捡金币的游戏,刚开始的起点在x轴,赛车跑道宽为w,最左边是y轴。刚开始你可以选择在x轴的任意位置启动。有很多金币在赛道中,位置已经告诉你。还告诉了你一个r,当y轴方向的车速为v时,x轴的车速只能在[-v/r,v/r]这个区间中,说白了就是在y轴上移动s距离,x轴上只能移动[-w/r,w/r]距离。赛车在y轴方向只能朝正方向移动。问到达终点时,最多能拾到多少金币

2016-01-24 14:06:04 1391

原创 快速矩阵幂 Gym100827F Knights

传送门:点击打开链接题意:在M*N的棋盘里放象棋中的马,使得马之间互不攻击,问种类数, M思路:很明显是快速矩阵幂,问题是如何构造矩阵。我的想法是保存两行的状态,状态的个数是 2^(2*m),然后构造出来的矩阵大小是2^(2*m)*2^(2*m)最后的总复杂度是 O(2^(6*m)*logn),这个复杂度也是巨大了,吓得我差点不敢写,,不过好在秒数很大。。关于矩阵的构造,就是一

2016-01-21 22:03:23 808

原创 DFS Gym100827K Towers

传送门:点击打开链接题意:类似数独,不过还有另外一种限制,从左往右看,从右往左看,从上往下看,从下往上看,看到的塔数应该是固定的。思路:暴搜。好久没暴搜了,呼呼。。#include#include#include#include#include#include#include#include#include#include#include#include#inc

2016-01-19 13:35:15 824

原创 前缀和 Codeforces509E Pretty Song

传送门:点击打开链接题意:定义一个函数f(l,r),结果是区间[l,r]中IEAOUY的个数除以(r-l+1),求所有区间的函数f之和思路:求所有的这种字符对答案的贡献。我们可以发现,如果上述的这种字符,所在的位置,从左边数是3,从右边数是4那么答案就等于1+1/2+1/3+1/4     1/2+1/3+1/4+1/5             1/3+1/4+1/5+1/

2016-01-18 12:48:57 745

原创 康托展开+线段树 Codeforces501D Misha and Permutations Summation

传送门:点击打开链接题意:求两个排列的次序相加取模n!后,得到新的次序,然后输出这个次序对应的排列思路:康托展开+逆展开+高精度。康托展开其实是个求逆序对的过程,逆展开实际上是一个找第k大的过程,都可以使用线段树来完成因为数字非常大,所以肯定是要用高精度的,但是这里的高精度很特别,不是使用十进制的高精度,而是使用阶乘进制的高精度,这样就可以和康托展开和逆展开完美的结合起来了。#in

2016-01-16 19:24:34 880

原创 二分+贪心 Codeforces614D Skills

传送门:点击打开链接题意:n个科目,每个科目最高分为A,现在最多能提高m分。最后权值是两种分数算法之和,第一种算法是达到A分的科目个数*cf,第二种算法是最低分*cm。求提高单科分数之后,最后的权值最大是多少。并打印出方案。思路:枚举达到A分的科目数,然后再二分得到剩下的钱,让最低分最大是多少。首先,肯定要把科目的所有分数排序一次,然后枚举达到满分的科目时,肯定是从大到小去枚举的。

2016-01-15 16:31:02 1181

原创 DFS Codeforces505D Mr. Kitayuta's Technology

传送门:点击打开链接题意:告诉你n个点,和m条关系,每个关系有u和v,要求u能通过有向边到达v,问要完成这个有向图至少需要多少条边。思路:就是个xjb的贪心....首先,我们把边按无向图处理,把图分成很多个分块。对于每个分块,如果这个分块里存在环,那么说明边数>=节点数对于一个分块,假如我把这些点首尾相连,此时是完美的!因为现在我用了最少的边数,使得可以从一个点到任意一个点,那么无

2016-01-11 22:23:53 1293

原创 hash+dp打印路径 Codeforces615C Running Track

传送门:点击打开链接题意:a串有很多个,然后能把a串剪断,剪成很多条小区间,区间还能翻转。然后给你一个b串,求b串用a串的区间的字符去组合出来,最少需要的区间数,要求输出方案。长度思路:首先,我的思路非常蠢。。标准答案是暴力+贪心,确实后来想了下讲的太有道理了~我的思路是,把a串的所有子串全部取出来,然后双哈希保存。然后再对b串做dp。如果[j+1,i]在a串中存在,那么就能有dp

2016-01-09 22:24:12 962

原创 费马小定理 Codeforces615D Multipliers

传送门:点击打开链接题意:这些质数的乘积所组成的那个数,求这个数的所有约数的乘积,取模1e9+7思路:先分别求出每个数出现的个数,那么对于这一类的数,计算它对答案的贡献。首先,假如最多有s个这样的数字,假设这个数为a,那么我要考虑,对于一个约数,出现了1次,2次......s次,然后其他的质数的出现情况有多少种呢,假如其他质数出现的次数为cnt[i],那么就有P = (cnt[1]+1)*

2016-01-09 22:02:09 1028 2

原创 Codeforces507D 数位dp The Maths Lecture

传送门:点击打开链接题意:一个长度为n的数,没有前缀0,如果这个数存在一个后缀y,这个y没有前导0且大于0,能整除k,这么就认为数x是满足要求的问有多少个数x满足要求思路:明显是从后往前算的数位dp。首先我们肯定可以想到dp[i][j]表示正在考虑第i位对后面的影响,当前的数字取模k等于j那么再枚举第i+1位是什么数字,就能往后面转移了,不过这道题有两个细节和一个trick

2016-01-08 01:30:36 815

原创 线段树 hdu2871 Memory Control

传送门:点击打开链接题意:区间内4种操作,1种分配连续长度的区间,2获取某个位置是被谁覆盖的,3获取第几个被覆盖的区间的左端点和右端点,4清空全部。思路:几乎涵盖了线段树的所有操作,有种恶心的感觉,,要维护的东西1.sum,lsum,rsum最大连续个数2.cnt个数,放在左端点3.col懒惰标记,默认-1,为0表示要清空,为其他数字表示这一段被占领#include#

2016-01-07 14:32:35 748

原创 splay树 hdu1166 敌兵布阵

传送门:点击打开链接题意:....省略100字。。思路:搞了两天的spay,终于明白了这个算法的优势以及用途和原理了。。。首先是作用:splay是介于线段树和平衡树之间的,是一种平衡树,既能用来做set,也能用来做priority_queue,还能用来做线段树的一种万能树型数据结构!与平衡树相比:与BST相比,BST的复杂度会退化,splay的复杂度平摊后是nlogn。与红黑树和S

2016-01-06 21:01:25 1109

原创 主席树 hdu2665 Kth number

传送门:点击打开链接题意:区间查询第k大思路:主席树裸题,原来以前看不懂主席树是因为不懂可持久线段树,要学习主席树,应该先学习可持久线段树,然后再学的,这样主席树就能秒懂了。主席树就是利用可持久线段树维护前缀和,然后利用前缀和就能查询中间的第k大了。#include#include#include#include#include#include#include#inc

2016-01-05 00:11:58 969

原创 思维 Codeforces491B New York Hotel

传送门:点击打开链接题意:一个二维网状格点,先给一个n,然后有n个坐标,表示最开始n个人的坐标,然后给一个m,然后有m个坐标,现在要从m个坐标中选出一个坐标,使得这个坐标到n个坐标的最大距离最小输出最大距离最小是多少,以及最后选出的是m个点中的哪一个, n,m思路:这题还真一下子转不过弯来了- -首先,很明显答案应该是min{|N[i].x-M[j].x|+|N[i].y-M[j].y

2016-01-04 00:43:31 891

原创 线段树 bzoj4373 算术天才⑨与等差数列

传送门:点击打开链接题意:强制在线,单点更新,区间询问,询问这个区间的数从小到大排序后,是否能构成等差为k的等差数列思路:利用线段树维护数字之和,维护平方和,因为平方和很大所以还要取模,还要维护区间内的最小值然后每次查询先取出最小值,然后通过等差k求出区间内数字和以及平方和应该等于多少,然后再用线段树查询,看是否等于这么多。#include#include#include#i

2016-01-03 22:30:58 1468

原创 可持久性数组 bzoj3674 可持久化并查集加强版

传送门:点击打开链接题意: 强制在线操作,定义3种操作,查询两个点是否在同一集合,合并两个点,把状态恢复到之前的某个状态思路:利用线段树实现的可持久性数组,其实原理上就是线段树,那么是如何实现可持久性数组的呢。对于某次修改,就再造一颗线段树,但是这样明显效率和空间都会爆炸。因为我们其实有很多节点都是上一次剩下的,其实我只需要新建新添加的那条链上的节点即可。其他节点只需要直接接在以前

2016-01-03 19:38:24 2098

原创 最小路径树 Codeforces545E Paths and Trees

传送门:点击打开链接题意:告诉你图,和起点,求一棵树,使得起点走树上的路径到达其他的节点的路径是原来图中的最短的,且要求起点到所有点的距离之和最短。思路:其实就是dijkstra的思路,只不过要稍微注意几个东西,首先是要保存上一条边的id,然后就是要注意当dist相同时,两条路径的长度相等时,应该要考虑最后一条边的长度,应该要选长度小的,因为两种方法实际上都是最短的,但是如果选边短的,就说

2016-01-02 23:07:54 855

原创 二分+线段树 Codeforces609F Frogs and mosquitoes

传送门:点击打开链接题意: 有n青蛙和m蚊子(n,m蚊子两个参数,位置pj,权值bj只有当xi+ti>=pj时,第i只青蛙才能吃到第j只蚊子。如果第j只蚊子能被多只青蛙吃到,那么xi最小的青蛙会把这只蚊子吃了每次青蛙吃了某只蚊子以后,ti会增加蚊子的bj输出n只青蛙吃的蚊子数,以及最后时候的舌头长度ti蚊子会按照给出的时间顺序出现。思路:我们先来考虑

2016-01-02 17:01:15 1219

原创 lcp+dp Codeforces611D New Year and Ancient Prophecy

传送门:点击打开链接题意:长为n的只有数字组成的字符串(n思路:最难的地方,就是如何去快速判断两个数字的大小谁大谁小呢?我们先来讲下最长公共前缀lcp的定义。如果有串A和串B,lcp[i][j]表示的是串A从原串第i位置开始,串B从原串第j位置开始,那么从这两个位置开始的有多少个字符相等那么如何来求lcp呢,方程很简单,看了都能懂lcp[i][j]=lcp[i+1][j+1]+

2016-01-01 17:58:55 998

原创 前缀和 Codeforces611C New Year and Domino

传送门:点击打开链接题意:告诉你一个地图(5e2*5e2),里面有障碍物,现在告诉你地图里面的一个子矩阵的对角点坐标,求这个子矩阵里能放多少个1*2的多米诺牌思路:求dp[i][j]表示(1,1)到(i,j)这个子矩阵的的答案,A[i][j]表示第i行的前j列的答案,b[i][j]表示第i列的前j行的答案那么对于(bx,by),(ex,ey),答案就等于dp[ex][ey]-dp[ex

2016-01-01 17:34:52 1125

C#八数码游戏实例

C#八数码游戏实例

2016-02-14

C#计算器实例

C#写的计算器实例

2016-02-13

左偏树论文-黄源河

黄源河的左偏树论文,一种简单易写而且合并和取最小值复杂度很低的平衡树

2015-10-27

Android 短代码实现 最简易的画板

Android 短代码实现 最简易的画板

2015-09-07

易逍遥模块1.6.ec

逆天http模块,无需处理cookie!(只有跨域才需要保存cookie)

2015-06-13

易语言 skinh破解版

SkinH_EL.dll

2012-08-15

空空如也

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

TA关注的人

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