自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

肘子的博客

向流星许愿

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

原创 Editor HDU - 4699(对顶栈)

题意:传送门题解:一共有五种操作,一直是在光标处操作,使用对顶栈进行维护,然后维护前缀和可以稍微使用dpdpdp转移下。code:code:code:#include<bits/stdc++.h>using namespace std;const int N=1e6+10;int n,x,stkl[N],stkr[N],tl,tr,f[N],sum[N];void pus...

2019-07-31 11:05:09 182

原创 Corral the Cows POJ - 3179(二分+前缀和+离散化)

题意:传送门题解:根据题意可以直接看出使用二分来做,但是数据范围是100001000010000,二分+++判断下来复杂度为O(n2∗logn)O(n^2*logn)O(n2∗logn)肯定会TTT,但是点的个数最多只给出500500500个,就算各不相同,那么离散下来也就只有100010001000,再算复杂度可以,然后就是将坐标离散化,进行前缀和,然后进行二分判定,判定中有个细节,就是草是在...

2019-07-28 16:33:00 206

原创 Raid POJ - 3714(平面最近点对+分治+归并)

题意:传送门题解:首先得了解平面最近点对的求法,采用分治求法,按照x轴排序后,分为左右两部分,最近点对要么在左边,要么在右边,要么就是中间合并起来,中间这块可以按照yyy坐标轴排序,通过卡死纵轴大小的矩形那种达到O(n)O(n)O(n)合并,如果按照yyy坐标轴排序的话,最后每次维护排序加维护O(nlogn)O(nlogn)O(nlogn),一共要分治lognlognlogn次,总复杂度O(nl...

2019-07-28 11:58:17 1055 1

原创 Color a Tree POJ - 2054(贪心+点的合并+增量)

题意:传送门题解:引用来自:传送门理解贪心思想,然后进行点与点之间的合并操作,答案统计时用一种增量的思想。code:#include<iostream>#include<cstdio>using namespace std;const int N=1010;inline int read(){ int x=0,f=1;char ch=getchar...

2019-07-26 22:58:47 113

原创 2019牛客暑期多校训练营(第三场)

A Graph GamesB Crazy Binary String题意:传送门题解:从都是000和111组成的序列中截取一个子串,一个子序列,使得截取出来的000和111的个数相同,子序列就很好办,直接取序列中000和111个数最小的一个就可以,对于子串而言,可以考虑成这样的,将序列中的000处理成−1-1−1,将序列中的111处理成111,进行前缀和,也就是说如果存在一个子串的话,那么必...

2019-07-26 12:32:15 174

原创 hihoCoder#1384 : Genius ACM(贪心+倍增+归并排序思想)

题意:添加链接描述题解:对于一个集合,肯定是应该选取最大的MMM个数和最小的MMM个数,最大和最小构成一对,次大和次小⋯\cdots⋯,

2019-07-25 10:05:23 256

原创 BZOJ1005: [HNOI2008]明明的烦恼(purfer编码)

题意:传送门题解:引用

2019-07-24 08:17:46 132

原创 Java在ACM中的使用

框架import java.util.*;public class Main{ public static void main(String args[]) { }}输入Scanner cin = new Scanner(System.in);···cin.close();输出System.out.print(); // cout << …;Syst...

2019-07-24 07:45:50 286

原创 Running Median POJ - 3784(动态维护中位数问题:”对顶堆“算法/链表+hash)

题意:传送门题解:动态维护中位数问题,两种解法,解法一是使用对顶堆,建立两个二叉堆,一个小根堆,一个大根堆,依次读入的过程中,设当前长度为MMM,始终保持:序列中从小到大排名为1∼M21 \sim \frac{M}{2}1∼2M​的整数存储在大根堆priority_queue<int> max_heap中。序列中从小到大排名为M2∼M\frac{M}{2}\sim M2M​∼M...

2019-07-21 23:05:29 274

原创 Cinema CodeForces - 670C(离散化)

题意:传送门题解:每个语言用一个int范围内的整数表示,但是可以发现如果将科学家和电影所涉及的所有加起来无非最多也就是2∗m+n2*m+n2∗m+n中语言,那么将其离散化然后统计排序处理出最大序号即可。附上代码:#include<iostream>#include<cstdio>#include<algorithm>using namespace s...

2019-07-21 13:50:13 189

原创 三个火枪手专题一:简单搜索

棋盘问题 POJ - 1321题意:传送门题解:搞一个列标记,然后进行按照行暴搜,这一行有能取得取下,或者不取这一行,取下一行也可以。附上代码:#include<iostream>#include<cstdio>#define ll long longusing namespace std;const int maxn=10;bool vis[maxn];...

2019-07-21 11:28:11 1050

原创 特殊排序(二分+交互题)

题意:有N个元素,编号1.2…N,每一对元素之间的大小关系是确定的,关系不具有传递性。也就是说,元素的大小关系是N个点与N*(N-1)/2条有向边构成的任意有向图。然而,这是一道交互式试题,这些关系不能一次性得知,你必须通过不超过10000次提问来获取信息,每次提问只能了解某两个元素之间的关系。现在请你把这N个元素排成一行,使得每个元素都小于右边与它相邻的元素。你可以通过我们预设的bool函数c...

2019-07-21 07:29:31 307

原创 Best Cow Fences POJ - 2018(二分+平均数处理+前缀和技巧)

题意:传送门题解:求一个平均数最大的,长度不小于L的子段。可以在实数域上二分这个答案,然后把数组中的每一个数都减去这个值,如果有&gt;=L&gt;=L>=L的区间相加&gt;=0&gt;=0>=0说明可以达到这个平均数,这是对于平均数处理的一个技巧,但是如何判断处理后是否有&gt;=L&gt;=L>=L的区间相加&gt;...

2019-07-20 19:33:41 277

原创 To the Max POJ - 1050(最大子段和拓展到最大子矩阵和)

题意:传送门题解:对于最大子段和的做法,设置一个变量tmptmptmp,每次新加进来一个数,如果和tmptmptmp相加起来&gt;0&gt;0>0,那么加进去,如果&lt;=0&lt;=0<=0,那么tmp=0tmp=0tmp=0,根据这个做法拓展到最大子矩阵和,可以枚举最大子矩阵的高和低,然后每次进行O(n)O(n)O(n)维护,最终复杂度由O(n...

2019-07-20 11:32:45 179

原创 二分模板

据说,只有10%10\%10%的程序员能把二分写对算法思路:假设目标值在闭区间[l,r][l, r][l,r]中, 每次将区间长度缩小一半,当l=rl = rl=r时,我们就找到了目标值。第一种:当我们将区间[l,r][l, r][l,r]划分成[l,mid][l, mid][l,mid]和[mid+1,r][mid + 1, r][mid+1,r]时,其更新操作是r=midr = mi...

2019-07-20 10:12:43 993

原创 unordered_map与unordered_set的用法

unordered_set是C++中的哈希,如果想让自定义的class作为key(unordered_set<key,value>)来使用unordered_set,需要实现:(1) 哈希函数,需要实现一个class重载operator(),将自定义class变量映射到一个size_t类型的数。一般常用std::hash模板来实现。(2) 判断两个自定义class类型的变量是否相等...

2019-07-20 09:23:17 1747

原创 Tallest Cow POJ - 3263(差分)

题意:传送门题解:这个题两种做法,第一种使用差分,考虑刚开始所有牛都是HHH高,然后给出一组关系,相应的差分数组中的关系发生改变即可。第二种做法使用线段树lazy操作(没试)。附上代码:#include<iostream>#include<set>using namespace std;const int N=10000+10;int n,p,h,m,heig...

2019-07-19 23:06:38 185

原创 Codevs2498 - IncDec Sequence(差分+贪心)

题意:传送门题解:首先考虑将数组进行差分,何为差分,与前缀和相反的操作,如果一个数组是这样的:a[1],a[2],⋯&ThinSpace;,a[n]a[1],a[2],\cdots,a[n]a[1],a[2],⋯,a[n]然后另一数组是这样的b[1]=a[1],b[2]=a[2]−a[1],b[3]=a[3]−a[2],⋯&ThinSpace;,b[n]=a[n]−a[n−1]b...

2019-07-19 22:10:25 153

原创 递归转非递归实现

题意:从 1~n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。题解:可以直接进行dfs,但是今天要用非递归实现,那么就模拟堆栈进行实现,非常有意思的一个挑战。附上代码:#include<iostream>#include<cstdio>#include<stack>using namespace std;int n,m;struct...

2019-07-19 18:41:44 409

原创 Fractal Streets POJ - 3889(递归+点的逆时针矩阵变换)

题意:传送门题解:可以知道第nnn等级由第n−1n-1n−1等级组成而来的,首先左上角那一部分是由n−1n-1n−1等级先绕左上角逆时针转270o270^o270o,然后与xxx轴对称得到,第nnn等级的右上角那块直接由第nnn等级平移过来,第nnn等级的右下角也是平移相对应的位置得到,第nnn等级的左下角部分是最复杂的部分,由第nnn等级的部分先绕左上角逆时针旋转90o90^o90o然后与xx...

2019-07-19 17:23:30 271

原创 Sumdiv POJ - 1845(分解质因数+小学奥数题+快速幂+等比数列求和递归公式推导)

题意:传送门题解:要算ABA^BAB的所有约数之和%9901\%9901%9901,首先可以对AAA进行质因数分解A=p1k1∗p2k2∗⋯∗pnknA=p_1^{k_1}*p_2^{k_2}*\cdots*p_n^{k_n}A=p1k1​​∗p2k2​​∗⋯∗pnkn​​约数之和的取法有多少种呢?num=(k1+1)∗(k2+1)∗⋯∗(kn+1)num=(k_1+1)*(k_2+1)*\cd...

2019-07-19 13:58:45 461

原创 四根汉诺塔(递推)

题解:三个汉诺塔如何分析:先将i−1i-1i−1个从a柱通过三跟柱子移动到b柱,然后将最大的移到c柱,最后再将i−1i-1i−1根通过三根柱子移动到c柱,所以递推公式为:d[i]=d[i−1]∗2+1d[i]=d[i-1]*2+1d[i]=d[i−1]∗2+1到了四根柱子的时候,就得考虑可以先将jjj个盘子移动到b/c柱,然后将剩余的i−ji-ji−j个盘子通过三根柱子移动到d柱,最后再将jjj个...

2019-07-18 22:51:19 4417

原创 最短Hamilton路径

数据范围:n≤20n\leq20n≤20题解:考虑两种状态,第一走了哪几个个点,第二是目前走到哪个点上面,然后用状态压缩进行DP,状态转移方程如下:f[state][j]=min(f[state][j],f[state−j][k]+w[k][j])f[state][j]=min(f[state][j],f[state-j][k]+w[k][j])f[state][j]=min(f[state][...

2019-07-18 18:45:58 135

原创 2018牛客多校第一场 D、Two Graphs (模拟)

题意:传送门题解:G2G_2G2​有多少个子图与G1G_1G1​是同构关系,何为同构,题意说的很清了,也是自己离散数学上课没听过后悔脸,题目中的专业术语也是看了半天,说的是如果两个图,如果点相应对应的话,那么它两的邻接矩阵是一摸一样的,看下题目数据范围1≤n≤81\le n \le 81≤n≤8,那么可以直接n!n!n!枚举G2G_2G2​所有点,假设与G1G_1G1​中的点相对应,然后判断邻接...

2019-07-12 21:53:09 223

原创 BZOJ2733: [HNOI2012]永无乡(启发式合并(使用线段树动态开点与合并+并查集))

题意:传送门题解:对于每个联通块,可以通过线段树维护值域的个数来进行维护,如果合并两个联通块,可以通过合并两个线段树维护,线段树通过动态开点实现。#include<bits/stdc++.h>using namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'...

2019-07-10 17:00:23 135

原创 Naive Operations HDU - 6315(18hdu多校第二场+线段树+树状数组)

传送门题意:开始情况下a序列是空的,b序列是个从1到n的数,然后两种操作,给出add l r,是给[l,r]区间所有数加1,第二种操作是query l r,询问∑i=li=ra[i]b[i]\sum_{i=l}^{i=r}\frac{a[i]}{b[i]}∑i=li=r​b[i]a[i]​题解:根据第一个操作应该想到用线段树lazy维护,可以每次用线段树维护一个区间最小值,初始化每个位置为b[...

2019-07-10 10:08:30 123

原创 BZOJ4034: [HAOI2015]树上操作(DFS序+线段树+树上问题维护贡献值)

题意:传送门题解:对于1操作而言,当这个点增加一个值时,那么对于它以及它的子树而言路径的贡献都会加上这个值,这个对于刚开始的值也同样是这个道理,对于2操作而言,它以及它的子树都加上一个值,那么对于某个子树内的点贡献增加了(depi−depx+1)∗a=depi∗a+(1−depx)∗a(dep_i-dep_x+1)*a=dep_i*a+(1-dep_x)*a(depi​−depx​+1)∗a=d...

2019-07-08 18:57:33 204

原创 CF711D Directed Roads (基环外向树森林+扣环+组合贡献+快速幂)

CF711D题意:给出一个基环外向树森林,然后现在可以给无向边指定方向,使得变为有向边,要使得每个基环外向树无环,问有多少种指定方法?题解:要让基环外向树有环,对这个造成贡献的只能是基环外向树环上的边,那么无非这个是顺时针或者逆时针,其余不在这个环上的边不会对答案造成影响,设环上的边总共有www条,那么贡献公式为:2n−w∗∏i=1i=n′(2wi−2)2^{n-w}*\prod_{i=1}^...

2019-07-08 12:58:07 252

原创 洛谷P1471 方差(线段树lazy维护区间平均数和区间方差)

题意:传送门题解:三种操作:一是区间加,使用lazy操作即可完成,而是平均数,使用区间加维护,三是区间方差,将公式展开,发现s2=1n∗(∑i=xi=yai2−2∗a‾∗∑i=xi=yai+(y−x+1)∗a‾)s^2=\frac{1}{n}*(\sum_{i=x}^{i=y}a_{i}^2-2*\overline{a}*\sum_{i=x}^{i=y}a_{i}+(y-x+1)*\overli...

2019-07-02 19:17:31 406

原创 小白逛公园vijos 1083 (线段树)

题意:传送门题解:使用线段树,对于每个区间,维护三个值,分别是这个区间的最大子段和,最大前缀和,最大后缀和,区间合并时最大字段和为左区间的最大字段和,右区间的最大子段和,或者是左区间的最大后缀和和右区间的最大前缀和相加的最大值,最大字段和维护无非是左区间的最大前缀和和左区间的总和加上右区间的最大前缀和,后缀和同理。#include<bits/stdc++.h>#define mo...

2019-07-02 01:19:26 163

空空如也

空空如也

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

TA关注的人

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