贪心-Doing Homework again HDU

技术贪心-Doing Homework again HDU 贪心-Doing Homework again HDU - 1789题目
https://vjudge.net/problem/HDU-178

贪心-又在做作业了HDU - 1789年年

题目

https://vjudge.net/problem/HDU-1789

思路一

思路一是,让价值尽量大的作业,尽量往后安排。

为了实现思路一,我们需要从后往前遍历"时间",在每个时间节点选择满足当前条件的最大值,其中最大值我们使用优先队列实现。

以样例3为例,如图所示

1 4 6 4 2 4 3

3 2 1 7 6 5 4

从右往左看,黄色表示选择做的作业,灰色表示已经做了,绿色是最后没做的

代码

#包括牡蛎

#包括

#包括算法

使用命名空间标准;

结构节点{

国际时间,价格;

朋友布尔运算符(结构节点一个,结构节点b)

{

如果价格!=b.price)返回价格。

否则返回时间。

}//使用小于号,对于优先队列,效果是价格大的靠近顶部;对于分类函数,会把价格小的排在数组前面

};

bool cmp(节点一个,节点b){ 0

返回时间。

}

int main(void){ 0

int T=0;

CINT;

而(T-){ 0

priority _ queue节点Q;

节点arr[1005];

int N,total=0,DDL=0;

cin北部;

for(int I=0;I N;I){ 0

cin arr[i].时间;

ddl=ddl arr[i].时间ddl : arr[i].时间;

}

for(int I=0;I N;I){ 0

cin arr[i].价格;

总计=arr[i].价格;

}

排序(arr,arr N,CMP);

int j=0;

for(int I=DDL;I=1;i - ) {//错误:i=0

for(;arr[j].时间=I j N;j ) {//错误:1.时间=ddl 2 .缺少日本

//printf('%d '已被推送\n ',arr[j].时间);

q . push(arr[j]);

}

if(!q . empty()){ 0

//printf('总计是%d,Qtop是%d\n ',总计,Q.top().价格);

total -=Q.top().价格;

q . pop();

}

}

标准输出总恩德尔

}

返回0;

}

思路二

思路二的核心其实和思路一一样——让价值尽量大的作业,尽量往后安排。但是实现的方法不一样,既然我们想要让价值大的往后排,那我们不是只要让它在最后一天完成就好了但这样可能会有重复,没关系,那就让它往前一天,还是不行就两天,以此类推。为此我们需要将价值从大到小排序。

还是以样例3为例子,价值从大到小,如图所示

1 4 6 4 2 4 3

3 2 1 7 6 5 4

代码

#包括牡蛎

#包括

#包括算法

# includecstring

使用命名空间标准;

结构节点{

国际时间,价格;

};

bool cmp(节点一个,节点b){ 0

返回价格。

}

int main(void){ 0

int T=0;

CINT;

而(T-){ 0

priority _ queue节点Q;

节点arr[1005];

int vis[1005];

memset(vis,0,sizeof(vis));

int N,total=0,wave=0,DDL=0;

cin北部;

for(int I=0;I N;I){ 0

cin arr[i].时间;

ddl=ddl arr[i].时间ddl : arr[i].时间;

}

for(int I=0;I N;I){ 0

cin arr[i].价格;

总计=arr[i].价格;

}

排序(arr,arr N,CMP);

for(int I=0;I N;I){ 0

//for(int k=1;k=ddlk )printf('%d ',vis[k]);cout endl

int j;

for (j=arr[i]).时间;j=1 vis[j]!=0;j - ){}//这里很多我啊j啊,一定要沉下心来理清逻辑

vis[j]=arr[i].价格;

}

//for(int k=1;k=ddlk )printf('%d ',vis[k]);cout endl

for(int I=1;i=ddlI)花费=vis[I];

总支出;

}

返回0;

}

参考博客

https://www.cnblogs.com/blumia/p/hdu1789.html

https://blog.csdn.net/liluoyu_1016/article/details/78938559

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/103403.html

(0)

相关推荐

  • es6.4.2api

    技术es6.4.2api es6.4.2api这是讲数据库的数据导入到es里 所有用到了mysql!
    1.依赖xml version="1.0" encoding="UTF-8"
    project xml

    礼包 2021年12月15日
  • debug D命令如何查看指定范围内的内容

    技术debug D命令如何查看指定范围内的内容今天就跟大家聊聊有关debug D命令如何查看指定范围内的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。    

    攻略 2021年11月11日
  • Java关键字和保留字是什么

    技术Java关键字和保留字是什么这篇文章主要讲解了“Java关键字和保留字是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java关键字和保留字是什么”吧!  1、访

    攻略 2021年11月4日
  • Spring5路径匹配器PathPattern有什么用

    技术Spring5路径匹配器PathPattern有什么用这篇文章主要为大家展示了“Spring5路径匹配器PathPattern有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并

    攻略 2021年11月24日
  • 如何确认新任务中是否启动了SubActivity?

    技术如何确认SubActivity是不是在新的任务中启动这篇文章主要讲解了“如何确认SubActivity是不是在新的任务中启动”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学

    攻略 2021年12月18日
  • 复习:adb02

    技术复习:adb02 复习:adb_02冷启动:adb shell am start -W xxx1.热启动:
    按back按键再次启动:
    adb shell am start -W xxxadb she

    礼包 2021年11月20日