洛谷 P1714 切蛋糕 题解】的更多相关文章

P1714 切蛋糕 题目描述 今天是小Z的生日,同学们为他带来了一块蛋糕.这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值. 小Z作为寿星,自然希望吃到的第一块蛋糕的幸运值总和最大,但小Z最多又只能吃M小块(M≤N)的蛋糕. 吃东西自然就不想思考了,于是小Z把这个任务扔给了学OI的你,请你帮他从这N小块中找出连续的k块蛋糕(k≤M),使得其上的幸运值最大. 输入格式 输入文件cake.in的第一行是两个整数N,M.分别代表共有N小块蛋糕,小Z最多只能吃M小块. 第二…
这个题比较显然,要用前缀和来做.但只用前缀和是过不去的,会TLE,所以需要进行优化. 对于每个前缀和数组 b 中的元素,都可以找到以 b[i] 结尾的子段最大值 p[i],显然,最终的 ans 就是 max(p[i]),其中 1 ≤ i ≤ n. 故可知,ans = max( p[i] ) = max( max( b[i] - b[j] ) ),其中的 max( b[i] - b[j] ) 是 p[i]. 很明显, p[i] = b[i] - min( b[j] ),其中 i-m ≤ j ≤ i…
▎(一个没有用处的)前言 为什么这次题解特意写明题号呢?因为我发现了这样的事情: 所以不要混了,想看P1714题解的同志们可以圆润的滚开了. 好了,不说没用的了,切入正题: ▎题目 题目及测评链接:戳这里 ▎前置技能 贪心(点击查看).搜索(点击查看).剪枝(点击查看).二分(点击查看). ▎解析 这道题看起来令人不知所措,不知道的东西太多了,到底如何分配,一看就是要用到搜索的题,但怕是连搜索也很难写了. 我们按照顺序一点一点的想: 首先,我们不知道如何分配,只能像无头苍蝇一样到处乱撞,所以我们…
题目大意:给你n个整数,求出其中长度不超过m的最大字段和. 题解:单调队列维护前缀和最小值,然后用当前值减去当前有效最小值即可 C++ Code: #include<cstdio> using namespace std; int n,m; int q[501000],sum[501000],h,t,ans; int s[501000]; int max(int a,int b){return a>b?a:b;} int main(){ scanf("%d%d",&a…
https://www.luogu.org/problem/show?pid=1714 题目描述 今天是小Z的生日,同学们为他带来了一块蛋糕.这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值. 小Z作为寿星,自然希望吃到的第一块蛋糕的幸运值总和最大,但小Z最多又只能吃M小块(M≤N)的蛋糕. 吃东西自然就不想思考了,于是小Z把这个任务扔给了学OI的你,请你帮他从这N小块中找出连续的k块蛋糕(k≤M),使得其上的幸运值最大. 输入输出格式 输入格式: 输入文件cake…
题目 该题目就是求这n个数的前缀和所组成的数组的所有子区间的左端点和右端点相差不超过m,且他们的前缀和差最大,求出这个最大值即可. 而朴素算法肯定会T,而我们发现如果前缀和最大的话,则前缀和的值一定是满足单调递增的,因此可以用单调队列优化. #include <iostream>//单调队列,队列里满足后加的数要比之前的大 #include <cstdio> #include <algorithm> #include <cstring> #include &…
先放代码...... 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=5e5+10,M=0x3f3f3f3f; 4 int n,m,a[N],sum[N]; 5 int q[N],ans=-M; 6 7 int main(){ 8 scanf("%d%d",&n,&m); 9 for(int i=1;i<=n;i++){ 10 scanf("%d",&am…
洛谷P1577 切绳子题解 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2为后的小数). 输入输出格式 输入格式: 第一行两个整数N和K,接下来N行,描述了每条绳子的长度Li. 输出格式: 切割后每条绳子的最大长度. 输入输出样例 输入样例#1: 4 11 8.02 7.43 4.57 5.39 输出样例#1: 2.00 说明 对于100%的数据 0<Li<=100000.00 0<n&l…
洛谷题目链接:切蛋糕 题目描述 Facer今天买了n块蛋糕,不料被信息组中球球等好吃懒做的家伙发现了,没办法,只好浪费一点来填他们的嘴巴.他答应给每个人留一口,然后量了量每个人口的大小.Facer有把刀,可以切蛋糕,但他不能把两块蛋糕拼起来,但是他又不会给任何人两块蛋糕.现在问你,facer怎样切蛋糕,才能满足最多的人.(facer的刀很强,切的时候不会浪费蛋糕). 输入输出格式 输入格式: 第一行n,facer有n个蛋糕.接下来n行,每行表示一个蛋糕的大小.再一行一个数m,为信息组的人数,然后…
题目传送门 切蛋糕 题目描述 Facer今天买了n块蛋糕,不料被信息组中球球等好吃懒做的家伙发现了,没办法,只好浪费一点来填他们的嘴巴.他答应给每个人留一口,然后量了量每个人口的大小.Facer有把刀,可以切蛋糕,但他不能把两块蛋糕拼起来,但是他又不会给任何人两块蛋糕.现在问你,facer怎样切蛋糕,才能满足最多的人.(facer的刀很强,切的时候不会浪费蛋糕). 输入输出格式 输入格式: 第一行n,facer有n个蛋糕.接下来n行,每行表示一个蛋糕的大小.再一行一个数m,为信息组的人数,然后m…