题目连接: http://www.lightoj.com/volume_showproblem.php?problem=1084 题目大意: 有n个点在一条以零为起点的坐标轴上,每个点最多可以移动k,问最终能不能把所有点都聚集在大于等于三个点的集合里面,如果能最少需要几个这样的集合? 解题思路: 刚开始看到题目感觉好简单,就开始了sort然后贪心之旅,这就是错误的开始.最后发现这样并不行,然后再Alex的提醒下想用单调队列优化,在我愚昧的理解下竟然写成了bfs,提交竟然ac了,surprise~…
题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=1698 题目大意: 有一个钩子有n条棍子组成,棍子有铜银金三种组成,价值分别为1,2,3.为了对付每场战斗需要对组成钩子某个区间的棍子进行调整.问经过q次调整后钩子的总价值是多少? 解题思路: 线段树更新.因为数据范围的问题,每次更新到节点会TLE.用区间更新就会节省很多的时间,对每一个区间来讲,如果这个区间里面的棍子都是相同类型的,就用一个节点变量记录棍子类型,如果区间内棍子是不同类型,则将变量记…
题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=1506 题目大意: 给出一个数列An,问以Ai为最小值的区间内有多少个元素? 解题思路: 手动模拟一个栈.栈内元素为一个单调不递减序列.当新元素Ai需要进栈,如果栈顶元素大于Ai,弹出栈顶元素,直到栈顶元素不大于Ai,Ai进栈. 这里可以保证i是高为栈顶元素的矩形向后延伸的边界,弹出过程中记录高为Ai的矩阵向前延伸的边界. //#include <bits/stdc++.h> #include &…
题目连接: http://poj.org/problem?id=3468 题目大意: 给出n个数,有两种操作: 1:"C a b c",[a,b]中的每一个数都加上c. 2:"Q a b",求[a,b]中每个数相加的和. 解题思路: 线段树更新到每一个节点的话,由于节点数目和查询次数原因会tle,所以在每一个节点内定义一个标志变量表示当前节点的下一层为更新,每次查询时候有需要的话在更新到下一层. #include <cstdio> #include &l…
题目连接: http://acm.fzu.edu.cn/problem.php?pid=1894 解题思路: 因为出队和入队都满足队列的性质,优先单调队列的优先级有进入队列的顺序和人品的高低,在一段区间中如果出现x[i]是最大的,那么[0,i-1]区间内的数就不用记录了,所以单调队列里面可以按照人品值降序排列,输出的时候判断一下当前元素是否已经出队即可. #include <cstdio> #include <cstring> using namespace std; ; stru…
题目连接: http://poj.org/problem?id=3264 题目大意: 有n个数从1开始编号,问在指定区间内,最大数与最小数的差值是多少? 解题思路: 在节点中存储max,min,然后查询指定区间的max.min. #include <cstdio> #include <iostream> #include <algorithm> using namespace std; ; const int INF = 0x3f3f3f3f; struct node…
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1084 题解:不妨设dp[i] 表示考虑到第i个点时最少有几组那么 if a[i]-a[i-j]<=2*k (j>=2) then dp[i]=min(dp[i],dp[i-j]+1).所以先要排序,然后用二分找到最小的j然后用线段树或者其他的方法查询(i-1~i-j)的最小值. #include <iostream> #include <cstring&g…
[小结] 中山纪念中学2018暑期训练小结(划掉)(颓废记)-Day10 各位看众朋友们,你们好,今天是2018年08月14日,星期二,农历七月初四,欢迎阅看今天的颓废联编节目 最近发生的灵异事件有 1.本人模拟赛直接打出T2目测全场唯一AC代码结果细节被O2直接卡掉 2.第16号台风在附近海区逗留3天成功画出一个D-og 3.卖文具的小卖店提前装修结束开业 4.考场上明知道能用生成树做的题目还要用二分做,结果全部T掉 5.去食堂路上开始下雨,到食堂之后雨停了.... 好不水了,说点正经的 最近…
经过两次测试,通过深刻的反思,我主要发现了以下易犯错误: 1.做题目时过于追求速度,导致好几处代码都出现手误打错的现象!而且,千万不要图快.图方便就复制粘贴,非常容易出错!(例如T3-party中直接复制之前的代码然后忘记把“<”改成“=”了,光这个错误就找了好久,╮(╯▽╰)╭) 2.学过的知识不能灵活运用. 在T3-party这道题中,其实用floyed就可以拿到70分了!但是却偏偏要尝试没有太大把握的Dijkstra算法,而且还忘记了队列是怎么定义的! T4-tree其实也不难,可是一看到…
安装了keepalived+lvs,达到了高可用的负载均衡,但是今天再启用的时候发现keepalived不正常,通过 /var/log/messages 查看系统日志发现狂刷 IPVS: Can't initialize ipvs: Protocol not available. 很纠结,于是上网查,发现有的人也出现了类似这样的问题, 原因是: ip_vs模块系统默认没有自动加载,可以通过 lsmod | grep ip_vs 命令查看一下,如果没有任何输出则表示ip_vs模块并没有被内核加载,…
1084 - Winter   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Winter is coming. In a land far away, N men are spending the nights in a valley in a largest field. The valley is so narrow that it can be considered to be a s…
1084 - Winter   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Winter is coming. In a land far away, N men are spending the nights in a valley in a largest field. The valley is so narrow that it can be considered to be a s…
ACM暑期集训总结报告 不知不觉,ACM暑期集训已经过去了一个月了(其实我还差几天才够一个月,因为最后几天要回家办助学贷款,所以没坚持到最后,当了个逃兵.....[汗])也到了结束的时候.在这一个月中, 有压力,有感触,也有喜悦.收获了很多,反思了很多. 知识方面,这一个月中, 主要是看了DP的内容,包括基础DP(主要是背包), 状压DP, 数位DP(掌握的不好), 树形DP.另外,每周有几场训练赛,通过训练赛的题目,既重温了已经有些模糊的一些知识点,学习到了新的知识点.最后,还参加了一场CCP…
题意与分析 很简单:求最长公共子序列. 注意子序列与子串的差别:一个不连续一个连续.一份比较好的参考资料见:https://segmentfault.com/a/1190000002641054 状态转移方程是这样的: 设dp[i][j]dp[i][j]为a串1~i.b串1~j中的最长的公共子序列,则 dp[i][j]={dp[i−1][j−1]+1,  max(dp[i−1][j],dp[i][j−1]),  a[i]=b[j],a[i]≠b[j]dp[i][j]={dp[i−1][j−1]+…
朋友做Java开发三年多的时间了,在老东家勤勤恳恳工作了三年多,工资也就是从刚开始的8K涨到了12K,天天给我吐槽他的工资低.2019年中下旬开始就一直在各种地方找资源,刷面试题,想要“骑驴找马”,所幸那时候的疫情还不是很严重,而他恰恰又是在年前找到一份心仪的工作,薪资也是从12K涨到了30K. 我给他比出了大大的羡慕,他给我说,你别看我现在薪资这么高,那几十套面试题我至少刷了七遍以上. 今天我就把这几十套的面试题免费分享给大家,希望疫情过去对大家的升职涨薪有所帮助. 2020最新BATJava…
日志,启动项目就疯狂的刷ClientWorker日志 配置 本身项目中配置的依赖 nacos-discovery,nacos-config版本都是2021.1,但是编译版本是1.4.1 升级nacos-client版本可解决次问题 添加依赖,版本为2.0.1.解决问题. <!-- Alibaba Nacos 配置 --> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>n…
每个标题都做了题目原网址的超链接 Day1<Vanya and Lanterns> 题意: 一条长度为 l 的街道,在这条街道上放置了n个相同的灯,街道一端位置记为0,每个灯的位置在ai处,问灯的最小照射半径为多少时,才能满足整条街道都能被灯光照到 . 题解: 输入所有的灯的位置,然后进行排序. 比较每两个相邻的灯的距离,取最大值的 1/2. 比较两端的值:第一个灯需要照到 0 位置,最后一个灯需要照到 l 位置. 三个值中取最大值. 上板子: #include<bits/stdc++.…
#include <bits/stdc++.h> using namespace std; vector<int> path; ; short dp[maxn][maxn][maxn][maxn][maxn]; bool tp[maxn][maxn][maxn][maxn][maxn]; int P,C,A,M; int p[maxn],c[maxn],a[maxn],m[maxn],g[maxn]; int main() { int n; scanf("%d"…
A:合并果子(贪心+优先队列) B:HDU 1789 Doing Homework again(非常经典的贪心) C:11572 - Unique Snowflakes(贪心,两指针滑动保存子段最大长度) D:POJ 1328 Radar Installation(很新颖的贪心,区间贪心) E:HDU 1053 Entropy(哈夫曼编码 贪心+优先队列) F:POJ 3122 Pie(二分+贪心) G:HDU 1735 字数统计(模拟+一点点贪心的思想) H:HDU 4864 Task(经典贪…
题意与分析 中文题就不讲题意了.我是真的菜,菜出声. 不妨思考一下,限制了我们决策的有哪些因素?一,所在的位置:二,所在的时间.还有吗?没有了,所以设dp[i][j]" role="presentation">dp[i][j]dp[i][j]为第i秒在j处的最大馅饼数,有: dp[i][j]=dp[i][j]=max(dp[i−1][j−1],dp[i−1][j],dp[i−1][j+1])+f[i][j]" role="presentation&q…
比赛链接 A-CSU - 1588 现在有n堆果子,第i堆有ai个果子.现在要把这些果子合并成一堆,每次合并的代价是两堆果子的总果子数.求合并所有果子的最小代价. Input 第一行包含一个整数T(T<=50),表示数据组数. 每组数据第一行包含一个整数n(2<=n<=1000),表示果子的堆数. 第二行包含n个正整数ai(ai<=100),表示每堆果子的果子数. Output 每组数据仅一行,表示最小合并代价. Sample Input 2 4 1 2 3 4 5 3 5 2 1…
题意与分析 学习本题的时候遇到了一定的困难.看了题解才知道这是二重背包.本题的实质是二重完全背包.二维费用的背包问题是指:对于每件物品,具有两种不同的费用,选择这件物品必须同时付出这两种代价:对于每种代价都有一个可付出的最大值(背包容量).问怎样选择物品可以得到最大的价值.设第i件物品的两种代价分别为$a_i$和$b_j$,两种代价可付出的最大值(两种背包容量)分别为$V$和$U$,物品的价值为$w_i$,那么我们可以改进原来的状态转移方程,则定义$dp[i][j][k]$为选前i件物品,前两个…
题意与分析 给定立方体(个数不限),求最多能堆叠(堆叠要求上方的方块严格小于下方方块)的高度. 表面上个数不限,问题是堆叠的要求决定了每个方块最多可以使用三次.然后就是对3n" role="presentation">3n3n的方格序列用LIS. 注意:排序和求LIS的标准不同,否则答案会错误. 代码 #include <iostream> #include <cstring> #include <algorithm> #includ…
题意与分析 完全背包问题. 算法背包九讲里面都有提到过,我自己再说下对完全背包的理解. 为什么01背包中遍历状态从VV到00?考虑一下基本方程$dp[i][j]=max(dp[i-1][j-w[i]]+v[i],dp[i-1][j])$,如果顺序,那么决定dp[i][j]dp[i][j]的就是dp[i][j−w[i]]dp[i][j−w[i]]而不是dp[i−1][j−w[i]]dp[i−1][j−w[i]]了. 然而, 完全背包的方程为dp[i][j]=max{dp[i−1][j−k∗w[i]…
题意 有n" role="presentation">nn个站点,排成圆形,每站间距m" role="presentation">mm,现从0点出发,提供t" role="presentation">tt个油箱,问:拿走若干个油箱可以让出发者无法到达任意一个站点,这样的方案有多少?(出发者可以顺时针走,也可以逆时针走)数据规模分别为:2 ≤ n ≤ 1000,1 ≤ m ≤ 120,1 ≤ t ≤ …
题意 给定一矩阵M" role="presentation">MM,Mij=ij" role="presentation">Mij=ijMij=ij,求第k大值. 分析 这个题不看题解我是想不到二分的,但是二分当然属于暴力,不爽不要玩;) 实际上,现在做题解的时候,意识到一个有意思的结论:第k大xxx往往都与二分思想有关.我们还会与分治思想再见的. 具体做法:二分第k大值p.求数组中p元素是第几大即可. 代码 #include <…
题意 You are given n points on a line with their coordinates $x_i$. Find the point x so the sum of distances to the given points is minimal. 分析 答案是直觉上显然的:输出数组的中位数即可(对于偶数个数的,则是中间靠左).这样的结果正确的原因也很显然.首先,答案肯定在$[x_{min},x_{max}]$中,那么点无论在哪里,对于$x_i,x_{n-i}$这一对…
题目 分析 这个Rnd353真是神仙题层出不穷啊,大力脑筋急转弯- - 不过问题也在我思维江化上.思考任何一种算法都得有一个“锚点”,就是说最笨的方法怎么办.为什么要这么思考,因为这样思考最符合我们的思维规律.然后从这种最笨的方法中找问题.找漏洞.找关键的变量不变量,就能转化出更好的更快的算法. 这题就是这样.最笨的方法是什么?随便从哪个点出发,按照一个方向一个一个抹平差距.可以保证,n-1次一定完成.那么哪里可以改进?0区间.0区间的时候我们可以不移动:比如说 0 0 2 -2 0 0,那么只…
题意 给定一定条件,问符合的矩阵有几种. 分析 见了鬼了,这破题谁加的brute force的标签,素质极差.因为范围是1e5,那你平方(枚举算法)的复杂度必然爆. 然后你就会思考其中奥妙无穷的数学规律(并没有),推出一系列相关的等式. 然后坑爹无穷的来了:边界问题. 不想说了,心累,自己看代码吧. 代码 #include <bits/stdc++.h> #define MP make_pair #define PB push_back #define fi first #define se…
题意 之后补 分析 我哭了,强行增加自己的思考复杂度...明明一道尬写的题- -(往区间贪心方向想了 其实完全没必要,注意到只有366天,直接穷举判断即可. 代码 #include <bits/stdc++.h> #define MP make_pair #define PB push_back #define fi first #define se second #define ZERO(x) memset((x), 0, sizeof(x)) #define ALL(x) (x).begi…