自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 两个容斥

#include <iostream>#include <vector>#include <algorithm>#include <cstring>#include <cmath>#include <set>using namespac

2018-09-11 09:06:30 189

原创 单调栈

1437 迈克步 一个长度的值为所有该长度区间最小值中的最大值,问你所有的长度的这个值. 用单调栈,得出每个是最小值的最左和最右,就知道他的贡献范围了. 最后线性处理一下.#include <iostream>#include <vector>#include <algorithm>#include <cstring>#incl...

2018-09-04 00:25:42 266

原创 51nod 1711 平均数 (二分 形式转化树状数组)

问你所有区间中平均数第k大的那个平均数. 首先想到二分,但是怎么检查呢 sum[r]-sum[l]/(r-l) <= x => sum[r]-r*x<=sum[l]-l*x 这样就可以树状数组统计.#include <iostream>#include <vector>#include <algorithm>#inclu...

2018-09-04 00:19:03 201

原创 51nod 1495 中国好区间

问你有多少个第k大值大于等于t的区间 n<1e7 枚举最后一个数字,递推. 即保持当前大于等于t的有k个即可#include <iostream>#include <vector>#include <algorithm>#include <cstring>#include <set>using namespac...

2018-09-03 00:59:52 127

原创 51nod 1406 与查询 (dp)

asd

2018-09-02 15:47:51 145

原创 51nod 数组的宽度 (单调栈)

asd

2018-09-02 15:47:33 142

原创 51nod 1354 选数字 (dp)

1000个数字,给出1e9的k,问你其中选数字序列使得乘积为k的种类 dp[k]乘积为k的种类 看似是很大的,其实只需要看k的因子就好. 乘法 <-> 因子 算是个套路吧#include <iostream>#include <vector>#include <algorithm>#include <cstring>...

2018-08-24 02:02:19 191

原创 51nod 1421 最大MOD值(贪心)

2e5个1e6的数字,最大两个数的mod值 排序,从后往前,找小于k个a[i]的最大数. 贪心一下就好.#include <iostream>#include <vector>#include <algorithm>#include <set>#ifdef noob#define debug(x) std::cerr <&...

2018-08-24 01:59:10 132

原创 51nod 1052 最大M子段和(dp)

n个数,切为m段,最大和 n,m<=5e3 dp[i][j],使用前i个数(!!!第i个数被使用!!!),分为j段的最大和. 每到一个点,他最大的这个dp状态,要不是和前面一个连着最大,要不就是不和前面一个连着的最大.#include <iostream>#include <vector>#include <algorithm>#incl...

2018-08-24 01:54:07 134

原创 hdu 6396 Swordsman(IO板子)

1e5个怪,每个怪有五个属性,你有五个属性,必须要你的五个属性都比一个怪的都大,才能杀死他,杀死之后,每个怪会给你每个属性分别加值. 五个分五个sort. 然后五个指针扫,一旦一个被扫到,ocr[id]++,ocr[id]=k,代表他五个都被压制了,那就可以获得这个怪物的奖励. 当杀不了新怪的时候,停止 nklogn + nk 主要是存一下快读板子,这题当时没做出来,也是要背大锅.居然没...

2018-08-14 14:07:18 182

原创 hdu 6390 GuGuFishtion(欧拉函数+容斥)

稍加推导,就可以转化为一个非常经典非常简单的式子,求1-n,1-m中gcd(a,b)=k,k的出现次数. 容斥即可,注意反向. 但是我对这个容斥不太清晰,所以先不写. 非常对不起,这个题目我做不出来真的是非常非常不应该...

2018-08-14 13:53:29 248

原创 hdu 6386 Age of Moyu(重新建图)

n 2e5 m 2e5的一个图,每条边属于一家公司,如果你在点之间旅行时,换了不同公司的线路,那么就要花一块钱,不然就不用再花钱. 做法是重新建图,每一个点切分为几个站台,站台直接就要有1的消耗,但是相同公司的边连过来就都在一个站台上.这样直接最短路即可 可以spfa,直接在该点用set记录转移过来的公司最小值. 是一个原题 ARC 061E 这题没写,代码没有....

2018-08-14 13:51:07 160

原创 hdu 6395 Sequence (整除分块+矩阵快速幂)

