自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

萌萌哒的Leo

树在,山在,大地在,岁月在,OI在,我还要怎样更好的世界。

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

原创 codeforces 346C Number Transformation II

传送门题意:给两个数字a,b,有两个操作,第一个操作直接-1,第二个操作是,求a变成b的最少操作数题解:很明显令表示由b+k到b的最少操作数,假设b,b+k可以一步操作到达,由此得出单调上升,即可贪心每次减去最大值注意:到会有重复,需要用到函数去重后的数字当然也有别的思路:考虑到这是第一步可达区间,再从这里可以依次扩展到其他步的可达区间,有机会再写吧代码:...

2019-11-16 17:53:04 170

原创 codeforces 549C Happy Line

传送门题意:一行数字可以前后交换,交换后,之前在前面的数字+1,之前在后面的数字-1,问是否可以将这一行数字通过交换使得得到一行单调上升的数字题解:可以发现交换前后数字都只改变1不妨将数字的下标考虑进来,先不考虑1,直接交换,可以发现我们交换后再减去下标就是上面的式子所以原来的1就可以等价为直接交换考虑到这样一个事实我们先给再排序后由于整体单增再减,也是单增的,...

2019-11-16 17:13:04 174

原创 codeforces 1256E Yet Another Division Into Teams

传送门题意:n个数字,分成若干队伍(每个队伍至少3个数字),每个队伍都有最大最小值的差值,如何才能使所有队伍的最大最小差值之和最小。题解:容易有结论:人数 6,一定没有,人数6优下证:不妨设 则任取 有 所以我们可以通过将所有队员划分为3、4、5人数的队伍,贪心得按照大小顺序选择队员一定优,然后通过dp划分即可得到最优解...

2019-11-16 14:33:14 168

原创 bzoj P4870 [Shoi2017]组合数问题

传送门炒鸡强的dp啊,原来组合题还可以这么做,用组合的意义来dp,只做过用组合优化dp。我们考虑一下那个式子的意义:nk个东西中取r个的方案数+nk个东西取k+r个的方案数+nk个东西取2k+r个的方案数+...然后进一步转化问题:从nk个物品里选取膜k余r个物品的方案数。那么怎么求这个问题呢?很容易能想到一个简单的dp,设f[i][j]表示前i个物品取了膜k余j的方案数,

2017-07-31 01:31:02 511

原创 bzoj P4034 [HAOI2015]树上操作

传送门这道题树剖也蛮裸的,观察一下下标数组我们发现每一棵子树在线段树的下标肯定是连续的,想想dfs的过程就知道了,然后我们就能用树剖维护子树了。通过这题我们也知道了树剖不仅能维护链,也能维护子树。这题也有更高超的方法,用线段树维护dfs序,对于dfs序中出现的节点我们一个取正一个取负,就可以直接上线段树了。树剖代码:#include#include#includeusin

2017-07-31 01:07:01 456

原创 bzoj P3531 [Sdoi2014]旅行

传送门这道题学到了动态开空间线段树的写法,感觉跟主席树有一定的类似。说一下怎么动态开吧。首先回忆一下线段树的过程,我们发现对于这题,每一颗线段树都有很多的子结点是0,也就是说这些节点都是没用的,所以我们考虑对于每一个非0叶子结点到根都是非0的,但是其他都是为0的,都是没有用的,那么为何要为它们开内存存储呢,所以我们换种方式存储对每一个节点都有一个编号,然后结构体内的l,r都是存的l

2017-07-31 00:56:50 366

原创 bzoj P1072 [SCOI2007]排列perm

