题意: 思路:二分答案A 合法的答案 sigma(s[i][xi])/sigma(xi)>=a i<=m sigma(s[i][xi]-a*xi)>=0 对于每个i找到xi使s[i][xi]-a*xi最大累加验证答案即可 ..]of int64; n,m,i,j:longint; l,r,mid,last:real; function isok(a:real):boolean; var i,j:longint; t,tmp:real; begin tmp:=; to n do begin…
题目 分析 我们二分答案 设\(sum_{i,j}\)表示的i列前个数的和, 假设当前出的二分答案为x,第i列挖了\(h_j\)层,则 \[\dfrac{\sum_{i=1}^{n}sum_{i,h_i}}{\sum_{i=1}^{n}h_i}>=x\] 转移得\(\sum_{i=1}^{n}sum_{i,h_i}-\sum_{i=1}^{n}h_ix>=0\). 那么对于每一列,把最大的\(sum_{i,h}-hx\)求出了,加在一起就可以了. #include <cmath>…
题目描述 输入 输出 样例输入 4 3 4 3 3 5 1 6 2 6 1 3 2 9 样例输出 4.4286 数据范围 样例解释 解法 二分答案. 对于答案ans,如果每一列的最大贡献之和大于0,则ans合法: 每一列的最大贡献=max(a[1..i]−i∗ans),其中1<=i<=m. 代码 #include<iostream> #include<stdio.h> #include<math.h> #include<string.h> #in…
2402: 陶陶的难题II Time Limit: 40 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 68  Solved: 45[Submit][Status] Description Input 第一行包含一个正整数N,表示树中结点的个数. 第二行包含N个正实数,第i个数表示xi (1<=xi<=10^5). 第三行包含N个正实数,第i个数表示yi (1<=yi<=10^5). 第四行包含N个正实数,第i个数表示pi (…
题目分析: 这种乱七八糟的题目一看就是点分治,答案有单调性,所以还可以二分答案. 我们每次二分的时候考虑答案会不会大于等于某个值,注意到系数$k$是无意义的,因为我们可以通过转化使得$k=0$. 合并的过程相当于很多个向量,加起来后看斜率. 注意单个向量也要判定. 由于有了二分的答案$Ans$.判定变得简单多了,推一下. 令$(A,C)$是从一个点到重心的一个向量,$(B,D)$是从另一个点到重心的向量.其中$A$和$B$是重心到该点的路径权值和,$C$和$D$是经过的边数. $-k \leq…
题目传送门 传送门I 传送门II 题目大意 给定$n$个串,询问所有出现在严格大于$\frac{n}{2}$个串的最长串.不存在输出'?' 用奇怪的字符把它们连接起来.然后求sa,hei,二分答案,按mid分组. 判断每一组存在的后缀属于的原串的种类数是不是存在那么多个. 这个做法可以推广到多串求LCS,然后多个log,完美在SPOJ上T掉. Code /** * poj * Problem#3294 * Accepted * Time: 391ms * Memory: 5024k */ #in…
题目传送门 传送点I 传送点II 题目大意 给定串$A, B$,求$A$和$B$长度大于等于$k$的公共子串的数量. 根据常用套路,用一个奇怪的字符把$A$,$B$连接起来,然后二分答案,然后按mid分组. 分完组考虑如何统计每一组的贡献. 对于每一组内每一对$(A_i , B_j)$考虑拆成两部分: $rank(A_i) < rank(B_j)$ $rank(A_i) > rank(B_j)$ 然后就可以从小到大枚举每一个串,然后考虑前面的$A_i$或$B_j$的贡献. 显然这个贡献从当前串…
题面 \(solution:\) 这道题想到二分答案应该是不难的,因为题目是求平均工资的最小值,这个显然具备单调性: 我们设平均工资的最小值为ans,如果我们现在的平均工资x小于ans那么将x带入题目中必定会出现有两个守卫在吵架,如果我们现在的平均工资x大于等于ans那么将x带入题目中必定不会出现有两个守卫在吵架. 所以我们现在就要想办法知道在确定了平均工资的情况下,如何判断是否有守卫吵架.首先我们看题:如果两个守卫有共同的朋友,那么他们也会成为朋友.这样我们发现可以用并查集维护这个关系,然后通…
分析: 整体二分或二分答案+主席树,反正没有要求强制在线,两个都可以做... 贪心还是比较显然的,那么就是找前K大的和...和CQOI的任务查询系统很像 附上代码: #include <cstdio> #include <cmath> #include <cstring> #include <cstdlib> #include <iostream> #include <queue> #include <algorithm>…
正解:贪心+倍增+二分答案 解题报告: 正好想做noip的题目然后又想落实学长之前讲的题?于是就找上了这题 其实之前做过,70,然后实在细节太多太复杂就不了了之,现在再看一遍感觉又一脸懵了... 从标签就可以发现是个很麻烦考虑的点很多的问题,所以分开按步骤梳理我觉得应该会好些qwq 帕1,贪心 首先最最基本的思想要想到趴?就是贪心,就是,如果我不能跑到首都,我肯定是尽量往上跑;然后如果能跑到首都就先跑到首都再想怎么分配 帕2,倍增 已经发现是要往上提了,自然考虑倍增,于是写个函数预处理掉倍增这事…