在原始斐波那契数列上,第i项要加上 p/i 整除分块,复杂度根号nlogn(事实上不是,但是差不多这样)#include <iostream>#include <vector>#include <set>#include <algorithm>#include <cstring>#define debug(x) //std...

2018-08-14 13:45:23 216

原创 牛客多校 Sudoku Subrectangles (好题)

问你1000*1000的字母矩阵中,有多少个行列中均无相同元素的. 用尺取预处理出每个元素向右走多少一路上没有重复,向下走一路上没有重复. 枚举左上端点,然后扫一遍第一行,然后用类似打标记的方法,找到接下来的每一行,最长可以延伸多少,然后在扫一遍每一行,看他到底能够延伸多长(min)#include <iostream>#include <vector>#i...

2018-08-12 10:55:57 187

原创 牛客多校 Counting 4-Cliques (探索)

要你给出一个最多75个点的图,其中恰好有k个4元团 k<= 1e6 这题关键在外面一个点连进一个完全图中,可以获得c(x,3)个4元团.这个东西需要探索..#include <iostream>#include <vector>#include <cstring>#define debug(x) //std::cerr << #...

2018-08-12 10:50:10 193

原创 牛客多校 Bit Compression (暴力)

给出一个2^18位的01串,每次可以把他折半,两位两位之间进行 &|^ 三种操作, 问你有多少种方法可以使得最后变成一个1(18次操作). 暴力即可.可以先做一些预处理.#include <iostream>#include <vector>#include <cstring>#define debug(x) std::cerr <&...

2018-08-12 10:46:31 261

原创 Delivery Service(tarjan lca)

一棵树,2e5个点,2e5个点对,要你对这些点对经过的边进行统计,即每条边被经过的次数进行统计. 进行两次dfs,一次tarjan,找到所有点对的lca,然后dfs是维护每个点上一个num[p],代表这个子树中仍然在等待另一半的点数,那么这个节点的父节点在像这个子树连边的时候,这条边的访问次数就要+num[p]. 这个num[p]怎么维护呢,首先他会等于所有子树的num[p]之和,包括他自己身...

2018-08-12 10:37:46 251

原创 数字划分 dp

问你n<=50000,这个数由不相等的数组成的种类数. 这题是怪自己的,01背包很容易想到,但是我居然都没有想到,想着一些很空幻的dp,当然不可能有进展. 从01背包出发,他是n^2的,当然不行. 但是这个比01背包性质好,他的数字大小某种程度上是可以自定的. 所以他的状态转移方程可以更好. 看的题解.方程不写,以后来补...

2018-08-04 00:40:48 237

原创 牛客多校 take (期望 )

n个箱子,每个里面有可能有大小为x的钻石,如果打开后里面的钻石大于当前手里的,那么就换掉. 问你置换次数的期望. 转换成每个箱子打开后置换的概率之和,树状数组维护即可.#include <iostream>#include <vector>#include <algorithm>#include <tuple>#define de...

2018-08-04 00:38:18 209

原创 牛客多校 gpa (二分)

给出每门课的绩点和学分,最多删除k个课,问你最多均绩多少 一开始想着,就是贪心一下,某种排序,但是显然不可以(事实上在这上面撒比了很久甚至最后还在想) 想到了二分,但是不知道怎么二分,为什么呢,因为不知道二分的单调性在哪里,就不行了. 这题的核心就在于,不是排序后二分,而是二分每个之后排序,这样就可以单调确定每个点的价值. 二分是很灵活的东西,可以在任何地方出现.#include &l...

2018-08-04 00:33:54 211

原创 hdu 6333 Harvest of Apples(组合预处理+莫队)

要你求C(0,n)+…+C(m,n) 1e5组询问,n,m<=1e5 容易得到S(n,m)和S(n-1,m),S(n,m-1)之间关系,可以O(1)处理.使用莫队#include <algorithm>#include <cstdio>#include <cstring>#include <iostream>#include...

2018-08-02 00:10:32 151

原创 51nod 1040 最大公约数之和(欧拉函数)

