P4817 [USACO15DEC]Fruit Feast 水果盛宴
P4817 [USACO15DEC]Fruit Feast 水果盛宴
现在Bessie的饱食度为 00 ,她每吃一个橙子,饱食度就会增加 AA ;每吃一个柠檬,饱食度就会增加 BB 。Bessie还有一次喝水的机会,如果Bessie喝水前饱食度为 xx ,喝水后饱食度会变为
$\left\lfloor\dfrac{x}{2}\right\rfloor⌊2x⌋$ 。
Bessie的饱食度不能超过 TT ,否则肚子会爆炸。试求Bessie的饱食度最大能达到多少。
递推预处理Bessie不喝水,只吃派,可以达到的饱食度,存到$V[]$数组中
然后开两个指针,$i,j$分别指向最小的和最大的饱食度,
对于每一个$i$,如果$V[i]/2+V[j]>T$,就将$j$指针左移,直到$V[i]/2+V[j]<=T$,取$ans=max(ans,V[i]/2+V[j])$
然后右移$i$指针,重复上面的操作
为什么这样做是对的?
首先,$V[i]$是单调递增的,当$V[i]$右移时,$V[i]/2$逐渐变大,$j$指针只可能左移或不变
对于$i$,动态维护了$V[i]/2+V[j]<=T$的最大值,达到了贪心的目的
复杂度$O(n)$
玄学错误:需要进行两次这样的操作,分别维护$V[i]/2+V[j]<=T$和$V[i]+V[j]/2<=T$,不然只进行其中一项的话,会WA一个点
听说$dfs$可以水过去哦,大佬可自行尝试。。。
%%GEOTCBRL%%
#include<iostream>
#include<cstdio>
#include<algorithm> using namespace std; int h[],A,B,tot,V[],T,ans; int main()
{
scanf("%d%d%d",&T,&A,&B);
h[]=;
V[++tot]=;
for(int i=;i<=T;i++){
if(i>=A&&h[i-A]) h[i]=;
if(i>=B&&h[i-B]) h[i]=;
if(h[i]) V[++tot]=i;
}
int i=,j=tot;
while(i<=j){
while(V[i]/+V[j]>T) --j;
ans=max(ans,V[i]/+V[j]);
++i;
}
i=,j=tot;
while(i<=j){
while(V[i]+V[j]/>T) --j;
ans=max(ans,V[i]+V[j]/);
++i;
}
printf("%d\n",ans); return ;
}
P4817 [USACO15DEC]Fruit Feast 水果盛宴的更多相关文章
- USACO 2015 December Contest, Gold Problem 2. Fruit Feast
Problem 2. Fruit Feast 很简单的智商题(因为碰巧脑出来了所以简单一,一 原题: Bessie has broken into Farmer John's house again! ...
- Fruit Feast
Fruit Feast 题目描述 Bessie has broken into Farmer John's house again! She has discovered a pile of lemo ...
- Fruit Feast(暴力)(动态规划)
Fruit Feast 时间限制: 1 Sec 内存限制: 64 MB提交: 64 解决: 18[提交][状态][讨论版] 题目描述 Bessie has broken into Farmer J ...
- bzoj4393: [Usaco2015 Dec]Fruit Feast
题意: T,A,B.T是上限.A和B可以随意吃但是不能超过T.有一次将吃的东西/2的机会.然后可以继续吃,不能超过T.问最多可以吃多少. =>我们先处理不能/2可以吃到哪些.然后弄个双指针扫一扫 ...
- P4817 Fruit Feast G
最开始拿到这道题的时候,题目中其实只规定了两种水果的饱食度,可以理解成价值或是重量,在不超过T的情况求最大值.第一眼看过去感觉就是装箱问题(背包),只不过这道题用的是完全背包,但是考虑到喝水的情况,做 ...
- BZOJ 4393: [Usaco2015 Dec]Fruit Feast
DP #include<cstdio> using namespace std; int T,A,B,F[5000005],G[5000005]; int main(){ scanf(&q ...
- ACM 水果 hdu 1263 一题多解
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1263 文章末有相应的一些测试数据供参考. 传统的数组解题方式 思路一: 三种属性的数据放在一个结构体里面, ...
- 题解报告:hdu 1263 水果
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1263 Problem Description 夏天来了~~好开心啊,呵呵,好多好多水果~~ Joe经营 ...
- CET4词汇
abandon vt.丢弃:放弃,抛弃 ability n.能力:能耐,本领 abnormal a.不正常的:变态的 aboard ad.在船(车)上:上船 abroad ad.(在)国外:到处 ab ...
随机推荐
- selenium iframe 定位 qq空间说说
selenium iframe 定位 qq空间说说
- hdoj--1716--排列2(暴力水题)
排列2 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- BZOJ_1692_[Usaco2007 Dec]队列变换_后缀数组
BZOJ_1692_[Usaco2007 Dec]队列变换_后缀数组 Description FJ打算带他的N(1 <= N <= 30,000)头奶牛去参加一年一度的“全美农场主大奖赛” ...
- 【前端】window.resize的优化
一.概述 window.resize事件会在窗口尺寸改变的时候触发,哪怕只是改变了1像素.所以当窗口进行拖动的时候会触发很多次,很容易就卡死. 虽然部分浏览器已经进行了一点优化,但这还不够. 二.优化 ...
- POJ1673 ZOJ1776 三角形四心模板
POJ1673 题中所述点即为三角形的垂心,用向量法可以轻松证明. 垂心 重心 外心 均位于三角形的欧拉线上,且三者有线性关系,于是,求出重心和外心即可求得垂心. 重心就是三点的平均值,外心可以通过解 ...
- 洛谷 P1351 联合权值 —— 树形DP
题目:https://www.luogu.org/problemnew/show/P1351 树形DP,别忘了子树之间的情况(拐一下距离为2). 代码如下: #include<iostream& ...
- CodeForces 731A Night at the Museum (水题)
题意:给定一个含26个英语字母的转盘,问你要得到目标字符串,至少要转多少次. 析:分别从顺时针和逆时针进行,取最小的即可. #pragma comment(linker, "/STACK:1 ...
- 使用particles.js实现网页背景粒子特效
得知途径 B3log提供了两套博客系统,一个是用Java开发的,叫做Solo,我也是在网上搜索Java博客系统时发现了它,之后才了解了B3log:还有一个是用Go语言开发的,叫做Pipe.其中Solo ...
- eccharts-gl 3D立体柱状图
echarts-gl继承于echarts echarts-gl官方实例https://echarts.baidu.com/examples/index.html#chart-type-globe 代码 ...
- $CF55D [数位DP]$
题面 数位DP+状压. 首先,按照数位DP的基本套路,每个个位数的最小公倍数为2520,所以只用考虑模2520的情况.考虑一个DP.dp[i][j][k]表示当前是第i位,2~9的数的集合为j,模25 ...