首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
bzoj 3192: [JLOI2013]删除物品
】的更多相关文章
bzoj 3192: [JLOI2013]删除物品
Description 箱子再分配问题需要解决如下问题: (1)一共有N个物品,堆成M堆. (2)所有物品都是一样的,但是它们有不同的优先级. (3)你只能够移动某堆中位于顶端的物品. (4)你可以把任意一堆中位于顶端的物品移动到其它某堆的顶端.若此物品是当前所有物品中优先级最高的,可以直接将之删除而不用移动. (5)求出将所有物品删除所需的最小步数.删除操作不计入步数之中. (6)只是一个比较难解决的问题,这里你只需要解决一个比较简单的版本: 不会有两个物品…
BZOJ 3192: [JLOI2013]删除物品(树状数组)
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=3192 题解: 首先每次一定是来回移动直到最大的到顶上. 所以我们可以将第两个堆的堆顶接起来形成一个队列. 然后相当于中间一个象征两堆分界的指针在来回移动. 用树状数组维护一下区间内删除了几个点. 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ll ans,n,m,tr[maxn],mx;…
BZOJ 3192: [JLOI2013]删除物品 奇淫技巧&树状数组
点我看题 这题十分奇淫技巧...QAQ因为知道是树状数组的题QAQ刚开始以为维护两个数组的树状数组然后模拟从大到小,然后发现不会打QAQ 于是悄悄咪咪翻开题解了. 实际上两个数组可以看做一个数组 如 1 4 5 2 7 3 实际上就是 5 4 1 | 2 7 3 “|”这个地方就是假设成一个指标,然后每次把这个指标移到某一个位置,这个位置左右两个边的数就可以删除. 所以就模拟从大到小删数. 第一次 5 4 1 2 | 7 3 指标移动1次就可以删掉“7” 第二次 5 | 4 1 2 3 指标…
3192: [JLOI2013]删除物品
3192: [JLOI2013]删除物品 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1366 Solved: 794 [Submit][Status][Discuss] Description 箱子再分配问题需要解决如下问题: (1)一共有N个物品,堆成M堆. (2)所有物品都是一样的,但是它们有不同的优先级. (3)你只能够移动某堆中位于顶端的物品. (4)你可以把任意一堆中位于顶端的物品移动到其它某堆的顶端.若此物品是当前所有物品中优先级…
[bzoj3192][JLOI2013]删除物品(树状数组)
3192: [JLOI2013]删除物品 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 872 Solved: 508[Submit][Status][Discuss] Description 箱子再分配问题需要解决如下问题: (1)一共有N个物品,堆成M堆. (2)所有物品都是一样的,但是它们有不同的优先级. (3)你只能够移动某堆中位于顶端的物品. (4)你可以把任意一堆中位于顶端的物品移动到其它某堆的顶端.若此物品是当前所有物…
洛谷 P3253 [JLOI2013]删除物品 解题报告
P3253 [JLOI2013]删除物品 题目描述 箱子再分配问题需要解决如下问题: (1)一共有\(N\)个物品,堆成\(M\)堆. (2)所有物品都是一样的,但是它们有不同的优先级. (3)你只能够移动某堆中位于顶端的物品. (4)你可以把任意一堆中位于顶端的物品移动到其它某堆的顶端.若此物品是当前所有物品中优先级最高的,可以直接将之删除而不用移动. (5)求出将所有物品删除所需的最小步数.删除操作不计入步数之中. (6)只是一个比较难解决的问题,这里你只需要解决一个比较简单的版本: 不会有…
[bzoj3192][JLOI2013]删除物品_树状数组_栈
删除物品 bzoj-3192 JLOI-2013 题目大意:给你n个物品,分成2堆.所有的物品有不同的优先级.我只可以将一堆中的堆顶移动到另一个堆的堆顶.而如果当前物品是全局所有物品中优先级最高的,我可以直接将其删除.询问最小移动多少次,删除不计入总次数. 注释:$1\le n\le 10^5$. 想法:显然是两个栈.开始以为是每个堆中优先级最高的,然后一顿瞎想.如果是全局优先级最高的,就相当于弄两个栈,然后将两个栈顶对顶对到一起,开始指针在两个栈顶之间.那么栈顶的移动就相当于物品的移动.显然答…
BZOJ3192:[JLOI2013]删除物品——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3192 箱子再分配问题需要解决如下问题: (1)一共有N个物品,堆成M堆. (2)所有物品都是一样的,但是它们有不同的优先级. (3)你只能够移动某堆中位于顶端的物品. (4)你可以把任意一堆中位于顶端的物品移动到其它某堆的顶端.若此物品是当前所有物品中优先级最高的,可以直接将之删除而不用移动. (5)求出将所有物品删除所需的最小步数.删除操作不计入步数之中. (6)只是一个比较难解决的问题,这里…
[JLOI2013]删除物品
嘟嘟嘟 只要每一次将优先级最高的上面的物品移走,就一定能保证是最优解. 所以我们只要想办法简化这个模拟移物品的过程,看完了题解后,发现可以这么想,我们可以把两个栈头碰头的挨在一起,然后设一个指针代表两个栈的分界线,这样移动物品就变成了移动指针,而每一次移动的步数,就是指针和这个物品之间的距离. 开始的时候这个序列每一位都是1,然后如果删除了物品 i,就将 a[i] = 0,这样移动距离就是区间和了,然后用线段树维护即可. #include<cstdio> #include<iostrea…
BZOJ3192: [JLOI2013]删除物品(splay)
Description 箱子再分配问题需要解决如下问题: (1)一共有N个物品,堆成M堆. (2)所有物品都是一样的,但是它们有不同的优先级. (3)你只能够移动某堆中位于顶端的物品. (4)你可以把任意一堆中位于顶端的物品移动到其它某堆的顶端.若此物品是当前所有物品中优先级最高的,可以直接将之删除而不用移动. (5)求出将所有物品删除所需的最小步数.删除操作不计入步数之中. (6)只是一个比较难解决的问题,这里你只需要解决一个比较简单的版本: 不会有两个物品…