给出n,问1~n中所有数gcd(i,n)之和.n为1e9 想要枚举gcd,但是找不到规律.. 看了题解,这样用欧拉函数是第一次见 假设gcd(i,n) = x 那么 gcd(i/x,n/x) = 1 那么,这样的i数量就为 phi(n/x)#include <iostream>#include <set>#include <vector>...

2018-08-01 00:29:01 105

原创 51nod 1677 treecnt(树上计数)

给出一棵树,问你要让任意k个点联通的最小需要边数之和是多少。 一般的树上题目,都是以点为核心进行的,但是这题很特别,他是以边为切入点,每条边的贡献,就是C(n,k)-C(x,k)-C(y,k)x,y分别为该边两侧,总是可以区分的。#include <iostream>#include <set>#include <vector>#include ...

2018-08-01 00:25:12 227

原创 hdu 6321 Dynamic Graph Matching(dp)

给出一个图,询问加减边,问你在当时的1匹配,2匹配,3匹配的种类有多种 2匹配=>该图中,选出两条边,连着四个点,完全不重叠的,其余同理 dp[S],S中的所有点,和某些边,是一个count1(S)/2的匹配 dap = 1<< u|1<< v 加边的时候 dp[S] += dp[S^dap] S^dap没有u和v的连边,加入之,(一维数组包括原来的) 注意...

2018-07-31 00:41:05 162

原创 hdu 6319 Ascending Rating(单调队列)

问你所有[i,i+m-1] i=0~n-m-1中所有区间的max值和一种count值 该区间中,从头每次出现一次大于,就count+1. 反向做优先队列即可. 正向难做很多..不会..#include <iostream>#include <set>#include <vector>#include <map>#include ...

2018-07-31 00:15:03 88

原创 hdu 6299 Balanced Sequence (贪心)

贪心要找一个贪心的方法,一般就是排个序,但是怎么排序呢,这里就是认为分成两种,l>r的和l#include <algorithm>#include <cstring>#include <iostream>#include <queue>#include <set>#include <stack>#incl...

2018-07-24 12:17:31 108

原创 hdu 6304 Chiaki Sequence Revisited (2018多校 一 1007)(区间维护)(规律)

打表之后,可以发现如果可以知道a[n] = x,那么将容易计算出答案. 那么问题在如何获得a[n] 本题关键性质 a[i] = x,x为2的y次幂的奇数倍,则x出现(y+1)次知道这一点之后,计算a[n]和sum[n]都是一样的,简单等差数列.#include <algorithm>#include <cstring>#include <i...

2018-07-23 23:17:33 121

原创 hdu 6301 Distinct Values (2018多校 一 1004)(区间维护)

给出m个区间,每个区间内的数字不能有相等的,求字典序最小的结果序列. 排序区间后,维护区间端点,用set获得填的值.在遇到右端点(和当前队列顶部端点为同一区间)时补充set的值,这个过程是类似尺取的,只用n次. 注意细节即可.#include <algorithm>#include <cstring>#include <iostream>#incl...

2018-07-23 23:11:44 109

原创 51nod 1682 中位数技术(前缀和)

问在给出序列中每个元素在包含他的区间中作为中位数的次数 显然有n^2logn的方法,然后卡到窒息 看了别人的 就用一种类似前缀计数的方法 bg[i] 到i大于的 sm[i] 小于的 bg[r]-bg[l]=sm[r]-sm[l] => bg[r]-sm[r] = bg[l]-sm[l] 注意细节即可#include <iostream>#include...

2018-07-18 23:43:34 118

原创 单调栈+dp+图论+贪心

要得到栈中最大值,维护单调栈即可.概率dp,多想想,借用前面的,一定要转移到子状态,不然非常难以计算.再计算多点最短距离,一般是floyd,根据k排序的方法,非常灵性,很难..贪心排序规则的找出,考虑两者相邻的能否互换,对结果的影响....

2018-07-18 23:34:25 297

原创 51nod 1405 树的距离之和(思维)

给定一棵树,求到每一个点到其他所有点的最短距离之和 假定一个根 然后求出该点的答案值 根据我们dfs的顺序,这颗树也是可以唯一确定的 任意一个子节点的值 = 总节点数+父节点值-2*子节点的子树节点数(包括自己) 不知道怎么想出来的,反正就是可以#include <iostream>#include <vector>#include <set&g...

