【leetcode】4Sum(middle)】的更多相关文章

Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target. Note: Elements in a quadruplet (a,b,c,d) must be in non-descending order.…
题目要求的比它的邻居比自己奖励,因此,我们有最少一个多的.所有我们可以找到所有的坑,凹坑例如,存在以下三种情况. 找到全部的凹点后,我们就能够从凹点处開始向左右两个方向依次查找递增序列.当中每一个高的都要比相邻的矮的多一个.比方1,2,5,4.我们找到凹点为1 和4,那么从1開始向左没有其它点,我们向右,依次得到2 比1高,2的糖果应该是1的基础上加1.为2, 5比2高,5的糖果是在2的基础上加1,为3. 令一个凹点4, 向左,5比4高,5的糖果应该是在4的基础上加 1,为2,这时我们发现冲突了…
摘要: 继上一篇NoSQL之[MongoDB]学习(一):安装说明 之后,知道了如何安装和启动MongoDB,现在对启动时指定的配置文件(mongodb.conf)进行说明,详情请见官方. 启动MongoDB有2种方式,一是直接指定配置参数,二是指定配置文件.这里先介绍配置文件,启动方式如下: mongod --config /etc/mongodb.conf 配置如下: verbose:日志信息冗余.默认false.提高内部报告标准输出或记录到logpath配置的日志文件中.要启用verbos…
原文:[操作系统]进程间通信(C#) 08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/details/7747205 进程间通信 命名管道 进程间通信的一种方式,Pipes:管道,分为无名管道:在父子进程间交换数据:有名管道:可在不同主机间交换数据,分为服务器方和客户方,在Win9X下只支持有名管道客户. 命名管道的命名 命名管道是一个有名字的,单向…
[Luogu3444]ORK-Ploughing(贪心) 题面 Luogu 题解 我们知道,如果我们选定了以横向为主,或者纵向为主, 那么就有尽可能减少另一个方向上耕地的次数 所以分开贪心,但是本质相同,所以接下来只考虑纵向为主 既然确定了以纵向为主,那么就要尽可能减少横向操作的次数 所以,只要能够纵向耕地,就不考虑横向耕地 可是,如果到了某个时候,纵向无法耕了 此时必须横向耕 但是我们不知道应该从上面开始还是下面开始 为了解决这个问题 我们假设上面最多耕的次数是有限次 换种想法,我们假设上面至…
[BZOJ1997]Planar(2-sat) 题面 BZOJ 题解 很久没做过\(2-sat\)了 今天一见,很果断的就来切 这题不难呀 但是有个玄学问题: 平面图的性质:边数\(m\)的最大值为\(3n-6\) 然后就可以把边数减到\(O(n)\)级别... 现在好了 因为已经告诉你了一个环 那就先把环给抠出来 剩下的就相当于给你若干条边, 你可以从环里面连也可以从环外面连 判定是否可以没有交点 很熟悉的\(2-sat\)了 连边缩点,判断一下可行性 搞定 一开始边开小了,身败名裂 #inc…
[Luogu1337]平衡点(模拟退火) 题面 洛谷 题解 和BZOJ3680吊打XXX是一样的.. 但是数据很强呀.. 疯狂调参 各种WA... 很无奈呀.... #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #include…
[BZOJ1996]合唱队(动态规划) 题面 BZOJ 题解 很容易的一道题 因为每个人不是放在了左边就是放在了右边 所以每次放好的人必定是原序列的一个子串 所以,很容易想到区间\(dp\) 设\(f[i][j]\)表示已经放好了第\(i\)个人到第\(j\)个人的方案数 因为不知道这个人的前面是当前序列的左端还是右端 所以再加一维\([0/1]\)表示上一个放的人在左边还是右边 然后分类讨论一下大力转移即可 #include<iostream> #include<cstdio>…
[BZOJ1899]午餐(动态规划) 题面 BZOJ 题解 我太弱了 这种\(dp\)完全做不动.. 首先,感性理解一些 如果所有人都要早点走, 那么,吃饭时间长的就先吃 吃饭时间短的就晚点吃 所以,按照吃饭时间排序 我们不难得出一个每个人吃完饭的时间 之和前面所有人的打饭的时间和有关 所以 \(f[i][j][k]\)表示当前做到第\(i\)个人,第一列,第二列前面的人的打饭时间之和分别为\(j,k\)时,最后一个人吃完饭的最小时间 因为人的顺序我们是知道的 所以\(j+k\)是一个定值,是所…
[BZOJ1040]骑士(动态规划) 题面 BZOJ 题解 对于每一组厌恶的关系 显然是连边操作 如果是一棵树的话 很显然的树型\(dp\) 但是,现在相当于有很多个基环 也就是在一棵树的基础上再加了一条边 这个时候怎么办, 暴力拆掉基环(拆掉任意一条边) 跑两遍\(dp\) 计算出强制不选两个点中某一个的最大值 此时就是这个基环的最大值 (不用拆掉所有的边,因为只要拆掉一条边之后可以用树型\(dp\)来控制) 可能存在多个联通块 所以要算多遍,然后求和 #include<iostream>…
[BZOJ3527]力(FFT) 题面 Description 给出n个数qi,给出Fj的定义如下: \[Fj=\sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_{i>j}\frac{q_i q_j}{(i-j)^2 }\] 令\(Ei=Fi/qi\),求\(Ei\). Input 第一行一个整数n. 接下来n行每行输入一个数,第i行表示qi. n≤100000,0<qi<1000000000 Output n行,第i行输出Ei.与标准答案误差不超过1…
[BZOJ4827][HNOI2017]礼物(FFT) 题面 Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一天,我的室友突 然发现他好像拿错了一个手环,而且已经没时间去更换它了!他只能使用一种特殊的方法,将其中一个手环中所有 装饰物的亮度增加一个相同的自然数 c(即非负整数).并且由于这个手环是一个圆,可以以任意的角度旋转它, 但…
[BZOJ1305]跳舞(网络流) 题面 Description 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲.有一些男孩女孩相互喜欢,而其他相互不喜欢(不会"单向喜欢").每个男孩最多只愿意和k个不喜欢的女孩跳舞,而每个女孩也最多只愿意和k个不喜欢的男孩跳舞.给出每对男孩女孩是否相互喜欢的信息,舞会最多能有几首舞曲? Input 第一行包含两个整数n和k.以下n行每行包含n个字符,其中第i行第j个字符…
[BZOJ1857]传送带(三分) 题面 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从A点走到D点,他想知道最少需要走多长时间 Input 输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By 第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy 第三行是3个整数,分别是P,Q,R Ou…
[Luogu3478][POI2008]STA-Station(动态规划) 题面 题目描述 给出一个\(N(2<=N<=10^6)\)个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 题解 考虑直接对于每个点计算一次 时间复杂度\(O(n^2)\)显然无法接受 所以,考虑只进行一次\(DFS\)在通过递推求解 如果已经知道根节点的答案的话 那么,他的儿子节点很容易的可以递推出来: \(Ans{[son]}=Ans[father]+n-2*size[son]\) 所以可以\(O(…
[BZOJ2190]仪仗队(数论) 题面 粘链接,题目中有图片 题解 对于题意,可以考虑 如果有\((i,j)\)能够被看见 那么,\((ki,kj)\)就一定不能看见 所以,如果一个点能够被看见,则有\(gcd(i,j)=1\) 先强制\(i>j\) 所以,对于每一个\(i\),能够有的贡献是\(φ(i)\) 所以,直接求和即可,还有\(3\)个点直接暴力加上即可 #include<iostream> #include<cstdio> #include<cstdlib…
[BZOJ2721]樱花(数论) 题面 BZOJ 题解 先化简一下式子,得到:\(\displaystyle n!(x+y)=xy\),不难从这个式子中得到\(x,y\gt n!\). 然后通过\(x\)来表示\(y\),得到\(\displaystyle y=\frac{n!x}{x-n!}\).令\(x=n!+p\),得到\(\displaystyle y=\frac{n!(n!+p)}{p}=\frac{(n!)^2}{p}+n!\). 因为\(x,y\)都是整数,得到\(p|(n!)^2…
[BZOJ2940]条纹(博弈论) 题面 BZOJ 神TM权限题. 题解 我们把题目看成取石子的话,题目就变成了这样: 有一堆\(m\)个石头,每次可以取走\(c,z,n\)个,每次取完之后可以把当前这堆剩下的石头分成任意数量的两堆(可以为空),不能操作者输,判定胜负. 那么这就是一个比较简单的\(Multi-SG\)了,直接预处理\(SG\)函数即可. #include<iostream> #include<cstdio> #include<cstdlib> #inc…
[BZOJ2137]submultiple(数论) 题面 BZOJ 题解 首先不难发现答案就是:\(\displaystyle\prod_{i=1}^n (\sum_{j=1}^{p_i+1}j^k)\). 数据范围给定了. 发现对于\(p_i\)很小的时候,可以直接用快速幂预处理出来,这样子可以做到\(O(n+max(p)*logk)\)的复杂度. 对于\(p\)很大,\(k\)很小的点,不难知道自然数幂和是一个多项式,带几项进去拉格朗日插值或者第二类斯特林数或者带几项高斯消元或者伯努利数或者…
[BZOJ3691]游行(网络流) 题面 BZOJ 然而权限题. Description 每年春季,在某岛屿上都会举行游行活动. 在这个岛屿上有N个城市,M条连接着城市的有向道路. 你要安排英雄们的巡游.英雄从城市si出发,经过若干个城市,到城市ti结束,需要特别注意的是,每个英雄的巡游的si可以和ti相同,但是必须至少途径2个城市. 每次游行你的花费将由3部分构成: 1.每个英雄游行经过的距离之和,需要特别注意的是,假如一条边被途径了k次,那么它对答案的贡献是k*ci,ci表示这条边的边权.…
[LOJ6036]编码(2-sat) 题面 LOJ 题解 很显然的一个暴力: 枚举每个串中的?是什么,然后把和它有前缀关系的串全部给找出来,不合法的连边处理一下,那么直接跑\(2-sat\)就做完了. 现在的问题就在与不合法的数量可能会很多,所以需要优化这个连边的过程. 显然前缀关系和\(Trie\)树上的节点是相关的,即\(Trie\)树上这个串路径上所代表的所有点都是它的前缀,其子树中的每个串都以当前串为前缀. 首先构建\(Trie\),在往下的过程中对于路径上的所有已知前缀连边,这里肯定不…
[CF891C]Envy(最小生成树) 题面 Codeforces 洛谷 题解 考虑\(MST\)的构建过程,对于所有权值相同的边一起考虑. 显然最终他们连出来的结果是固定的. 把连边改为把联通块联通,这样子只需要检查询问中的权值相同的边连接这些联通块是否会成环. 并查集解决即可. #include<iostream> #include<cstdio> #include<algorithm> using namespace std; #define MAX 500500…
[BZOJ5416][NOI2018]冒泡排序(动态规划) 题面 BZOJ 洛谷 UOJ 题解 考场推出了就是两个上升子序列,并且最长下降子序列长度不超过\(2\)...然后大力暴力状压\(dp\)混了\(44\)分...这个结论并不是很难证明,考虑一下冒泡排序的过程就好了. 实际上\(O(n^2)\)并不是很难吧... 先不考虑字典序的问题,设\(f[i][j]\)表示长度为\(i\)的\([1,i]\)的排列,并且第一个数为\(j\)的合法排列方案数. 考虑如何转移,如果\(j=1\),那么…
[CF949D]Curfew(贪心) 题面 CF 洛谷 破池姐姐翻译好强啊 题解 今天菊开讲这题,我大力猜想一波说肯定从中间有个分界线,他还说可能是假的 大力贪心就好了,从两边往中间考虑,只要这个房间能够装满就装满. #include<iostream> #include<cstdio> using namespace std; #define ll long long #define MAX 100100 inline int read() { int x=0;bool t=fa…
[BZOJ2724]蒲公英(分块) 题面 洛谷 谴责权限题的行为 题解 分块什么的都不会,根本就没写过几次. 复杂度根本不会分析,吓得我赶快来练练. 这题要求的是区间众数,显然没有什么很好的主席树之类的方法. 再加之这个数据范围很像\(O(n\sqrt n)\),所以我们来分块,假设块大小为\(\sqrt n\). 首先颜色什么的直接离散是没有任何问题的. 那么我们可以考虑分块之后对于每一个颜色在块内的出现次数维护一个前缀和,但是这样子仍然无法快速得出一个颜色在某特定区间的出现次数.所以我们对于…
[BZOJ1072]排列(搜索) 题面 BZOJ 洛谷 题解 算下复杂度,如果用\(next\_permutation\) 那就是\(10!\times 10\times 15\),复杂度不太对 那好办啊,把\(next\_permutation\)改成搜索不就完了.. #include<iostream> #include<cstring> using namespace std; char ch[15]; int a[10],d,ans,n; void dfs(int x,in…
原文链接:http://www.jianshu.com/p/52f3ecbe8f2d OmniGraffle的软件布局和大多数图形类软件类似,中间是编辑区,左边是页面和对象组织的管理,右边是参数设置和模具,顶栏有一些常用的快捷图标.从左到右由页面.对象的管理到细致的元素的定义和设置,纵深上用页(版面)来承载连续的内容,用层的堆叠将绘图过程化繁为简. 工具栏和检查器 工具栏上的每一个图标都是从大量的操作中提炼出来的,了解工具栏上的每个图标的具体作用,基本上也就知道在当前的绘图软件中,我们能干什么.…
[HDU4689]Derangement(动态规划) 题面 Vjudge 给定一个\(+-\)组成的字符串,长度为\(n\). 如果第\(i\)位是\(+\),那么\(p_i>i\),否则\(p_i<i\) 求满足上述条件的\([1,n]\)的排列个数. 题解 如果所有数都满足\(p_i<i\),那么就是\(RabbitNumbering\). 考虑如何暴力,我们可以直接大力容斥. 枚举一部分的\(+\),强制将其变为没有任何限制,那么方案数还是上面\(RabbitNumbering\)…
[BZOJ2151]种树(贪心) 题面 BZOJ 题解 如果没有相邻不能选的限制,那么这就是一道傻逼题. 只需要用一个堆维护一下就好了. 现在加上了相邻点的限制,那么我们就对于当前位置加入一个撤销操作. 怎么撤销呢? 如果我们选择了一个点,那么我们就把他前后两个位置删去, 然后将当前点合并为\(a[last]+a[next]-a[now]\)的权值. 如果下次选择了这个位置的话,就可以认为撤销了选择\(now\)这个位置, 转而选择了相邻的两个位置. 用一个链表维护前驱后继,堆维护答案即可. #…
[BZOJ1068]压缩(动态规划) 题面 BZOJ 洛谷 题解 比较简单的\(dp\) 设\(f[i][j]\)表示当前已经匹配到了原串的第\(i\)个位置,上一个\(M\)在第\(j\)个字符之后的方案数. 每次从当前\(f[i][j]\)位置转移出去,转移只有两种. 一种是直接匹配一位,也就是\(f[i][j]->f[i+1][j]\), 另外一种是在后面添加\(R\),枚举一下后面添加几个\(R\),用\(hash\)判断插入进来是否可行就好了. 时间复杂度大概是\(O(n^2logn)…