自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 hdu 6442 - 二项式定理

题目链接:点击这里 解题思路:另(A+根号B)^n = x+y*根号B,那么(A-根号B)^n = x - y*根号B,两式相减得:2*y*根号B,再除以2等于y*根号B所以q只会是1,第二个就是y,最后一个就是化成最简的B。其实可以更简单的理解这道题,根据二项式定= (A+根号B)^n其实我们要的也就是每一项都要有根号B的和,也就是奇数项和。所以直接用快速幂求(A+根...

2018-08-26 16:57:13 648

原创 hdu 6444 - 最大子段和(单调队列)

题目链接:点击这里 解题思路:根据k我们会得到一个循环周期,将在同一个循环节的点都归为同一类,因为归为同一类的点走过一个循环周期得到的快乐值时一样的。很明显如果循环周期是负的那一定就不走一个循环了。那直接求最长不超过m的最大连续子段和就行了。如果循环周期大于0,就有两种可能了(循环周期次数a=m/len(len为周期长度),b=m%n):1.走完a圈后再加上不超过b的最大连...

2018-08-25 21:29:08 1154

原创 hdu 6447 - 树状数组+离散化

题目链接:点击这里 解题思路:用y从小到到排序,y相等的按x从大到小排序,那么我用x做树状数组维护前缀最大值,因为经过这样排序之后,i前面所有的点y都是递增的,所以可以直接取前缀最大就行了。 #include<bits/stdc++.h>using namespace std;#define fi first#define se second#define...

2018-08-25 21:12:23 588 2

原创 hdu 6446 - 任意两点路径和

题目链接:点击这里 解题思路:考虑u,v两个点路径对答案的贡献次数,因为是全排列,那么u,v可以放在1,2位置,2.3位置。。。有(n-1)个位置,在颠倒一下顺序就是(n-1)*2,然后其他n-2个点可以随意排,也就是(n-2)!,所以任意一条边的贡献次数就是2*(n-1)!所以问题就变为求任意两点的路径和,在这个问题上没条边的贡献就是用这条把树节点分为两个部分,那么这个边的贡献次...

2018-08-25 20:33:54 401

原创 hdu 6438 - 贪心

题目链接:点击这里 解题思路:从左到右枚举,并把每个数插入set当中,每次询问到i位置时,查看set中最小的值a是否小于第i个数b,如果小于,加上它们的差值,并且插入两个b进去,第二个b是为了反悔用到,假设我后面有值c>b,那么显然c-a要优于b-a,此时的c-b+b-a刚好变成c-a,另外的一个b就是正常的插入了,当然反悔的b不用再增加次数。如果b<=a,则只插入一个b就...

2018-08-25 20:21:06 324

原创 poj 2155 - 懒惰标记二维线段树

 解题思路:这里简单粗暴的用了懒人标记的二维线段树,实际上可以利用01异或的性质可以不用去更新儿子,直接把有包含(x,y)点的矩阵都异或起来就行了。 #include<cstdio>#include<iostream>#include<cstring>#define lson l,mid,rt<<1#define rson ...

2018-08-24 19:36:16 288

原创 hdu 1823 - 二维线段树

题目链接:点击这里 解题思路:把身高看做一维,活泼度看做一维,做基本的二维线段树区间求最大,小数点先乘10把它化为整数才能做线段树。 #include<cstdio>#include<iostream>#include<cstring>#define lson l,mid,rt<<1#define rson mid+1,...

2018-08-24 19:23:57 239

原创 poj 1195 - 二维线段树

 解题思路:二维线段树入门题点击入门 //poj 1195#include<cstdio>#include<iostream>#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1using namespace std;typedef long long ll;cons...

2018-08-24 19:13:20 237

原创 快速了解二维线段树

学习二维线段树时想必肯定已经会了一维的了。那么二维线段树其实可以简单的理解为固定了一维然后在另一维上跑一维的线段树。一维线段树上的数组的每个下标代表着一个区间,那么同样的二维线段树则是二维的数组,第一维下标表示第一维的区间,第二维代表第二位区间。我们用(l,r)表示区间l到r的下标如果我们要查询(x1,y1)为左下角,(x2,y2)为右上角的矩阵和,即为[x1,x2,y1,y2]....

2018-08-24 19:10:08 4238

原创 hdu 6415 - DP

题目链接:点击这里 解题思路:根据题意我们很容易想到纳什均衡点就在n*m的值的位置我们现在从大到小来放这些数。假设1位置是第一个数放的位置。那么接下来第二个数肯定只能放在红色线上除了1以外的任意地方。假设他放在了2的位置。那么第三个数就会又多出黄色那条线的选择。图中也很容易看出点肯定是放在现在这个状态的交叉点上面。并且i行横线j行竖线的交叉点数是i*j原有的问题就可以转化成...

2018-08-23 19:55:01 155

原创 hdu 6437 - 最大费用流

题目链接:点击这里 解题思路:把每一场电影看成一个点,然后建成一个图。但是点只能经过一次所以跑网络流的时候要在每个点前面都建一条容量为1的边,那么就保证了点只会被经过一次了。接来下就是建立超级汇点和超级源点。其次在建一个次源点连接超级源点他们的容量为K,让次源点和超级汇点与各个点相连一条容量为1的边。接下来就是跑最大费用流了。 #include<bits/stdc+...

2018-08-23 19:32:44 218

原创 hdu 6430 - DSU on tree(树上启发式合并)

题目链接:点击这里 解题思路:根据树链剖分将子树分为重儿子和轻儿子。那么我们的DSU实际是就是这个基础上的暴力了。对于一个子树。因为dfs肯定是先处理完儿子之后再处理父亲。那么我在处理一颗子树的时候如果它是他父亲的重儿子就保留它的结果,对于所有的轻儿子要消除影响。那么对于一颗子树我们每次都只要去暴力它的所有轻儿子就可以了。时间复杂度:对于u这个节点,wi是它的祖先,wj是w...

2018-08-23 14:50:01 301

原创 hdu 6435 - 二进制枚举

题目链接:点击这里 解题思路:K 不大于 5, 仅是常数级别, 所以可以搞事情 我们发现 |xMW [i] − xSW [i]| = max(xMW [i] − xSW [i], xSW [i] − xMW [i]) 也就是说对于每一个维度只有两种选择, 同时 2^k≤ 32 也不大, 所以可以枚举每一 维的大小情况, 分别取主武器与副武器的最大值并且两个二进制位刚好互补就好了, 复杂...

2018-08-22 21:01:46 162

原创 hdu 6311 - 欧拉路+欧拉路径

题目链接:点击这里解题思路:根据欧拉定理可得无向图需要几笔画完为各个连通块的∑max(1,连通块奇度点个数/2)。那么如果一个连通块是欧拉回路,也就是奇度点数为0,就可以直接求出他的路径。如果连通块的奇度点数不为0,那么将奇度点两个两个连一条虚边,留下两个点不连作为欧拉通路的起点和终点。那么连完虚边的连通块就形成了一条欧拉路径,那么原图的几条欧拉路径就是由这些虚边分隔开的...

2018-08-21 19:40:00 202

原创 牛客网暑期ACM多校第五场E - 带权二分最大匹配

题目链接:点击这里 解题思路:原题意可以看做原来4个人的宿舍在i宿舍现在要搬到j宿舍需要至少搬多少个人。那么新宿舍与旧宿舍里面相同的人数有几个说明这几个人就可以不用搬了。形象的说,如果从i宿舍搬到j宿舍,就看j和i宿舍现在的人里面是否存在相同的人在里面,这几个人就不用搬了,不在j里面的要从i搬到j。最后就是跑一个二分最大匹配求出不用搬的最多人数,然后用4*n减去就行了。 #i...

2018-08-05 14:31:23 205

原创 IO挂

namespace fastIO{ #define BUF_SIZE 100000 #define OUT_SIZE 100000 #define ll long long //fread->read bool IOerror=0; inline char nc(){ static char buf[BUF_SIZE],*p1...

2018-08-05 13:13:33 200

原创 hdu 6319 - 单调队列

题目链接:点击这里 解题思路:听说反向比较好做。。。。后来想想好像确实,不过比赛的时候做的是正向,就说正向吧。先用一个单调栈处理出big[i]表示从左到右第一个大于a[i]的位置。时间复杂度O(n)最后就说单调队列解决问题了。考虑当a[i+1]>a[i]的时候其实直接删除队首a[i]就可以了.i+1完全继承i的状态。那么当a[i+1]<=a[i]时,如果删除a[...

2018-08-05 13:05:52 199

原创 hdu 6299 - xjb贪心

题目链接:点击这里 解题思路:先把每个字符串消成))(((这样的情况,也就时该消的都消掉之后肯定最后剩下不能消的。然后两个字符串谁排在后面谁排前面看哪个顺序抵消的括号数多久按哪个顺序。不会证明。。。。 #include<iostream>#include<cstring>#include<algorithm>#include&lt...

2018-08-05 12:43:23 200

原创 hdu 6325 - 凸包面积

题目链接:点击这里 解题思路:实际上是求从第一个点出发逆时针路径到达最后一个点的凸包,其实一个细节就是凸包上的点上,三点共线的中间那个点是否要删除?那就看他后面的那个点的下标是否小于它,小于的话删除之后字典序就更小了。 #include<bits/stdc++.h>using namespace std;const int mx = 2e5 + 10;typ...

2018-08-05 12:35:41 349

原创 hdu 6333 - 数论+莫队

题目链接:点击这里解题思路:另S(n,m) = c(n,0)+c(n,1)+c(n,2)+...+c(n,m)那么S(n,m) = S(n,m-1) + c(n,m)又c(n+1,1) + c(n+1,2)+...+c(n+1,m) = S(n,m)+c(n,1)+c(n,2)+c(n,3) +...c(n,m-1)->由c(n+1,k) = c(n,k) +c(n,k...

2018-08-05 11:39:14 272

原创 牛客网暑期ACM多校第六场I - 线段树

题目链接:点击这里 解题思路:这题还不让离线真的是,不过它把关键放在了删除上面,这就是一个区间被覆盖之后就会被删除了。那么这个问题就可以用O(nlogn)来解决了.用左端点l来离散建立线段树,右端点r作为区间值。线段树维护区间最大值.那么我们去查询x的时候实际上就是在线段树[1,x]中去查找值不小于x的点,然后把它删除,之后改变他的值为负无穷,因为他已经被删除了。这就是为什么可以用...

2018-08-04 23:12:48 104

原创 牛客网暑期ACM多校第三场G - 数论

题目链接:点击这里 解题思路:处理这个问题之前我们先来考虑更简单的问题:在长度为n的连续块上有m种染色颜料,而且距离小于等于k的块颜色不能相同的染色数是多少?首先我们知道如果m<k,那么肯定无解。那么染色方案数为:m*(m-1)*(m-2)*(m-3)*...*(m-k+1)*(m-k+1)*(m-k+1)....到第k块时它就会受到前面k-1块的限制,必须两两不...

2018-08-04 22:34:03 222

原创 牛客网暑期ACM多校训练营第二场J - 二进制状态压缩

题目链接:点击这里 解题思路:只要田上被施上一次不同的肥料那么植物就死了。那么我们知道两个值不同那么他们的二进制位至少有一位是不同的。根据这一特点,先可以用前缀和求出一块田被施了几次肥。然后枚举每个二进制位,将原来的施肥操作变为施肥值的该二进制位是1才施肥,那么如果一块田两次施肥次数不等,说明该块田至少被一个不等于田地值的肥料施过,那么他肯定就废了。 #include<...

2018-08-04 21:36:40 176

原创 牛客网暑期ACM多校第二场H - 树形DP

题目链接:点击这里 解题思路:dp[i][0][j] 表示以i为根节点j条不相交路径的最大和dp[i][1][j] 表示以i为根节点j条+1条一个端点在i的不相交路径的最大和dp[i][0][j]的转移:1.儿子的j条不相交路径的最大和2.儿子的j-1条+2条端点在i的不相交路径两者取最大即可dp[i][1][j]的转移:儿子的j条+1条端点在i的不相交路径...

2018-08-04 21:19:21 161

原创 牛客网暑期ACM多校第二场G - 双指针操作

题目链接:点击这里 解题思路:第一种:如果没有花费限制的话,那么都集中在中位数那里一定是最优的。所以我们可以二分答案然后去找可行区间在那里面就可以直接集中到中位数一定是最优的。第二种:我们主要说第二种骚操作,从左到右枚举集中点,当前最优状态可以大部分继承上一个状态的最优状态。用两个指针维护最优区间,也就是集中点左边最远的距离和右边最远的距离。这样维护居然跑了100多MS,比二分...

2018-08-04 21:06:46 149

原创 hdu 6331 - 分块 + dp

题目链接:点击这里 解题思路:考虑从s走到u至少经过k条路的最少花费可以等价于:ans[k] = max(f[B][s][i]+F[A][i][u]) i∈[1,n],(A*100 + B = k)f[B][s][i]表示从s走到i刚好B步的最少花费,F[A][i][u]表示从i走到u至少A*100部的最少花费。这样就可以把问题变成100的规模来算了。那么最后两个相加就是走至少...

2018-08-04 20:46:26 169

原创 hdu 6327 - 期望DP+状态优化

题目链接:点击这里 解题思路:令id[i][j][k]表示最后三个数的gcd是i,最后两个数的gcd是j,最后一个数是k的状态值。这样表示的话状态就会被大大的压缩,而且我们的压缩方法也是正确的。因为题目要求的是gcd而不是他的值,所以不管最后三个数是什么,如果他们的i,j,k相同。说明他们的价值就是一样的。这样就可以把一个100*100*100的状态数压缩成大约1500的状态数。那么当p位...

2018-08-03 23:34:55 355

空空如也

空空如也

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

TA关注的人

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