2018-07-16 23:37:47 140

原创 51nod 1686 第K大区间(二分+尺取)

问你在所有区间中,排第k的那个区间是多少(根据众数值排列) 这题看了题解,一开始想要使用类似递推的方法..毫无用处发现是要利用好众数存在单调性,就可以尺取了..做一下离散化,时间卡的难受#include <iostream>#include <vector>#include <set>#include <map>using na...

2018-07-16 23:34:54 133

原创 51nod 1076 关于环

判断无向图中两个点是否存在两条”不相交”即完全没有重合边的路径 绝望了很久,然后想到环这种东西,如果一个图中,有点的入度是1,那么他肯定不能和任何点有这种路径,那么把这种点剥离完之后,那个”环”就一定每个都满足. 判断森林情况.#include <iostream>#include <vector>#include <set>#include ...

2018-07-10 23:11:06 125

原创 51nod 回文串划分

哇很好的题.. 发现在dp中,找到"转化的一步",枚举这一步非常重要. 这题首先是n2的处理出区间回文,一开始我一直想的是dp[i][j]来代表[i,j]之间最少划分几个,这个是容易的,但是会t,我想了几个优化,其中一个便是不是遍历i,j中间每一个点,而是直接选p,[i,p]为回文串,这样可以提高速度,但是仍然不够.我就想换一个状态. dp[i],前i个最少划分几个,其实这个我很早有想到,但...

2018-05-10 10:35:32 147

原创 51nod 子序列个数 dp

看上去很裸的题,依旧是dp. 晚点来补. dp[i]前i个的所有子序列,sum[j],以j结尾的子序列数量. 那么dp[i] = dp[i-1] (不加第i个) +(dp[i-1]-sum[a[i]]) (分三块,剪去还没以a[i]结尾的所有子序列数量.)#include <algorithm>#include <iostream>#include <v...

2018-05-07 14:27:46 176

原创 ppp

一题是求一组数的两两最大公因数,直接暴力分解,o(n根号n). 一题是求n个数中和为n倍数的解,因为n,所以应用歌巢原理.

2018-05-06 00:03:16 147

原创 cf Single-use Stones(水题)

贪心的想法,希望把青蛙们尽可能的往前堆,实现稍微有一点麻烦(我太垃圾了)#include <iostream>using namespace std;#define debug(x) std::cerr << #x << " = " << (x) << std::endltypedef long long LL;const...

2018-04-30 13:35:04 299

原创 hdu 6265 Master of Phi(数学)

数学题,主要是欧拉函数的简单应用和一个简单递推,一开始只是弄了个暴力,后来发现过不了,然后瞎逼搞了个递推一样的,就过了..每太清楚,晚上来补题解 其实只要拆分出互素因子之后发现是p-1/p就好,然后处理为1的情况,一开始我也是一个2^20,不过因为我是bitset遍历的,所以多20复杂度,过不了,如果dfs就可以过,这应该才是正解..现在这个做法感觉是阴差阳错..#include <i...

2018-04-28 16:24:25 845

原创 hdu 6267 Master of Random

好菜啊…ccpc的签到题都做的这么吃力..T^T 大概是一个..数学题把.. 递推计算每个节点在最终情况可能为最终结果做贡献的可能种类,等于前面的节点每个做贡献的可能之和(自己作为子节点贴上去,就可以蹭到人家的了)+自己被选为子树根节点(阶乘,容易想到),然后此前的每一个节点做贡献可能,都要乘以当前的i(因为总数量会乘以i),这个就之后过一遍阶乘就好.. 最后的分母一定是 n!=((n-1...

2018-04-20 10:44:20 657

原创 小H和密码

好难的dp… 好蠢的我… 勉强苟出来了,但是还不太清楚..这题很重要啊,要赶紧来补.. 对于一个dp数组,每个都要遍历到,每个dp状态,如果可以列举出他所有的可以来源,并在来源处转移,可以转移到,(转移方程可以写出)没有遗漏,就是可行的. dp[i][j],是否可以用前i个表达前j个,要不他自己是空的,要不是自己对应最后一个.#include <iostream>usin...

2018-04-18 09:53:06 137

空空如也

空空如也

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

TA关注的人

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