----二分/三分
文章平均质量分 62
扩展的灰
扩展的灰(Extended Ash)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Jzoj4896 兔子
在一片草原上有N个兔子窝,每个窝里住着一只兔子,有M条路径连接这些窝。更特殊地是,至多只有一个兔子窝有3条或更多的路径与它相连,其它的兔子窝只有1条或2条路径与其相连。换句话讲,这些兔子窝之前的路径构成一张N个点、M条边的无向连通图,而度数大于2的点至多有1个。 兔子们决定把其中K个兔子窝扩建成临时避难所。当危险来临时,每只兔子均会同时前往距离它最近的避难所躲避,路程中花费的时间在数值上等于原创 2017-11-03 20:53:05 · 433 阅读 · 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 · 848 阅读 · 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 · 757 阅读 · 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 · 403 阅读 · 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 · 318 阅读 · 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 · 539 阅读 · 0 评论 -
Jzoj3467 最长上升子序列
维护一个序列,使它可以进行下面两种操作: 1.在末尾添加一个数字x 2.将整个序列变成第x次操作后的样子 在每次操作后,输出当前序列的最长上升子序列的长度 序列初始时为空 嗯,可持久化线段树的裸题 额这可是noip提高组难度的题,我们发现所有操作可以变成一棵树(离线做法老套路了) 让后每次最多修改数组上的一个值(考虑二分求LIS的过程)最后改回去就好了 注意dfs又卡栈(jzo原创 2017-11-25 18:58:07 · 3022 阅读 · 0 评论 -
Bzoj5088 HDU 6000 Wash
题目传送门 呃这个不应该是一个简单的二分答案+贪心吗(似乎以前做过但是因为long long 卡了好久) 我们考虑只洗衣服的情况,显然就是一个非常愚蠢的二分 让后再来单独考虑烘干的情况,和上面一样也是一个二分 最后考虑如何将两者的时间合并,显然,我们可以将所有衣服送出机器的时间存下来排序 按照贪心原则,让最大值尽可能小,所以用最大的和最小的相加,依次类推。。。 复杂度O(L+n lg原创 2017-12-03 22:02:33 · 413 阅读 · 0 评论 -
Jzoj5456【NOIP2017提高A组冲刺11.6】奇怪的队列
nodgd的粉丝太多了,每天都会有很多人排队要签名。 今天有n个人排队,每个人的身高都是一个整数,且互不相同。很不巧,nodgd今天去忙别的事情去了,就只好让这些粉丝们明天再来。同时nodgd提出了一个要求,每个人都要记住自己前面与多少个比自己高的人,以便于明天恢复到今天的顺序。 但是,粉丝们或多或少都是有些失望的,失望使她们晕头转向、神魂颠倒,已经分不清楚哪一边是“前面”了,于是她们可能是记原创 2017-11-06 16:57:31 · 586 阅读 · 0 评论 -
Jzoj5446 高考是不可能高考的
Snuke 喜欢旗子. Snuke 正在将N 个旗子摆在一条线上. 第i 个旗子可以被放在位置xi 或yi 上. Snuke 认为两个旗子间的最小距离越大越好. 请你求出最大值. 今天这都是些集训队作业啊! 这个题本来以为一眼能做结果死磕磕不动 二分答案肯定是要的,问题是怎么判定解 1.dp肯定不行了 2.数据结构,也不行 3.图的最大独立集,比较靠谱但是。。。复杂度原创 2017-11-03 21:03:56 · 476 阅读 · 0 评论 -
Jzoj4790 选数问题
在麦克雷的面前有N个数,以及一个R*C的矩阵。现在他的任务是从N个数中取出R*C个,并填入这个矩阵中。矩阵每一行的法值为本行最大值与最小值的差,而整个矩阵的法值为每一行的法值的最大值。现在,麦克雷想知道矩阵的最小法值是多少 采用二分+贪心策略 我们将r*c个数排序,显然,最优情况每一行必然是序列中一段连续的数字 二分可以接受的最大法值 那么判定合法的段数有没有r段即可原创 2017-10-26 20:42:23 · 393 阅读 · 0 评论 -
Jzoj5440 【NOIP2017提高A组冲刺11.1】背包
蛤布斯有n种商品,第i种物品的价格为ai,价值为bi。有m个人来向蛤布斯购买商品,每个人每种物品只能购买一个。第j个人有cj的钱,他会不停选择一个能买得起的价格最高的商品买走(如果有多个则选择价值最高的)。你需要求出每个人购买的物品的价值和。 先吐槽几句,今天的题十分坑,第二题是遗忘多时的搜索:迭代加深,考场上勉勉强强打了个bfs还是挂了 第三题是从来没有见过的dp,在图的dfs树上做三进制状原创 2017-11-01 15:54:05 · 730 阅读 · 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 · 435 阅读 · 0 评论 -
Jzoj4721 LCS
给你2个没有重复元素的序列A,B,求LCS 我们将映射A[i]->i用在B上,对B求LIS即可,若A中没有B[i]直接跳过 #include #include #include #include using 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 · 354 阅读 · 0 评论 -
Jzoj4605 排序
树套树?莫队?分块?好像都可以? 我们发现询问只有一个,我们考虑二分这个最后答案 我们将序列中所有大于mid的值变成1,否则变成0,那么,排序就变成了将序列的01放在头或尾,可以用线段树区间修改做到 #include #include #define mid (l+r>>1) #define ls x #define rs x using namespace std; int s[400原创 2017-10-07 22:08:35 · 428 阅读 · 0 评论 -
Jzoj4614 字符串(待填)
(EMPTY)原创 2017-10-07 22:32:40 · 398 阅读 · 0 评论 -
Jzoj4626 矩阵
先声明:本人在OJ上并没有AC但是坚信是spj错了因为我下载了数据本地评测而且交了一个直接输出答案的程序 这个题目思路比较奇怪,题解我也没有看懂,这里提供一种三分的方法 我们假设这个B的表达式为[a±x,b±x][c±x,d±x] 那么显然答案就是x 我们先暴力枚举正负号(二进制法),让后对于每一种情况,我们用三分法求B使得B的行列式绝对值尽量小,若这个值小余一个极小的量(我原来用的是1e原创 2017-10-11 21:29:13 · 402 阅读 · 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 · 533 阅读 · 0 评论 -
Jzoj3894 改造二叉树
#pragma GCC optimize("O3") #pragma G++ optimize("O3") #include<stdio.h> #include<string.h> #include<algorithm> #define INF 0x7f7f7f7f using 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 · 377 阅读 · 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 · 479 阅读 · 0 评论
分享