题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2802 题解 我一开始想到了一个比较麻烦的做法. 把每一天按照 \(b_i\) 从小到大排序,\(b_i\) 小的优先选.然后扣除库存的话,优先扣除在当前这个 \(b_i\) 的位置前面最近的库存. 这个可以使用树状数组来判断能不能选,然后扣除库存的时候因为每一个日子的库存只会被扣光一次,所以可以暴力跳,但是不要走已经被扣光的点,所以使用并查集跳过这些不应该经过的点. 但是很显然这个做法很麻烦…
2802: [Poi2012]Warehouse Store Time Limit: 10 Sec  Memory Limit: 64 MBSec  Special JudgeSubmit: 121  Solved: 65[Submit][Status] Description 有一家专卖一种商品的店,考虑连续的n天. 第i天上午会进货Ai件商品,中午的时候会有顾客需要购买Bi件商品,可以选择满足顾客的要求,或是无视掉他. 如果要满足顾客的需求,就必须要有足够的库存.问最多能够满足多少个顾客的需…
Warehouse Store bzoj-2802 Poi-2012 题目大意:一家商店的连续n天内,每一天会进货$a_i$个,有且只有一个客人回来买$b_i$个,问至多满足多少人. 注释:$1\le n \le 2.5\cdot 10^5$. 想法:又往dp上想了..... 然后一顿推,无果. 查了题解,发现贪心好难..... 首先,我们先搞清楚我们要维护什么?我们要维护两个最值,分别是前i天能最多能满足多少人和满足这么多人的情况下最多剩多少钱. 那么,对于第一个.假设我们已经维护好了前i-1…
题目链接 BZOJ2802 题解 这样的问题通常逆序贪心 每个\(A[i]\)只能用来满足后面的\(B[i]\) 就用当前\(A[i]\)不断提供给最小的\(B[i]\)即可 用一个堆维护 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<queue> #include<cmath> #include<map>…
题目描述 有一家专卖一种商品的店,考虑连续的n天.第i天上午会进货Ai件商品,中午的时候会有顾客需要购买Bi件商品,可以选择满足顾客的要求,或是无视掉他.如果要满足顾客的需求,就必须要有足够的库存.问最多能够满足多少个顾客的需求. 输入 第一行一个正整数n (n<=250,000).第二行n个整数A1,A2,...An (0<=Ai<=10^9).第三行n个整数B1,B2,...Bn (0<=Bi<=10^9). 输出 第一行一个正整数k,表示最多能满足k个顾客的需求.第二行…
1.题目巨短,自己看看吧 2.分析:这道题,想了半天dp还是想不到,最后看题解发现是个贪心的思想,我们维护一个堆,如果这个人不能加入就把他和堆上最大的进行比较,然后搞搞就行了 #include <queue> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> using namespace std; #define M 250010 #defi…
2802: [Poi2012]Warehouse Store Description 有一家专卖一种商品的店,考虑连续的n天.第i天上午会进货Ai件商品,中午的时候会有顾客需要购买Bi件商品,可以选择满足顾客的要求,或是无视掉他.如果要满足顾客的需求,就必须要有足够的库存.问最多能够满足多少个顾客的需求. Input 第一行一个正整数n (n<=250,000).第二行n个整数A1,A2,...An (0<=Ai<=10^9).第三行n个整数B1,B2,...Bn (0<=Bi&l…
[Poi2012]Warehouse Store Time Limit: 10 Sec  Memory Limit: 64 MBSec  Special JudgeSubmit: 621  Solved: 295[Submit][Status][Discuss] Description 有一家专卖一种商品的店,考虑连续的n天.第i天上午会进货Ai件商品,中午的时候会有顾客需要购买Bi件商品,可以选择满足顾客的要求,或是无视掉他.如果要满足顾客的需求,就必须要有足够的库存.问最多能够满足多少个顾客…
http://www.lydsy.com/JudgeOnline/problem.php?id=2802 自己yy了一下... 每一次如果够那么就买. 如果不够,考虑之前买过的,如果之前买过的比当前花费的钱多,那么就去掉之前买的,变成买现在的. 如何证明?不知道QAQ 还有...注意开longlong... #include <cstdio> #include <cstring> #include <cmath> #include <string> #inc…
BZOJ_2802_[Poi2012]Warehouse Store_堆+贪心 Description 有一家专卖一种商品的店,考虑连续的n天. 第i天上午会进货Ai件商品,中午的时候会有顾客需要购买Bi件商品,可以选择满足顾客的要求,或是无视掉他. 如果要满足顾客的需求,就必须要有足够的库存.问最多能够满足多少个顾客的需求. Input 第一行一个正整数n (n<=250,000). 第二行n个整数A1,A2,...An (0<=Ai<=10^9). 第三行n个整数B1,B2,...B…
题意 n天.第i天上午会进货Ai件商品,中午的时候会有顾客需要购买Bi件商品,可以选择满足顾客的要求,或是无视掉他. 如果要满足顾客的需求,就必须要有足够的库存.问最多能够满足多少个顾客的需求. (n<=250000) 题解 一看就知道是贪心. 我们把选择的每一天扔到一个堆里,按Bi从大到小排序. 每一天商品能买就买.买不了就查找堆顶元素,如果堆顶元素大于Bi则弹掉堆顶,把当前Bi扔进去(等于弹出来的那天没买,当前天买了) #include<iostream> #include<c…
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4803 Problem Description Jenny is a warehouse keeper. He writes down the entry records everyday. The record is shown on a screen, as follow:There are only two buttons on the screen. Pressing the button i…
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/26005267 题目链接:hdu 4803 Poor Warehouse Keeper 题目大意:有以个屏幕能够显示两个值,一个是数量x,一个是总价y. 有两种操作.一种是加一次总价,变成x,x+y:一种是加一个数量,这要的话总价也会对应加上一个的价钱.变成x+1.y+y/x.总价显示的为取整后的整数,小数部分忽略. 给定一个目标x.y.初始状…
题目描述 n天.第i天上午会进货Ai件商品,中午的时候会有顾客需要购买Bi件商品,可以选择满足顾客的要求,或是无视掉他. 如果要满足顾客的需求,就必须要有足够的库存.问最多能够满足多少个顾客的需求. 输入格式 第一行包含一个整数n,表示有n天. 第二行有n个整数ai,表示第i天上午进货a件商品. 第三行包含n个整数bi,表示在第i天中午有顾客来买b件商品. 输出格式 第一行一个整数,表示最多能满足几天中顾客的需求. 第二行输出满足这么哪些天顾客的需求. 输入输出样例 输入 #1 6 2 2 1…
题目描述 给出一个正整数x,问x最少能由多少个Fibonacci数加减算出. 例如1070=987+89-5-1,因此x=1070时答案是4. 输入 第一行一个正整数q (q<=10),表示有q组输出. 下面q行每行一个正整数x (x<=4*10^17). 输出 输出q行,依次表示每个输出的答案. 样例输入 1 1070 样例输出 4   因为f[i]=f[i-1]+f[i-2],f[i+1]=f[i]+f[i-1],能得到2f[i]=f[i+1]+f[i-2],所以最优答案一定存在没有一个F…
题目链接 题意 :屏幕可以显示两个值,一个是数量x,一个是总价y.有两种操作,一种是加一次总价,变成x,1+y:一种是加一个数量,这要的话总价也会相应加上一个的价钱,变成x+1,y+y/x.总价显示的为取整后的整数,小数部分忽略.给定一个目标x,y,初始状态为1,1,求最少需要多少次可以目标状态,不可以达到的话输出-1. 思路 :如果是加一次总价的话,单价就在变大:如果是加一次数量的话,单价是不变的.因此,单价只涨不降.物品的数量也必须从1变成x,也就是说至少要加x-1次单价才可以,那么如果单价…
大意: 给定数$n$, 求将$n$划分为最少的斐波那契数的和或差. 每次取相邻$n$的斐波那契数一定最优, 考虑证明. 结论1:存在一个最优解,使得每个斐波那契数使用不超过1次.(考虑$2F_n=F_{n-2}+F_{n+1}$) 结论2:存在一个最优解,使得同号数不相邻, 异号数间隔$\ge 2$. 根据结论1和2, 假设最优解所选最大斐波那契数为$F_k$, 那么 $n$的下界为$F_k-F_{k-3}-F_{k-5}-...$, $k$为奇时为$F_{k-1}$, $k$为偶时为$F_{k…
POI2012题解 这次的完整的\(17\)道题哟. [BZOJ2788][Poi2012]Festival 很显然可以差分约束建图.这里问的是变量最多有多少种不同的取值. 我们知道,在同一个强连通分量中的变量的相对大小是限制死了的,即这个强连通分量中的最大值减去最小值不为\(\inf\),而这个区间中的所有数一定都可以被取到(因为这里的边权只有\(0,\pm1\)嘛),所以一个强连通分量对答案的贡献是这个强连通分量中的最长路\(+1\).对于不在同一个强连通分量中的变量,其相对大小不受限制,取…
正规.严谨.精妙. -POI BZOJ 2213 : [Poi2011]Difference 如果我们每次枚举两个字母最大最小情况时,很容易想到写出代码里注释的样子.这样是26*26*n的,我们发现枚举不同的之间是没有关联的,所以可以开一个二维数组同时枚举所有的字母,就是 26*2*n的了.然后就可以过了. BZOJ 2095 : [Poi2010]Bridges 求最大值最小,二分.然后\<=的加边,>的不加边,如果有欧拉迹,就成立,没有就不成立.混合图的欧拉回路这个讲的很好. BZOJ 3…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
由于换了台电脑,而我的贪心 & 构造能力依然很拉跨,所以决定再开一个坑( 前传: 贪心/构造/DP 杂题选做 u1s1 我预感还有Ⅲ(欸,这不是我在多项式Ⅱ中说过的原话吗) 24. P5912 [POI2004]JAS 一开始直接莽了个点分治,当我测过了样例美滋滋地一交,发现自己获得了 20 分的好成绩之后,才发现事情有那么亿点点不对劲( 不难发现,题目等价于求高度最小的点分树的高度,直接求有点困难,我们不妨来对其进行一些转化:我们考虑给每个点一个标号,那么问题可以转化为,求使得任意两个标号相同…
今天是黄致焕老师的讲授~ T1 自信 AC 莫名 80 pts???我还是太菜了!! 对于每种颜色求出该颜色的四个边界,之后枚举边界构成的矩阵中每个元素,如果不等于该颜色就标记那种颜色不能最先使用. 注意特判整张图只有一种颜色的情况.(这个坑点坑掉我 10 pts!) 枚举时注意跳过所有已经被删除的元素.(不然 #8 死活过不去) T2 T3 基础算法 模拟 模拟是算法竞赛中最简单,也是最难的一类题: 简单的地方在于只需要读清楚题目的所有要求并一步步实现就行了: 难点同样必须读清楚题目的所有条件…
Practice sort 给定一系列形如 \(A<B\) 的不等关系,判断前 \(k\) 个不等关系是否即可确定 \(n\) 个元素之间的大小顺序:如果不可确定,判断前 \(k\) 个不等关系是否即存在矛盾. 例如: [input 1] 4 6 A<B A<C B<C C<D B<D A<B [output 1] Sorted sequence determined after 4 relations: ABCD. [input 2] 3 2 A<B B&…
清明講過一道類似的,難度略大的:P3545 [POI2012]HUR-Warehouse Store 兩道題類似,都是暫時先把前面的加進候選集合里,如果超出限制的話就拿現在這個和前面的交換, 相當於不選前面那個選當前這個,應該是比較好的思想 這道題還有一個就是如果最優解要你走到那個點,那麼中間的路程是不可省略的,所以貪心時大可不考慮 反正實質上是個dp,取的是最大值 #include<bits/stdc++.h> #define ll long long using namespace std…
题意:一开始有1个物品,总价是1.你的一次操作可以要么使得物品数量+1,总价加上当前物品的单价.要么可以使得总价+1,物品数量不变.问你最少要几次操作从初始状态到达有x个物品,总价是y的状态.这里的y可以有小数点后的部分,会抹去. 如果x>y,显然无解. 因为不管怎样操作,物品的单价是单调不下降的.所以一个naive的贪心策略是先用第二种操作,将物品提升到最大的可能单价(<(y+1)/x),然后再用第一种操作操作到不能再操作为止,剩余的部分用第二种补齐.然而这是不对的. 我们发现,第一种操作,…
Description 给定一个n个点m条边的无向图,问最少删掉多少条边能使得编号小于等于k的点都不在环上. Analysis 包含关键点的环中 包含从关键点连出的两条边 考虑我们删边删哪些边更优 根据贪心 我们会删与关键点相连的边 一直删我们发现不会删掉不与关键点相连的边 Solution 于是我们先把边顶点都大于k的先连起来 相当于合并了一些点 在新的图里,每个连通块里都不能生成环 那最多保留一棵生成树 Solution #include <cstdio> #include <cst…
555555,能避开精度还是避开精度吧,,,,我们是弱菜.. Poor Warehouse Keeper Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1672    Accepted Submission(s): 463 Problem Description Jenny is a warehouse keeper. He writ…
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=1000005; int n,a[N],b[N]; long long m,f[N],s[N]; int ok(int w) { long long ans=0; for(int i=1;i<=n;i++) b[i]=a[i]; for(int i=2;i<=n;i++) if(b[…
Yogurt factory Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8205   Accepted: 4197 Description The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. Over the next N (1 <= N <= 10,000) weeks, the price of milk…
Description The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. Over the next N (1 <= N <= 10,000) weeks, the price of milk and labor will fluctuate weekly such that it will cost the company C_i (1 <= C_i <= 5,000) c…