题目链接:https://vijos.org/p/1120

这怕是我打过最水的一道题了,但是这道隶属于普及组难度的题我竟然提交4次才过,这不禁让我有些后怕,所以还是含泪写下这篇博客,用来警示一下自己;

这题半天不A的原因还是因为是细节问题,第一遍打的时候我压根没有分析,只是凭着感觉打了,但是过后就发现有一些if语句没写好,但是在第三次后我卡了比较久

现在终于发现最后一个问题,不禁有点无语,就是我的程序里,假如所有的花生都采摘了就没有输出,因为我的循环是一旦这一株时间来不及采摘,我就return 0;跳程序

所以忽略了最基础的所有花生都采完这一情况

这道题方法很多,因为是普及组的题,很多方法都可以过,我的想法是,记录所有的有花生的点,按照花生个数排个序,然后依次循环,如果剩下的时间可以支持着猴子去采摘当前这棵并且回到路边,那就去采摘这一棵,并在时间上减去到这棵的时间和采摘的时间(不减去回路边的时间),因为在判断时加上回路边是为了给自己一条后路,假设你当前时间满足去当前这棵花生,但是去了就回不去了,那就肯定不能去的,这个就是我的贪心,思想很简单,理解不了随便举个例子就可以了

然后我想强调的是:一定要仔细去考虑,不要因为题简单而松懈,注意情况是否考虑完全,这类的题要考虑的情况大致分三种:可能全部取完,可能一株都取不到,可能取一部分,

然后从时间考虑又分几个类:时间没有变化,时间有剩余,时间花完了

然后就看看这水得一*的代码吧

 #include<cstdio>
#include<algorithm>
#include<cstdlib>
#define maxn 25
using namespace std;
struct node{
int x,y,val,time;
}e[maxn*maxn];
int n,m,t,ans,map[maxn][maxn],tot,sx,sy,d; int comp(const void *a,const void *b){return (*(struct node*)a).val<(*(struct node*)b).val?:-;} int main(){
scanf("%d%d%d",&n,&m,&t);
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
int a;scanf("%d",&a);
if(a>){
tot++;e[tot].x=i;e[tot].y=j;e[tot].val=a;
e[tot].time=e[tot].x;
}
}
}
e[].val=;sx=sy=-;
qsort(e,tot+,sizeof(e[]),comp);
for(int i=;i<=tot;i++){
if(sx==-&&sy==-){
d=e[i].x+;//
}else d=abs(e[i].x-sx)+abs(e[i].y-sy)+;//距离加上采摘时间
if(d+e[i].time<=t){
t-=d;
sx=e[i].x;sy=e[i].y;
ans+=e[i].val;
}else{
t-=e[i-].time;
printf("%d",ans);return ;
}
}
printf("%d",ans);
}

[vijos1120]花生采摘<贪心>的更多相关文章

  1. noip普及组2004 花生采摘

    花生采摘 描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!--熊字". 鲁宾逊先生和多多 ...

  2. 【luoguP1086】【2004NOIP-Ua】花生采摘

    P1086 花生采摘 题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”. 鲁宾逊先生和多多都 ...

  3. 洛谷——P1086 花生采摘

    P1086 花生采摘 题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”. 鲁宾逊先生和多多都 ...

  4. 洛谷 P1086 花生采摘

    P1086 花生采摘 将植株按花生数从大到小排序,然后按排序后的顺序摘,每次摘前计算能否在摘后回到路边,如果能就将ans加上该植株花生数,如果不能就直接输出当前ans并退出. var a:array[ ...

  5. 洛谷 P1086 花生采摘 题解

    P1086 花生采摘 题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:"欢迎免费品尝我种的花生!――熊字". ...

  6. P1086 花生采摘

    题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”. 鲁宾逊先生和多多都很开心,因为花生正是他 ...

  7. P1086 花生采摘题解

    这道题只是普通的模拟,不是贪心! 重点在于这句话:“然后再找出剩下的植株里花生最多的,去采摘它的花生”. 也就是,你下一个必须找到剩下花生最多的,而不是按照贪心思想来考虑在限定时间内的最优解 那么,应 ...

  8. Luogu 1086 - 花生采摘 - [简单模拟]

    题目链接:https://www.luogu.org/problemnew/show/P1086 题目描述鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着 ...

  9. 洛谷P1086 花生采摘【模拟】

    题目描述 鲁宾逊先生有一只宠物猴,名叫多多.这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”. 鲁宾逊先生和多多都很开心,因为花生正是他 ...

随机推荐

  1. 探索 Redux4.0 版本迭代 论基础谈展望(对比 React context)

    Redux 在几天前(2018.04.18)发布了新版本,6 commits 被合入 master.从诞生起,到如今 4.0 版本,Redux 保持了使用层面的平滑过渡.同时前不久, React 也从 ...

  2. LeetCode 154.Find Minimum in Rotated Sorted Array II(H)(P)

    题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ...

  3. Web 认证配置流程

    AC配置 Radius配置 Portal配置

  4. 教你用纯Java实现一个网页版的Xshell(附源码)

    前言 最近由于项目需求,项目中需要实现一个WebSSH连接终端的功能,由于自己第一次做这类型功能,所以首先上了GitHub找了找有没有现成的轮子可以拿来直接用,当时看到了很多这方面的项目,例如:Gat ...

  5. django models中字段

    AutoField:一个自动递增的整型字段,添加记录时它会自动增长.你通常不需要直接使用这个字段:如果你不指定主键的话,系统会自动添加一个主键字段到你的model.(参阅自动主键字段) Boolean ...

  6. redis作为消息队列的原理

    Redis队列功能介绍 List 转:https://blog.csdn.net/cestlavieqiang/article/details/84197736 常用命令: Blpop删除,并获得该列 ...

  7. Mac Maven安装与配置

    下载 官网地址:http://maven.apache.org/download.cgi 配置环境变量 总步骤 编辑.bash_profile文件 vim ~/.bash_profile 配置mave ...

  8. flask连接数据库的URI书写格式

    1. MySQL mysql://username:password@hostname/database 2. PostgreSQL postgresql://username:password@ho ...

  9. 【Weiss】【第03章】练习3.12:单链表倒置

    [练习3.12] a.编写一个非递归过程以O(N)时间反转单链表. b.使用常数附加空间编写一个过程以O(N)时间反转单链表. Answer: 这题的b貌似没啥意义,在a小题里直接用头插法,不断地将头 ...

  10. 【TIJ4】第四章全部习题

    第四章 没啥好说的...... 4.1 package ex0401; //[4.1]写一个程序打印从1到100的值 public class PrintOneToHundred { public s ...