贪心-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)

相关推荐

  • 鬼的笔顺,鬼字里加一个住多一横念什么

    技术鬼的笔顺,鬼字里加一个住多一横念什么魋 tuí 古书上说的一种毛浅而赤黄鬼的笔顺、形似小熊的野兽。姓。笔画数:17; 部首:鬼; 笔顺编号:32511355432411121 详细解释: 魋 tuí 【名】 神兽〖g

    生活 2021年10月21日
  • 关于安全的手抄报,关于校园安全的手抄报资料

    技术关于安全的手抄报,关于校园安全的手抄报资料关于校园安全的手抄报资料 有奖励写回答共13个回答
    张一苗果果
    聊聊关注成为第3位粉丝
    不跳楼梯,不从高处往下跳,不爬栏杆,不滑扶手,不做有危险的活动关于安全的手抄报。

    生活 2021年10月25日
  • 怎么解决MySQL报Error 1045错误问题

    技术怎么解决MySQL报Error 1045错误问题这篇文章主要讲解了“怎么解决MySQL报Error 1045错误问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么

    攻略 2021年11月18日
  • 网上值机提前多久,网上值机后需要提前多久到机场

    技术网上值机提前多久,网上值机后需要提前多久到机场在飞机起飞前2个小时网上值机提前多久,都可以去机场办理登机牌。可以前一天晚上去机场打印登机牌。乘坐飞机前,因需要打印登机牌,领取行程单,办理行李托运,过安检等手续。机场接

    生活 2021年10月22日
  • test6

    技术test6 test6#include stdio.h
    #define N 5int binarySearch(int *x, int n, int item); // 函数声明int main()

    礼包 2021年12月20日
  • 黄老,道家学说为何又叫黄老学说

    技术黄老,道家学说为何又叫黄老学说黄老道是道教史前道派黄老。是方仙思想与黄老之学的结合。黄老道起名于古代学术上一个主要流派——黄老学,“黄”指黄帝,代表古代“神仙家”和“阴阳家”的思想,“老”指老子,代表道家的思想。“黄

    生活 2021年10月21日