自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 poj 3714 - 平面最近点对

题目链接:点击这里   解题思路: 在原有的分治算法上加上标记,如果标记不同的则计算距离,不然的话就返回无穷大. 用归并排序再可以省下logn 这题要是卡数据不知道有什么更高深的办法.   #include <iostream> #include <cstdio> #include <cstring> #include <cmath>...

2018-09-25 22:57:26 428

原创 hdu 1007 - 平面最近点对 - 分治

题目链接:点击这里   解题思路: 将坐标按x从小到大排序,现在将原问题大小(l,r)分为两个部分(l,mid),(mid+1,r),记这两区间的最小距离为d1,d2 d = min(d1,d2),显然d不一定是最小的答案,因为可能两个区间各拿去一个点的距离更小. 设从左区间拿出点P1,右区间拿去点P2,显然P1到x == mid的中轴线距离不能超过d,不然不管去找任何P2答案都肯定大于...

2018-09-25 21:02:51 344

原创 Gym - 101775J(2017 EC final) - 差分序列

题目链接:点击这里   解题思路: 差分序列:b[i] = a[i] - a[i-1] 原序列为: 1 4 5 8 7 差分后: 1 3 1 3 -1 -7,多出来的以为可以看做0 - a[n]. 差分序列的性质:前i项和等于原序列的a[i],这个很容易就能证明 如果要对一个区间的数都加上1,那么就是a[l]++,a[r+1]--,之后求一下前缀和就是当前位置更新后的值了. 那不是和...

2018-09-24 18:58:00 481

原创 最大权闭合子图小结

闭合子图: 从原图的点集V中选取若干个点生成一个新的点集v,若任意的节点i∈v,在原图中有i->j的边时j也∈v,那么v构成的子图就被称为闭合子图. 例如有3个点1,2,3且有边1->3,2->3构成的一个图.此时有闭合子图{1,3},{2,3},{3},{1,2,3}以及∅   最大带权闭合子图: 此时每个节点都有其相应的权值,选择一个闭合子图使得他们的节点权值和最大...

2018-09-23 17:50:29 585

原创 hiho 1830(2018 北京网络赛 C) - 模拟

题目链接:点击这里   解题思路: play1 : 按相应等级出一张,不能的话只能说谎且出字典序最小的一张. 挑战1: 陈述者出的rank为X的牌数为p,play1手里rank为X的牌为q,q+p>4,挑战陈述者. 挑战2:下一个陈述者是play1且play1下次陈述必须说谎,挑战陈述者   paly2:出完手上相应等级的牌,不能的话只能说谎且出字典序最小的一张 挑战1:下一...

2018-09-23 13:30:32 198

原创 ZOJ - 4056(2018 青岛网络赛J) - LCM

题目链接:点击这里   解题思路: 将t变为最近一个a或者c的倍数,这样可以避免在最后的时候有可能的坑. 然后很容易就想到最小公倍数是一个周期,然后最后在跑一个求余的长度. 时间复杂度O(T*max(a,c))   #include<bits/stdc++.h> #define lson l,mid #define rson mid+1,r using namespac...

2018-09-17 21:43:50 259

原创 ZOJ - 4048(2018 青岛网络赛B) LCA + 二分思想

  题目链接:点击这里   解题思路: 首先预处理出原来树中节点u的C(u)值,那么在给出的ki个节点后,将他们根据原C()大小从大到小排序. 那么假设最小情况下最大值不会超过第i个C()值,那么意思就是前i个节点的C()值要做出改变才行,怎么让他们都改变呢? 将红点设在前i个点的最近公共祖先上,就可以将他们都改变,且尽量最小. 对于前i个点C()的变化后最大值也可以递推求出.  ...

2018-09-17 21:28:34 495 1

原创 ZOJ - 4053(2018 青岛网络赛) - 启发式 + 主席树

题目链接:点击这里   解题思路: 如果我们已经知道区间(l,r)的逆序对值W,现在对m进行标记,l<=m<=r.那么区间就被分为了两块[l,m),(m,r]. 对于新得到的两个子区间,设区间长度小的那个子区间的长度为k,区间标记为rt 那么我们可以利用主席树在O(k*log(k))求出rt逆序对值,那么我们如何得到另一个区间的值呢? 设点i的正贡献为:[1,i-1]大于a...

2018-09-17 21:17:55 469

原创 ACM-ICPC 2018 焦作赛区网络预赛 - K - 背包二进制优化

题目链接:点击这里   解题思路: 对于i种物品有2^(c[i])-1个,将个数二进制压缩,原理就跟二进制数可以组成任意数值是一样的,而且由于二进制成倍增长,肯定不会有重复,如果还不懂可以去学习多重背包.   #include<bits/stdc++.h> using namespace std; typedef long long ll; const int mod = ...

2018-09-17 20:52:38 212

原创 ACM-ICPC 2018 焦作赛区网络预赛 - F - 最大费用流

题目链接:点击这里 解题思路: 如此神奇的构图! 首先建立源点汇点S = 0,T = n + 1,然后对所有i∈[0,n]建立一条(i,i+1)容量为k花费为0的边,使所有的点一开始都形成一个串. 那么对于一个覆盖l->r,用费为w,建立一条(l,r+1)容量为1花费为w的边,这怎么理解呢? 原来在没有覆盖区间的网络里面形成的那一串所有点的流量都是k,也就是说从S出发每次流出...

2018-09-17 20:46:22 373

原创 ACM-ICPC 2018 焦作赛区网络预赛 E - 树链剖分 + 多重标记