传送门果然一遇到dp就瞬间失去了思考能力。。整没看出来这是状压dp,思路也很不错。我们可以发现s长度很短,所以很容易想到状压来枚举,我们枚举一些数字是否使用,用状压记录一下,也就是设f[s][i]表示状态为s的膜d为i的方案数,然后通过枚举下一位转移。怎么转移呢?我们枚举了模数所以新添的一位就可以直接加上枚举的模数再膜就是新添一位后的新膜数f[i^(1注意:我们这里算的是组

2017-07-31 00:37:48 353

原创 bzoj P1036 [ZJOI2008]树的统计Count

传送门嗯,一道裸裸的树剖。代码:#include#includeusing namespace std;const int Maxn=30005;const int oo=2147483647;struct segment{int v,next;}e[Maxn*2];struct Qtree{int l,r,mx,sum;}t[Maxn*4];int size[Max

2017-07-31 00:13:49 431

原创 bzoj P2560 串珠子

传送门第一道子集dp。(感觉很像状压dp。。好弱啊我看了好多大神的博客才勉强看懂g[s]表示s状态下的所有情况,即s状态下的点两两之间任意连边(包括不连边),f[s]表示s状态下的合法情况(所有点连通)。那么我们就可以那全集剪去不合法的子集。全集就是f[i]=f[i]*(a[j][k]+1)那么怎么求不合法的子集呢?我们任取一个点(任取二进制中的一个1)来枚举,可以

2017-07-22 01:50:33 467

原创 bzoj P1042 [HAOI2008]硬币购物

传送门这道题算我写的第一道容斥原理。大概了解了容斥原理的思想。首先这题要求付款方案数,一道计数问题,然后我们就可以用容斥原理玩转的求一些计数问题。我们考虑先dp,设F[i]为不考虑每种硬币的数量限制的情况下,得到面值i的方案数。然后上容斥原理我们可以考虑用不考虑限制的方案数减去超过限制的方案数。再考虑怎么求超过限制的方案数,我们发现由容斥原理有:任意超过限制=1超过限制+2超过限制

2017-07-22 01:27:50 298

原创 bzoj P3195 [Jxoi2012]奇怪的道路

传送门这道题好难啊,不会(这个菜鸡博主什么都不会这道题就是状压dp啦(跟主旋律那题一样都是图的状压dp都是以点作状态压缩,那到题是枚举图的点的集合(子集dp),这道题是枚举点的奇偶性)说一下dp方程式,设F[i][j][s][l]表示枚举到第i个点,用了j条边,(由i-k~i的点的出度奇偶性组成的状态)s,与第l条边相连(注意这重状态不能省去,要不然会算重(连边顺序不同也算一种方案))

2017-07-22 01:09:45 324

原创 NOI 2018—遥远的梦

希望一年后的我不负自己。

2017-07-21 22:46:08 1064 1

原创 bzoj P4027 [HEOI2015]兔子与樱花

传送门好吧这题我也没想出来。我果然是个zz。。很妙的贪心,(其实我也知道贪心,但是姿势不对),我们观察数据nTIP:遇到树一类的思博题,我们要对子树分析,观察数据范围以及询问的ans的特点(要想到树上dp或贪心或用数据结构·维护dfs序)。贪心也要尝试猜一些结论。代码:#include#include#include#includeusing namespace std

2017-07-19 01:42:14 357

原创 bzoj P4033 [HAOI2015]树上染色

传送门这道题很妙啊。反正我是想不出来。。首先有一个很容易想到的状态,设f[i][j]表示子树为i,i涂了j个节点的距离和。嗯这个还是能想到的,然后考虑转移,然后就被虐成zz了。。分析子树i与儿子所连边的贡献,可以发现这条边的贡献等于他左右两边同色点数乘积和(左黑点数*右黑点数+左白点数*右白点数)。于是我们发现可以进行转移了,就是一个树形dp,f[x][j]=max(f[x][j]

2017-07-19 01:22:09 358

原创 洛谷 P2178 品酒大会(bzoj P4199 [Noi2015]品酒大会/uoj P131【NOI2015】品酒大会)

传送门这道题一看就是一种非常恶心的感觉,事实的确如此恶心到我饭都吃不下去。。我恐怕真的不适合这个竞赛。。这道题我想的是sa+单调栈然后全世界都比我快,全世界都用的是并查集。。好吧说下zz的做法:首先我们想想求lcp的过程两个后缀的lcp=rmq min height(i,j),那么我们考虑height[i]并维护一个单调递增栈,如果height[i]i)没有贡献那么就弹出,只要

2017-07-16 20:19:42 527

原创 洛谷 P3773 [CTSC2017]吉夫特(bzoj P4903 [CTSC2017]吉夫特/uoj P300【CTSC2017】吉夫特)

传送门昨天写的,额这题应该算ctsc2017最水的了吧,连我都会。这题一看组合数取模直接上lucas定理啊,知道lucas的应该都A了吧。。还有那个样例提示的太明显了吧。。还有不是很懂网上为什么有人要用exlucas,2难道不是质数??然后就是肯定都是组合数膜2都是1,根据lucas定理每一个组合数最后肯定都化成了c(1,1)或c(1,0)或c(0,1)或c(0,0),然后c(1,

2017-07-16 19:28:20 933

原创 洛谷 P3723 [AH/HNOI2017]礼物(bzoj P4827 [Hnoi2017]礼物)

当初省选时看这题一脸懵逼,打了70分的代码事实满分还是很容易的(啪啪啪,自己wa了十次还说容易??好了说下题解吧,这题就是求循环卷积,我的代码是0~n-1,式子是1~n(主要是博主FFT习惯写0~n-1),照样发图片(博主太蠢,不会输数学公式。。)注意:比较大小时的精度!!!在这里wa了10次!!!Tips:round()四舍五入函数代码:#include#include

2017-07-15 00:26:52 521

原创 洛谷 P3338 [ZJOI2014]力(bzoj P3527 [ZJOI2014]力)

传送门很难受,不会输公式,于是手写了一份,比较丑,希望不要介意。fft的套路果然深。。照着网上模板学习了一下。。代码:#include#include#include#include using namespace std;const int Maxn=1000005;int n,N,L;int rev[Maxn];int dig[Maxn];double p

2017-07-14 15:43:38 463

原创 洛谷 P3745 [六省联考2017]期末考试(bzoj P4868 [Shoi2017]期末考试)

传送门很妙啊,一开始只想着贪心。看了题解才知道三分。因为每个学生都必须知道自己的所有排名,所以只要结束时间固定那么就能o(n)算出所需价值,再看这个函数,老师不满意度是一条单调上升的曲线;学生则是下降;那门合成两条线一定是一条二次函数的并属于0到正无穷的单峰曲线(凸函数),于是三分结束时间就可以了注意:此题有一个超坑的地方c有可能等于1e16那么肯定不能让学生不满意,所以只要让结束

2017-07-13 10:57:10 862

原创 洛谷 P2324 [SCOI2005]骑士精神

传送门开始怼网络流24题所以发的比较晚,学习一下A*搜索,A*其实就是加入评估函数对有限步数或能估价有效的剪枝,对于A*一般只有dfs(bfs被成为最愚蠢的A*)。这题的估价函数:当前棋盘与目标棋盘不同的位置数量-1(评估函数是当前状态到目标状态的距离),所以就有:当前不相同的骑士个数 + 当前步数 若不满足就剪枝代码:#include#includeusing n

2017-07-13 00:24:00 365

原创 bzoj P3172 [Tjoi2013]单词

做完这道题终于知道了什么叫做绝望。。首先,这道题的读入坑到我wa了一页,然后这道题的读入坑了我一晚上,最后这道题的读入吧我玩废了。。用血写出来的经验最后一个字符要赋'\0'。。好了说说这道题后缀数组的做法:把每个单词拼在一起中间由分隔符分开然后做一遍后缀数组,观察sa数组,容易发现如果一个单词包括另一个单词显然要有height[i]大于等于这个单词,如果height[i]小于这单词

2017-07-12 14:04:24 320

原创 uoj P35 后缀排序

传送门妥妥的后缀数组裸题(主要是楼主菜只会打这种题目),还有拓展lucas还没调对qwq菜飞了。。。求sa和lcp,就是后缀数组求sa和height。代码:#include #include#includeusing namespace std;const int Maxn=100005;char a[Maxn];int tax[Maxn],tp[Maxn],sa[

2017-07-11 14:18:05 567

原创 洛谷 P1896 [SCOI2005]互不侵犯King(bzoj P1087 [SCOI2005]互不侵犯King)

传送门虽然水题一道但是还是调了很长时间,最近做题状态很差啊,很迷。。状压dp,比较简单没什么优化,把每一行作状态记录,所以跑了32ms(orz 0ms大神),设f[i][j][k]表示第i行状态为j用了k个皇的方案数,然后有一个很弱智的优化,把可行的状态处理出来,这里的可行是指上下行不斥每一行中的方格彼此不斥的状态。然后就有f[i][j][k]=f[i-1][l][k-cnt[j]](

2017-07-11 00:39:22 322

原创 bzoj P1031 [JSOI2007]字符加密Cipher

传送门我果然是菜啊,调个裸sa竟然调了一个晚上。。这题就是普通处理环,把原串复制一遍,做一遍sa就行了。代码:#include#include#includeusing namespace std;const int Maxn=200005;char s[Maxn];int n,m=256;int sa[Maxn],tp[Maxn],tax[Maxn],rank[

2017-07-10 20:39:54 326

原创 洛谷 P2023 [AHOI2009]维护序列(bzoj P1798 [Ahoi2009]Seq 维护序列seq)

传送门前天看到这道题觉得线段树水过,准备敲一敲分块。然后就没有然后了wa了十发。今天看到就顺手水了水。。最近被拓展lucas和ahoi2017玩废,我恐怕就是一只咸鱼了。。注意标记下传要加法标记要先乘再加,然后就没什么了。代码:#include#include#define ll long longusing namespace std;const int Maxn=1

2017-07-09 21:02:55 334

原创 洛谷 P3478 [POI2008]STA-Station(bzoj P1131 [POI2008]STA-Station)

传送门这题必须要吐槽!!!首先树形dp先求以1为根的深度和,然后由父亲节点转移到儿子节点,也就是除了儿子节点以下包括儿子节点的其他节点深度减1,儿子节点以下包括儿子节点的其他节点深度加一(画个图很容易看出,实在不行看popoqqq的博客,解释的很清楚),然后o(1)转移。状态转移方程:f[x]=f[fa[x]]+n-2*son[x],son[x]就是x节点包括自己的所有儿子节点个数,f

2017-07-07 22:17:50 467

原创 洛谷 P1169 [ZJOI2007]棋盘制作(bzoj P1057 [ZJOI2007]棋盘制作)

学习一发悬线法,但是好像出了点意外的事,在洛谷上A了却在BZOJ上炸了然后和标解拍了没问题。。有毒!!悬线法:设line[i][j]表示[i][j]位置向上的最大悬线(就是到障碍点的最大长度),fx[i][j]表示[i][j]位置悬线向左最大能移动距离,fy[i][j]表示[i][j]位置悬线向右最大能移动距离。怎么求fx和fy呢??如果悬线长度为1那么就是这个位置向左或向右达到障碍的距离

2017-07-07 10:50:39 365

原创 codeforces 822D My pretty girl Noora

很烦,不会做的尴尬,好神的数学题。很显然就是求f(x)剩下的暴力,博主表示打表找规律一点没用上(主要是博主菜),首先证明一个东东就是每一轮分女孩的组数一定是素数(这个鬼知道啊!!),考虑合数di = a·b,显然有,然后基本不等式+放缩就有,也就是只要是个合数就一定没素数组数优(2333我怎么可能会想到往素数方面考虑)然后埃氏筛法质因数分解,设is_prime[i]表示i的最小素因数,主要

2017-07-05 16:31:25 711

原创 codeforces 882C Hacker, pack your bags!

传送门愚蠢的博主又上线啦!这题博主一看排序+树状数组o(n*logn),先分类把天数相同的证件拿一个vector存(拿数组就炸了,vector的话空间就是o(n)了),然后按l第一关键字,r第二关键字,价值第三关键字排序,然后枚举n个证件,用x减去这个证件的天数,然后在相应的vector内,分两段l之前和r之后,然后树状数组求这两个区间的最大值。然后博主非常尴尬wa了一个小时。。

2017-07-04 22:22:49 588

原创 bzoj P1925 地精部落

传送门很妙的dp,状态设出来了方程没推出来(博主果然菜)设f[i][j]表示前i个数第一个数为[1,j]且第一个数降序的方案数,然后有f[i][j]=f[i][j-1]+f[i-1][i-j]解释一下,我们显然知道f[i][j-1](前i个数第一个数为[1,j-1]且第一个数降序的方案数),那么只要求前i个数第一个数为j且第一个数降序的方案数,考虑第1个数为j且降序则第二个数小于j

2017-07-04 20:23:33 328

原创 洛谷 P3819 松江1843路

一个小小的技巧:输出long long最大值printf("%lld",(long long)1e19);因为long long最大不是9*10^18所以输1e19就行啦然后本题就是个三分,很容易看出这个函数是凸函数。注意本题要用long long。#include#include#include#includeusing namespace std;const long

2017-07-03 15:40:45 335

原创 hihoCoder 1142 三分·三分求极值

传送门嗯,裸的三分,注意scanf读double型只能用%ld,还有printf自带四舍五入代码:#include#include#includeusing namespace std;const double res=1e-5;double a,b,c,x,y;double dis(double fx,double fy){ return sqrt((x-fx)*(x-f

2017-07-02 23:50:15 324

原创 洛谷 P3818 小A和uim之大逃离 II

传送门典型的搜索要注意的是:这题是搜一条虽短路径,所以用bfs(远远快于dfs);这题还要用到dp,设f[i][j][k]表示到位置[i,j],k表示是否用了能力所用的最少步数。dfs的代码(60分):#include#includeusing namespace std;const int Maxn=1005;const int oo=2147483647;char

2017-07-02 20:05:16 519

原创 洛谷 P3817 小A的糖果

嗯,模拟加贪心.考虑第i盒糖的吃糖优先级,肯定有第i盒糖大于第i-1盒糖,因为第i盒糖剩的越少第i+1盒糖吃的越少而第i-1盒糖已经吃了不用再考虑,所以先吃第i盒糖吃完再吃第i-1盒糖。代码:#include#includeusing namespace std;int main(){ int n,x,tmp,last; long long ans=0; scanf("%

2017-07-02 19:58:17 396

空空如也

空空如也

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

TA关注的人

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