----二分/三分
文章平均质量分 62
扩展的灰
扩展的灰(Extended Ash)
展开
-
Jzoj4790 选数问题
在麦克雷的面前有N个数,以及一个R*C的矩阵。现在他的任务是从N个数中取出R*C个,并填入这个矩阵中。矩阵每一行的法值为本行最大值与最小值的差,而整个矩阵的法值为每一行的法值的最大值。现在,麦克雷想知道矩阵的最小法值是多少采用二分+贪心策略我们将r*c个数排序,显然,最优情况每一行必然是序列中一段连续的数字二分可以接受的最大法值那么判定合法的段数有没有r段即可原创 2017-10-26 20:42:23 · 322 阅读 · 0 评论 -
Jzoj5446 高考是不可能高考的
Snuke 喜欢旗子.Snuke 正在将N 个旗子摆在一条线上.第i 个旗子可以被放在位置xi 或yi 上.Snuke 认为两个旗子间的最小距离越大越好. 请你求出最大值.今天这都是些集训队作业啊!这个题本来以为一眼能做结果死磕磕不动二分答案肯定是要的,问题是怎么判定解1.dp肯定不行了2.数据结构,也不行3.图的最大独立集,比较靠谱但是。。。复杂度原创 2017-11-03 21:03:56 · 403 阅读 · 0 评论 -
Jzoj5456【NOIP2017提高A组冲刺11.6】奇怪的队列
nodgd的粉丝太多了,每天都会有很多人排队要签名。今天有n个人排队,每个人的身高都是一个整数,且互不相同。很不巧,nodgd今天去忙别的事情去了,就只好让这些粉丝们明天再来。同时nodgd提出了一个要求,每个人都要记住自己前面与多少个比自己高的人,以便于明天恢复到今天的顺序。但是,粉丝们或多或少都是有些失望的,失望使她们晕头转向、神魂颠倒,已经分不清楚哪一边是“前面”了,于是她们可能是记原创 2017-11-06 16:57:31 · 486 阅读 · 0 评论 -
Bzoj5088 HDU 6000 Wash
题目传送门呃这个不应该是一个简单的二分答案+贪心吗(似乎以前做过但是因为long long 卡了好久)我们考虑只洗衣服的情况,显然就是一个非常愚蠢的二分让后再来单独考虑烘干的情况,和上面一样也是一个二分最后考虑如何将两者的时间合并,显然,我们可以将所有衣服送出机器的时间存下来排序按照贪心原则,让最大值尽可能小,所以用最大的和最小的相加,依次类推。。。复杂度O(L+n lg原创 2017-12-03 22:02:33 · 329 阅读 · 0 评论 -
Jzoj3467 最长上升子序列
维护一个序列,使它可以进行下面两种操作:1.在末尾添加一个数字x2.将整个序列变成第x次操作后的样子在每次操作后,输出当前序列的最长上升子序列的长度序列初始时为空嗯,可持久化线段树的裸题额这可是noip提高组难度的题,我们发现所有操作可以变成一棵树(离线做法老套路了)让后每次最多修改数组上的一个值(考虑二分求LIS的过程)最后改回去就好了注意dfs又卡栈(jzo原创 2017-11-25 18:58:07 · 2932 阅读 · 0 评论 -
Jzoj3648 【GDOI2014】beyond
当年还是too naive了啊,这么简单的题居然没做出来,太弱啦(讲真我那年还没上初中呢。。。)要是明年遇上这种题目就好了,嘻嘻嘻很显然的,最大的答案一定在两个串中出现过,那么我们来考虑如何找出这个串枚举一个x,我们用二分+hash求出a[x]和b[1]的lcp,设为len,让后再看a[1..x-1]和b[len+1,x+len+1]是否相等就好了因为哈希常数非常小jzoj跑得快,原创 2017-12-05 19:06:58 · 443 阅读 · 0 评论 -
51Nod1257 背包问题 V3
题目看这里01分数规划入门题这道题有非常经典的错误解法:按照pi/wi排序这样是不能保证答案最大的,反例(本体样例)已经有了那么我们来考虑怎么做首先我们二分这个答案ans让后我们给每个物品i设置一个权值v[i]=p[i]-ans*w[i]所有物品按照v排序,取前k大求和那么如果ans是正确答案,那么显然,这个和S=0如果ans大于正确答案,S如果ans小于正原创 2018-04-27 20:00:48 · 219 阅读 · 0 评论 -
斜率DP十连测
最近学校里很多题目都没时间做,顺便来写一下博客 斜率DP十连: A[征途] 注意到,原题的式子,等价于m∑a2i−(∑ai)2m∑ai2−(∑ai)2m\sum a_i^2-(\sum a_i)^2后面部分是常数 那么我们就可以写出dp方程f[i,j]=min{f[i−1,k]+(sj−sk)2},k<jf[i,j]=min{f[i−1,k]+(sj−sk)2},k<...原创 2018-08-12 23:59:34 · 300 阅读 · 0 评论 -
CDQ分治&整体二分九连测
整体二分好难a CDQ分治&整体二分九连: A[适者] 先来一个不是cdq分治的题(虽然也可以用分治做) 首先先来考虑按照什么顺序来搞掉这些机甲 对于两个相邻的机甲i,j,先i后j的代价是Ai∗Di+(Di+Dj)∗AjAi∗Di+(Di+Dj)∗AjA_i*D_i+(D_i+D_j)*A_j 那么如果i应该比j先消灭就有 Ai∗Di+(Di+Dj)∗Aj<A...原创 2018-08-19 21:32:06 · 571 阅读 · 0 评论 -
Jzoj4896 兔子
在一片草原上有N个兔子窝,每个窝里住着一只兔子,有M条路径连接这些窝。更特殊地是,至多只有一个兔子窝有3条或更多的路径与它相连,其它的兔子窝只有1条或2条路径与其相连。换句话讲,这些兔子窝之前的路径构成一张N个点、M条边的无向连通图,而度数大于2的点至多有1个。兔子们决定把其中K个兔子窝扩建成临时避难所。当危险来临时,每只兔子均会同时前往距离它最近的避难所躲避,路程中花费的时间在数值上等于原创 2017-11-03 20:53:05 · 370 阅读 · 0 评论 -
Jzoj5440 【NOIP2017提高A组冲刺11.1】背包
蛤布斯有n种商品,第i种物品的价格为ai,价值为bi。有m个人来向蛤布斯购买商品,每个人每种物品只能购买一个。第j个人有cj的钱,他会不停选择一个能买得起的价格最高的商品买走(如果有多个则选择价值最高的)。你需要求出每个人购买的物品的价值和。先吐槽几句,今天的题十分坑,第二题是遗忘多时的搜索:迭代加深,考场上勉勉强强打了个bfs还是挂了第三题是从来没有见过的dp,在图的dfs树上做三进制状原创 2017-11-01 15:54:05 · 595 阅读 · 0 评论 -
Jzoj2921【NOI2012模拟题】字符串识别
神(shui)题,AC后看了下别人的code发现全都是后缀数组(难看)可能是因为我太弱了所以只想到SAM的算法做法:建立SAM,求出parent树,预处理倍增,让后就可以O(lg n)查询一个字串的出现次数了接下来,我们对于每个l∈[1,n],我们求出一个最小的r使得[l,r]在整个串里面只出现一次那么对于每个点i,ans[i]有两种情况:1.i被一个最短的区间[lj,原创 2017-09-20 20:54:46 · 400 阅读 · 0 评论 -
Jzoj3894 改造二叉树
#pragma GCC optimize("O3")#pragma G++ optimize("O3")#include<stdio.h>#include<string.h>#include<algorithm>#define INF 0x7f7f7f7fusing namespace std;int l[100010],r[100010],f[100010];int s[100010],w[100010],n,t=0;void mdfs(int x){ if(x){ mdfs(l[原创 2017-10-03 17:20:15 · 311 阅读 · 0 评论 -
Jzoj3895 数字对
给你一个序列s,求出所有最长的区间[l,r]使得存在一个k∈[l,r]且对于任何i∈[l,r]都有s[k]|s[i]显然如果这个k存在,那么s[k]一定是s[l]~s[r]的最小值现在问题就成了,求一个最长的区间使得s[l]~s[r]的最小值=s[l]~s[r]的gcd那么我们可以二分答案,而求一个区间最小和gcd都可以用ST表完成,所以整体复杂度nlg^2n(虽然说这是solut原创 2017-10-03 17:26:51 · 389 阅读 · 0 评论 -
Jzoj4626 矩阵
先声明:本人在OJ上并没有AC但是坚信是spj错了因为我下载了数据本地评测而且交了一个直接输出答案的程序这个题目思路比较奇怪,题解我也没有看懂,这里提供一种三分的方法我们假设这个B的表达式为[a±x,b±x][c±x,d±x]那么显然答案就是x我们先暴力枚举正负号(二进制法),让后对于每一种情况,我们用三分法求B使得B的行列式绝对值尽量小,若这个值小余一个极小的量(我原来用的是1e原创 2017-10-11 21:29:13 · 319 阅读 · 0 评论 -
Jzoj4614 字符串(待填)
(EMPTY)原创 2017-10-07 22:32:40 · 329 阅读 · 0 评论 -
Jzoj4605 排序
树套树?莫队?分块?好像都可以?我们发现询问只有一个,我们考虑二分这个最后答案我们将序列中所有大于mid的值变成1,否则变成0,那么,排序就变成了将序列的01放在头或尾,可以用线段树区间修改做到#include#include#define mid (l+r>>1)#define ls x#define rs xusing namespace std;int s[400原创 2017-10-07 22:08:35 · 367 阅读 · 0 评论 -
Jzoj4721 LCS
给你2个没有重复元素的序列A,B,求LCS我们将映射A[i]->i用在B上,对B求LIS即可,若A中没有B[i]直接跳过#include#include#include#includeusing namespace std;mapint,int> s;int f[300010];int main(){ int n,m; scanf("%d%d",&n,&m); for原创 2017-10-15 16:37:06 · 281 阅读 · 0 评论 -
Jzoj5431 序列操作
一开始有n个非负整数h[i](1问最多可以进行多少轮操作后无法操作(即没有c[i]个大于零的数)考场上脑抽认为先减小的会更优(很明显先减大的会更优啊!!!!!)考虑怎么维护,可以用splay然而正常人都用BIT因为100W两个log不会超时(其实是会的不过jz跑得快)先将所有数大到小排序丢入BIT中每次找出第c[i]个数,将所有大于ci的都减一,等于c[i]的取最后的那原创 2017-11-08 21:04:58 · 359 阅读 · 0 评论 -
PKUSC2018部分题解
.LOJ的std+数据+当时讲题的记忆硬是刚了五道题(D1t3咕咕咕)稍微写一下题解LOJ6432 「PKUSC2018」真实排名一道比较简单的题,不过需要注意很多细节考虑排名不变的两种情况1.自己分数xxx不变,那么所有分数在[[x2],x)[[\frac{x}{2}],x)[[2x],x)中的其他人的分数也不能变,否则必然有在自己后面的人到自己前面2.自己分数xxx翻倍,那么...原创 2018-12-29 11:04:04 · 687 阅读 · 0 评论