题目链接:点击这里   解题思路: 如果这题只有乘法和加法操作那么我们可以直接套树链剖分 + 多重标记,那么我们就想办法把取反变为加法和乘法. !x = (2^64-1) - x,   -x % (2^64) = (2^64-1)*x % (2^64)  , !x = (2^64-1)*x + (2^64-1) 这样就把取反也转化成加法和乘法的操作啦. 而且我们并不需要去快速乘,因为数...

2018-09-17 20:26:02 209

原创 落谷 P3373 - 线段树多重标记入门

题目链接:点击这里   解题思路: 以前做区间修改都是一种标记,可以直接标记.而现在这题既有乘法更新又有加法更新,如果再按以前的思想循序更新就肯定会出错. 所以在多重标记的情况下我们可以给它们制定一个优先级的规则,假设每次的更新都是乘法优先于加法.那么更新操作要怎么改变呢? 设add[]为加法懒惰标记,mul[]为乘法懒惰标记. 对区间rt进行加x操作:直接add[rt] += x ...

2018-09-17 20:15:04 317

原创 ACM-ICPC 2018 徐州赛区网络预赛 C - dfs计算期望最大值

题目链接:点击这里   解题思路: 对于这么一个3*3的格子一共就是有八种选择,那么题目要求在这八种的选择的的值的期望中输出最大的那个. 那么我们首先就去固定'*'号我们不知道而M知道的点,将他变为已知的值,然后再去暴力dfs枚举'#'号的值,求出这次所有‘*’号固定的情况的八种中的最大期望.最后将最大期望和对固定'*'号方案数求均值就是最后最大值期望了.   #include&lt...

2018-09-12 22:53:52 177

原创 ACM-ICPC 2018 沈阳赛区网络预赛 F- 有源汇上下界可行流

题目链接:点击这里 关于上下界网络流 解题思路: 将二分图的点变成边,也就是新建一个点唯一指向原来的点,使得新建的与原来的一一对应.这样经过原来的点就必须经过新建点与原来点的边,也就将点变成了边,直接在建立源点S,汇点T,使其变为有源汇上下界网络流. 之后就是对其求是否有可行流了.   #include <bits/stdc++.h> using namespace st...

2018-09-11 21:56:51 161

原创 关于上下界网络流

1.无源汇点上下界可行流 一个无源汇点网络流就相当于一个循环流,流量在这个循环中一直流动,它的最大流就是单位时间的最大流量. 那么对于无源汇上下界网络流是否有可行解,也就是满足每个边的流量都至少是它的下界,并且保证所有点的"流量守恒"就是有解. 那么我们就想办法将有上下界转化为无上下界问题,也就相当于下界为0,那么转化为无上下界网络流它的边的容量就变为(上界值-下界值).如此转化会造成新的网...

2018-09-11 21:51:17 155

原创 ACM-ICPC 2018 沈阳赛区网络预赛 G - 容斥

题目链接:点击这里   解题思路: 首先要将原有的递推公式变成a[n] = n*n+n,那么前n项和就可以分为求n^2和n的前n项和,这个就有了很清楚了的公式了.然后就是将m质因子分解出来,用容斥求出和m不互质的数的贡献和。   #include<bits/stdc++.h> #define fi first #define se second using namespac...

2018-09-11 19:18:14 131

原创 ACM-ICPC 2018 徐州赛区网络预赛 A-dp

题目链接:点击这里   解题思路: 好像这题有个O(1)公式,但是看题目的数据范围标程应该也跟我一样是dp. 和原本的相邻位置不能染相同颜色不同的是它是相邻不能位互补.所以要有三个状态: f[i]表示i个人相邻位置值不互补且头尾值互补的的方案数 F[i]表示i个人相邻位置值不互补且头尾值不互补且头尾值不相同的方案数 G[i]表示i个人相邻位置值不互补且头尾值不互补且头尾值相同的方案数...

2018-09-10 23:47:32 165

原创 ACM-ICPC 2018 徐州赛区网络预赛 G - set

题目链接:点击这里   解题思路: 本题如果倒着做,那么问题就变得十分简单,当插入一个点时,去找它的右边最近的一个点和左边最近的一个点,此点被这两个点夹在中间,那么它的贡献一定只受限于这两个点,所以用set维护一下很容易就能做。   #include<bits/stdc++.h> using namespace std; typedef long long ll; cons...

2018-09-10 23:38:21 170

原创 ACM-ICPC 2018 南京赛区网络预赛 B题 - 单调队列

题目链接:点击这里   解题思路: 此问题相当于在01矩阵中找全1的子矩阵个数. 从下到上,从左到右枚举点作为子矩阵的右上角.那么就是去找合法的左下角了. 假设现在以(x,y)作为右上角,在(x,y)的左下角去找一个点作为子矩阵的左下角使得这个子矩阵不会包含任意的0点 那么(x,y)左下角的0点坐标会围成一个高度递减的楼梯型围线,它与x轴,y轴组成一个多边形,那么在这多边形内的点作为左...

2018-09-01 22:04:26 339

原创 ACM-ICPC 2018 南京赛区网络预赛 I题 - 回文自动机

题目链接:点击这里 解题思路: 首先我们知道一个长度为n的字符串的所有不同的子串不会超过2*n种,所以不同的回文子串自然不会超过n种。 对于回文自动机,与AC自动机相同的是也有一个fail指针指向第一个相近的且被其包含的一个回文串. 所以建树方法基本与ac自动机相同,不懂自动机的可以去查。 #include<bits/stdc++.h> using namesp...

2018-09-01 21:03:21 344 2

空空如也

空空如也

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

TA关注的人

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