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 水果盛宴的更多相关文章

  1. USACO 2015 December Contest, Gold Problem 2. Fruit Feast

    Problem 2. Fruit Feast 很简单的智商题(因为碰巧脑出来了所以简单一,一 原题: Bessie has broken into Farmer John's house again! ...

  2. Fruit Feast

    Fruit Feast 题目描述 Bessie has broken into Farmer John's house again! She has discovered a pile of lemo ...

  3. Fruit Feast(暴力)(动态规划)

    Fruit Feast 时间限制: 1 Sec  内存限制: 64 MB提交: 64  解决: 18[提交][状态][讨论版] 题目描述 Bessie has broken into Farmer J ...

  4. bzoj4393: [Usaco2015 Dec]Fruit Feast

    题意: T,A,B.T是上限.A和B可以随意吃但是不能超过T.有一次将吃的东西/2的机会.然后可以继续吃,不能超过T.问最多可以吃多少. =>我们先处理不能/2可以吃到哪些.然后弄个双指针扫一扫 ...

  5. P4817 Fruit Feast G

    最开始拿到这道题的时候,题目中其实只规定了两种水果的饱食度,可以理解成价值或是重量,在不超过T的情况求最大值.第一眼看过去感觉就是装箱问题(背包),只不过这道题用的是完全背包,但是考虑到喝水的情况,做 ...

  6. BZOJ 4393: [Usaco2015 Dec]Fruit Feast

    DP #include<cstdio> using namespace std; int T,A,B,F[5000005],G[5000005]; int main(){ scanf(&q ...

  7. ACM 水果 hdu 1263 一题多解

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1263 文章末有相应的一些测试数据供参考. 传统的数组解题方式 思路一: 三种属性的数据放在一个结构体里面, ...

  8. 题解报告:hdu 1263 水果

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1263 Problem Description 夏天来了~~好开心啊,呵呵,好多好多水果~~ Joe经营 ...

  9. CET4词汇

    abandon vt.丢弃:放弃,抛弃 ability n.能力:能耐,本领 abnormal a.不正常的:变态的 aboard ad.在船(车)上:上船 abroad ad.(在)国外:到处 ab ...

随机推荐

  1. JBOSS和EJB学习一

    1.使用软件 IDE:Eclipse4.3(开普勒) EE版本 服务器:jboss EAP 6.2 eclipse-jboss plugin:jbosstools-Update-4.1.2.Final ...

  2. java中间变量缓存机制

    public class Demo { public static void main(String[] args){ method_1(); method_2(); } private static ...

  3. H264--2--语法及结构[5]

    名词解释 场和帧 :    视频的一场或一帧可用来产生一个编码图像.在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场. 片:             每个图象中,若干宏块被排列成片的形式.片分为 ...

  4. 安装Node.js 以及命令行使用

    安装 官方的安装包 安装完成之后,会自动添加到环境变量中 通过visual studio安装 命令行 查看版本 PS C:\Users\clu\Desktop> node --version v ...

  5. Linux 系统管理命令 - lsof - 查看进程打开的文件

    命令详解 重要星级: ★★★★★ 功能说明: 全名为 list open files,也就是列举系统中已经被打开的文件,通过 lsof 命令,就可以根据文件找到对应的进程信息,也可以根据进程信息找到进 ...

  6. bzoj 2100: [Usaco2010 Dec]Apple Delivery【spfa】

    洛谷数据好强啊,普通spfa开o2都过不了,要加双端队列优化 因为是双向边,所以dis(u,v)=dis(v,u),所以分别以pa1和pa2为起点spfa一遍,表示pb-->pa1-->p ...

  7. java程序死锁,3种方式快速找到死锁代码

    java程序中出现死锁问题,如果不了解排查方法,是束手无策的,今天咱们用三种方法找到死锁问题. 运行下面代码 package com.jvm.visualvm; /** * <a href=&q ...

  8. 服务器出现 nginx 502 Bad Gateway

    发生原因1.PHP FastCGI进程数不够用 当网站并发访问巨大时,php fastcgi的进程数不有一定的保障,因为cgi是单线程多进程工作的,也就是说cgi需要处理完一个页面后再继续下一个页面. ...

  9. [转]c 语言中 %d,%lu等区别

    转载至:http://blog.sina.com.cn/s/blog_7d94c35c01019f96.html %d 有符号10进制整数 %ld 长整型 %hd短整型 %hu 无符号短整形 %u无符 ...

  10. ACM_同余+暴力找规律

    小光的忧伤 Time Limit: 2000/1000ms (Java/Others) Problem Description: 锴神:我尊重作者原意,你们出什么我就加什么.于是小光打了道水题(也就是 ...