自定义博客皮肤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

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

原创 找规律 51Nod1350 斐波那契表示

传送门:点击打开链接题意:每一个正整数都可以表示为若干个斐波那契数的和,一个整数可能存在多种不同的表示方法,例如:14 = 13 + 1 = 8 + 5 + 1,其中13 + 1是最短的表示(只用了2个斐波那契数)。定义F(n) = n的最短表示中的数字个数,F(14) = 2,F(100) = 3(100 = 3 + 8 + 89),F(16) = 2(16 = 8 + 8 = 13 + 3

2015-12-29 14:01:28 1640 1

原创 状压dp fzu2218 Simple String Problem

传送门:点击打开链接题意:一个长为n(n求两段子串A和B,A和B中间没有共用的字母类型,求len(A)*len(B)的最大值思路:当时想到了3种方法,感觉各有优势,都来BB一下。第一种方法:复杂度O(2^k*n)用s枚举每种字符在A串中是否使用,然后原串就能变成01串了,那么1表示在A中可以使用,0表示在B中可以使用就变成了求0的连续最长长度,和1的连续最长

2015-12-28 12:48:03 1155

原创 二分 51Nod1105 第K大的数

传送门:点击打开链接题意:n思路:二分。主要想说,,原来在重复的数的有序数组中二分某个数,只要算一次lower_bound就行了- -。。。。#include#include#include#include#include#include#include#include#include#include#include#include#include#inclu

2015-12-28 01:05:49 1068

原创 排序 Codeforces612D The Union of k-Segments

传送门:点击打开链接题意:告诉你很多条线段,从小到大输出所有的区间使得区间里面所有的点都被覆盖了至少k次,输出的区间数量越小越好。思路:先把左端点记为1,右端点记为-1,然后把端点合在一起排序,然后一顿乱搞。#include#include#include#include#include#include#include#include#include#include

2015-12-26 22:45:42 919

原创 栈 Codeforces612C Replace To Make Regular Bracket Sequence

传送门:点击打开链接题意:有4种括号配对,现在能把一种括号改变成另一种括号,但是不允许改变括号的开口方向。问最少的操作次数能把括号全部配对思路:运用栈去操作,如果是左括号,则压入栈,如果是右括号,看是否和栈顶配对,如果不配对就ans++,无论是否配对成功都弹出栈顶。如果途中栈空了也取栈顶,或者最后栈不为空,这些都是非法的,特判一下#include#include#include

2015-12-26 22:42:25 862

原创 离线+dp 51Nod1020 逆序排列

传送门:点击打开链接题意:求长度为n的排列的逆序对等于k的排列总数,取模1e9+7思路:刚开始想找规律,但是发现根本没法搞。。但是我们如果从dp的角度去思考,就能找到一个dp是这样的dp[n][k]=dp[n-1][i],max(k-n+1,0)其中边界dp[0][0]=1那么就能用离线+前缀和去搞答案了要注意的就是ans等于0的情况,离线的时候要注意p是否能取到所有的

2015-12-25 01:07:43 988

原创 中位数求和 BUAA214 大新闻

传送门:点击打开链接题意:给一个序列(n思路:O(n^2logn)的方法太多太多了,这里我们思考如何用O(n^2)来做,说实话非常的巧妙首先我枚举位置p为中位数,那么,我再创一个辅助数组,把位置p标记为0,把位置上的数比A[p]小的标记为-1,把位置上的数比A[p]大的标记为1,把位置上的数等于A[p]的且位置比p小的标记为-1,把位置比p大的标记为1那么,假如原数列是1 2 3

2015-12-23 01:03:02 1993

原创 线段树 Codeforces292E Copying Data

传送门:点击打开链接题意:给两个数组A和B,有两种操作,操作1,将A数组的一部分复制到B数组的某一部分上,操作2,输出B数组的p位置当前的数值。思路:利用线段树打懒惰标记成段更新裸题#include#include#include#include#include#include#include#include#include#include#include#inc

2015-12-23 00:54:15 746

原创 前缀并查集 Codeforces292D Connected Components

传送门:点击打开链接题意:给出n(思路:连通块肯定想到用并查集去维护。然后看到n比较小,所以可能可以每次查询里面复杂度带有n。因为删边用并查集不是很好维护,所以我们可能要想到能不能避免边的删除,那么很容易的想到前缀和思想。用PL[l]来保存[1,l]前l条边组成的图里面的并查集父节点的情况;用PR[r]来保存[r,n]后r条边组成的图里面的并查集父节点的情况;那么对于每

2015-12-22 23:51:02 1172

原创 DFS Codeforces292C Beautiful IP Addresses

传送门:点击打开链接题意:给n个数字,要求用这n个数字去组成ip,要求每个数字都出现过,且ip里面去掉.后是一个回文思路:大暴力,枚举的时候把ip分一半枚举就行,求出没有.的所有组合,然后再考虑添加.#include#include#include#include#include#include#include#include#include#include#inc

2015-12-22 23:41:06 1198

原创 离线线段树 Codeforces522D Closest Equals

传送门:点击打开链接题意:n个点告诉你,m次查询,每次查询给l,r,求区间[l,r]里面两个相等的数字的最近的距离是多少。思路:一般这种没有修改的题,都可以用离线来搞,按照区间右端点排序。然后各个点的值比较大,把它离散一下。用pre[i]维护上一个节点的位置,然后在线段树中,一个节点维护的是以这个节点作为两个相等的数字的左边那个,最小距离是多少。每次移动右端点时,都更新一下A[pre[

2015-12-20 21:23:36 1274

原创 贪心+二分 Codeforces609D Gadgets for dollars and pounds

传送门:点击打开链接题意:一个人手上有s卢布,他要在n天内买m样东西中的k样样例第二行是多少卢布换一美刀,第三行是多少卢布换一英镑然后接下来是m样东西,告诉你每样东西用什么货币结账(1是美刀,2是卢布),以及要多少那种外币要求:最早完成买k样的天数,以及输出方案输出第几天买完k样商品,然后k行购买的商品的id,第几天购买的输出任意答案就可以了 一种商品只能购买一次,

2015-12-20 21:15:10 1073

原创 LCA+最小生成树 Codeforces609E Minimum spanning tree for each edge

传送门:点击打开链接题意:给一个图,有m条边n个点,如果对于一个最小生成树中要求必须包括第i条边,那么最小生成树的权值总和最小是多少思路:求出最小生成树,然后对于m条边相当于m次查询,每次查询的时候,相当于求出在最小生成树中(u,v)路径上的边权最大值,那么新添加了一条边,就要把这条最大值的边删掉。所以题目转换成了,求路径上边权最大值。可以用LCA来做,也可以用树链剖分来维护。

2015-12-20 20:45:43 1430

原创 单调队列 poj1821 Fence

传送门:点击打开链接题意:有K个工人,和长为N的篱笆,现在要给篱笆上色。每个工人坐在Si上,他能刷的最大范围是Li,且必须是一个连续子区间,而且必须过Si,他刷完后能获得Pi钱问如何分配,使得K个工人的总利润最大思路:先设出方程,设dp[i][j]表示前i个工人,前j个篱笆的最大获利那么就有dp[i][j]=max(dp[i-1][j],dp[i][j-1]);dp[i

2015-12-16 15:29:59 1907

原创 单调队列 hdu3401 Trade

传送门:点击打开链接题意:有种股票,现在知道n天,拥有的股票股数必须思路:一道非常好的单调队列优化dp的好题!首先,dp无非就两种设法,1.dp[i][j]表示最后一次操作为第i天,已经拥有了j只股票的赚的最大钱数.2.dp[i][j]前i天里,已经拥有了j只股票的赚的最大钱数.我们可以发现,如果是第一种设法,方程不好转移,所以我们采用第二种,那么很容易就能列出方程

2015-12-15 00:29:32 737

原创 数位dp hdu5598 GTW likes czf

传送门:点击打开链接题意:告诉l,r,g,t,每次在[l,r]区间内选一个数字,再从g,t这两个数字里面选一个数字,求这两个数字的@值。定义x@y=((x&y)|y)^x思路:首先,我们能够证明,x@y=((x&y)|y)^x其实就等于x^y,这算是第一个绕圈把然后呢,我们再考虑到,一个数x对n个不同的数字求位异或,那么位异或的结果一定都不同。所以,题目可以转换成(r-l+1)*2

2015-12-14 01:38:01 1740 2

原创 倒推 hdu5596 GTW likes gt

传送门:点击打开链接题意:n个GT排列在一起,他们有两组,有可能是第0组的,也有可能是第1组的。每个人都有一个能力值。每次第i秒第i个人都会对他前面的另一组的人发起攻击,如果能力值比他低,就会退出游戏。另外还有m个数字Ci,在第Ci秒末尾的时候,前Ci个存活的人的能力都会+1,问最后剩余的人数思路:很明显可以逆推。用isc[i]表示有多少个Ci等于i,s[i]表示isc在前i个的前缀和。那

2015-12-12 23:28:34 836

原创 单调队列 hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

传送门:点击打开链接题意:部分背包思路:最简单的方法当然是二进制分解,不过最近在练习单调队列,用单调队列去做部分背包,也算是单调队列优化dp里迈出的第一步把~使用范围:只有对于f1(x)=max/min(f2(k))+f3(x) 且f3(x)与k无关,k对于部分背包这道题,本来的方程应该是dp[r+i*p]=max(dp[r+k*p]+(i-k)*h),k那么只需要稍微变形一下

2015-12-11 23:28:25 880

原创 凸包 Codeforces605C Freelancer's Dreams

传送门:点击打开链接题意:有n份工作,第i份工作做1个单位时间获得ai经验和bi钱,现在要凑齐p点经验和q钱,至少要工作多久,工作的时间可以为小数思路:仔细想想总觉得哪里不对劲,是不是感觉好像只需要1份工作或者2份工作的组合就能形成最优的?事实就是这样的,想达到最优最多只需要选择2份工作就行了,那么问题就是怎么枚举出这2份工作。现在我们考虑单位时间内能完成的内容我们假设向量V1

2015-12-11 12:59:01 1433

原创 斐波那契博弈 hdu2516 取石子游戏

传送门:点击打开链接题意:1堆石子n个,第一个人可以取任意个数但不能全部取完,以后每次拿的个数不能超过上一次对手拿的个数的2倍,轮流拿石子,问先手是否必赢思路:斐波那契博弈,后手赢的情况的数字会呈现斐波那契数列。#include#include#include#include#include#include#include#include#include#includ

2015-12-10 18:52:52 753

原创 威佐夫博弈变形 poj2348 Euclid's Game

传送门:点击打开链接题意:给你两个数字m,n,每次可以使得max{m,n}减去min{m,n}*k,后来的数字必须要>=0如果有一个数字变成了0,那么就算赢思路:因为只有两个状态,所以我们可以通过状态的转移递推找到规律,然后会发现和黄金分割数有关。。#include#include#include#include#include#include#include#inc

2015-12-10 18:49:55 1159

原创 nim博弈 hdu3951 Coin Game

传送门:点击打开链接题意:n个硬币摆成一个环,每次可以取的个数为[1,k]且必须是连在一起的,先取完的胜利思路:如果刚开始不是环,是链状的,那么就可以直接用SG函数以及nim游戏的知识搞定,但是这个是环,其实这个环也可以分解成一个独立的链状游戏,看留给对手的状态中是否有必输的情况,就能知道环状的是否能必赢了。然后打出表,找规律#include#include#include#in

2015-12-10 18:45:03 767

原创 巴什博弈 hdu2149 Public Sale

传送门:点击打开链接题意:两人竞拍,每次加价的价格在[1,n]范围内,第一次>=m的赢思路:巴什博弈,当m%(n+1)!=0时,先手赢,否则后手赢#include#include#include#include#include#include#include#include#include#include#include#include#include#inc

2015-12-10 18:40:02 714

原创 Anti-nim博弈 John poj3480

传送门:点击打开链接题意:和nim游戏一样,只不过取最后一个石子的人输。思路:有一个SJ定理,是专门用来求Anti-nim游戏的,如下SJ定理SG函数的求法一模一样,最后如果只有一堆,也能用SJ定理如果为Anti-Nim游戏,如下情况先手胜SG异或和为0,且单个游戏的SG全部SG异或不为0,且存在单个游戏的SG>1,即#include#include#inc

2015-12-10 18:36:05 902

原创 威佐夫博弈 hdu1527 取石子游戏

传送门:点击打开链接题意:轮流取石子。1.在一堆中取任意个数.2.在两堆中取相同个数。最后取完的人胜利,问先手是否必赢思路:威佐夫博弈博弈,满足黄金分割,且每个数字只会出现一次。具体求法见代码#include#include#include#include#include#include#include#include#include#include#include

2015-12-10 18:32:47 810

原创 nim博弈 hdu2176 取(m堆)石子游戏

传送门:点击打开链接题意:m堆石子轮流取,每次只能对一堆操作,每次必须要取,取的石子数量没有上限。第一个取完的胜利。问最后是否能赢,第一步要怎样才能赢、思路:nim博弈,根据SG函数定理,如果是独立游戏,那么应该是所有独立游戏的SG函数的异或值。很容易可以发现,对于每一堆石子的SG函数都等于石子的个数,所以就相当于求所有石子个数的异或值看是否等于0,如果等于,说明先手必输,否则说明先手

2015-12-10 18:27:59 901

原创 构造 Codeforces605B Lazy Student

传送门:点击打开链接题意:一个图n个点m条边,m条边里有n-1条边是一个最小生成树的边,另外n-m+1不是最小生成树的边。边的长度已经告诉你,问能否构造出满足这个最小生成树的图出来思路:构造一颗深度为2的树,根节点为n,然后有n-1条边,并且构造边的时候把是最小生成树的边和不是的边分开统计,分开按照长度排序对于一条边不属于最小生成树,如果这条边的端点是(u,v),那么要求这条边的权值大

2015-12-10 18:22:19 949

原创 nim博弈 Codeforces603C Lieges of Legendre

传送门:点击打开链接题意:N堆石子,轮流取石子,先取完的胜利。取石子的方法有两种。1.在某一堆中取1个2.如果某一堆里的石子个数为偶数(2*x),可以拆成k堆石子,每堆石子x个思路:对k的奇偶性讨论,然后再打出SG函数表,很容易就能找到规律,再把规律写出来就做完了#include#include#include#include#include#include#inc

2015-12-10 18:13:41 816

原创 倍增法LCA hdu2586 How far away ?

传送门:点击打开链接题意:给你一棵树,每条边有权值,求两点之间的最短距离思路:裸LCA。这里主要练习一下倍增法,感觉这种思路和代码实现很简单,而且能感觉实用性很大的,很值得学习倍增法要理解对2的次方的枚举顺序如果是要走固定步数,那么顺序枚举与i位与为1就行如果是要求一个临界位置,那么要从大到小枚举#include#include#include#include#

2015-12-08 20:46:08 1453

原创 树型dp hdu5593 ZYB's Tree

传送门:点击打开链接题意:告诉你如何构造一颗树,然后询问有多少点对的距离小于等于K(K思路:用csy的话来说,这就是个傻逼题,然而比赛的时候就是傻逼不会- -设dp[u][k]表示当节点u作为子树的根节点时,在这个子树中有多少点对与u的距离那么ans[u]=dp[u][k]+sigma(dp[v][k-i]-dp[vlast][k-i-1]) 1其实就是说,如果选u作为一个点对

2015-12-06 03:04:13 1010

原创 平衡堆+贪心 hdu1588 合并果子

传送门:点击打开链接题意:贪心任意石子合并思路:平衡堆的模板和代码测试#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define fuck(x) cout<<"["<<x<<"]"

2015-12-03 19:15:16 1155

原创 树链剖分+线段树 poj2763 Housewife Wind

传送门:点击打开链接题意:2种操作,一种路径上的值统一修改,一种是询问路径上数字连续区间个数。思路:树链剖分+线段树合并。这道题目主要就是难在用树链剖分上套线段树合并后,因为整条链被分成了很多条短的,把这些短的也要按照顺序合并。又因为其实是从左边和右边链的最底端向上执行的,所以应该把左右的分开,然后就是更接近根节点的点是区间的左区间,远离的点是右区间。主要的问题就在于路径上的合并,

2015-12-03 14:36:03 812

原创 树链剖分+线段树 poj3237 Tree

传送门:点击打开链接题意:3种操作,1单点更新,2路径正负反转,3路径查询最大值思路:线段树维护最大值和最小值和一个懒惰标记,然后在线段树的基础上用树链剖分维护#include#include#include#include#include#include#include#include#include#include#include#include#inclu

2015-12-02 23:57:47 769

原创 树链剖分+线段树 hdu3966 Aragorn's Story

传送门:点击打开链接题意:路径更新,单点查询思路:线段树+树链剖分,这里其实不需要懒惰标记也是可以做的#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define fuck(x) c

2015-12-02 23:55:16 868

原创 树链剖分+线段树 bzoj1036 树的统计Count

传送门:点击打开链接题意:节点更新,路径求最大值以及求和。思路:树链剖分,要注意单点更新和边更新的区别。然后就是在建线段树的时候,应该是用重新编号的新编号去建立的,刚开始一直没注意这个地方,然后调bug也调不出来,后来看了好久才看出来,以后还真要注意一下。#include#define fuck(x) cout<<"["<<x<<"]"#define FIN freopen("in

2015-12-02 19:53:39 766

原创 树链剖分+线段树 spoj375 Query on a tree

传送门:点击打开链接题意:边更新,路径查询边权最大值思路:第一道树链剖分题,其实树链剖分就相当于把树的边给分类了一样,分成了重边和轻边。然后,有一个性质,重链的条数和轻边的条数都不会超过log(n),所以总的复杂也只有log(n)也就是说,本身要维护一个路径上的某个东西,如果直接用线段树做,并不是很好做,树链剖分就相当于把重链和轻边分开求,因为重链在DFS序下编号是可以连在一起

2015-12-02 16:29:05 735

原创 数论 Codeforces604D Moodular Arithmetic

传送门:点击打开链接题意:告诉你p和k,其中(0思路:首先这个怎么看都跟循环节有关。。那么怎么找到循环节呢。。首先找k为0的情况,可以发现此时答案就是p^(p-1)然后k为1的情况,答案就是p^p如果k>=2很明显可以发现f(0)=0是肯定的假设k^r%p=1,r是最小满足这个条件的正整数那么f(x),因为f(x)在[0,p-1]内,所以f(x)

2015-12-02 10:45:34 992

原创 树的最小表示法 poj1635 Subway tree systems

传送门:点击打开链接题意:有根树,0表示远离根节点,1表示接近根节点,一条边只访问一次。现在告诉你两种访问方式,问这两棵树是否同构异形。思路:从下向上把子树排序,这样向上,最后表示出来的就是最小表示的了,那么就有序了,就可以直接比较字符串就能判断两棵树是否相同。#include#include#include#include#include#include#include

2015-12-01 16:16:48 1992

C#八数码游戏实例

C#八数码游戏实例

2016-02-14

C#计算器实例

C#写的计算器实例

2016-02-13

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

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

2015-09-07

易逍遥模块1.6.ec

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

2015-06-13

易语言 skinh破解版

SkinH_EL.dll

2012-08-15

空空如也

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

TA关注的人

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