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

相关推荐

  • ADO.NET sql server存储过程怎么调用

    技术ADO.NET sql server存储过程怎么调用这篇文章主要介绍“ADO.NET sql server存储过程怎么调用”,在日常操作中,相信很多人在ADO.NET sql server存储过程怎么调用问题上存在疑

    攻略 2021年12月3日
  • C++声明局部变量类型时为什么概念比auto更好

    技术C++声明局部变量类型时为什么概念比auto更好本篇内容主要讲解“C++声明局部变量类型时为什么概念比auto更好”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++声明

    攻略 2021年11月24日
  • MySQL如何快速查看原始SQL语句

    技术MySQL如何快速查看原始SQL语句这篇文章主要讲解了“MySQL如何快速查看原始SQL语句”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL如何快速查看原始S

    攻略 2021年11月9日
  • 如何在windows下安装MySQL5.0

    技术如何在windows下安装MySQL5.0小编给大家分享一下如何在windows下安装MySQL5.0,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了

    攻略 2021年11月1日
  • https

    技术https httpshttps认证流程
    服务器生成一对密钥,私钥自己留着,公钥交给数字证书认证机构(CA)
    CA进行审核,并用CA自己的私钥对服务器提供的公钥进行签名生成数字证书
    将生成的数字证书

    礼包 2021年11月9日
  • 香港KVM云服务器有哪些优势

    技术香港KVM云服务器有哪些优势使用云服务器的用户经常会对云服务商的提供的参数有一些不了解的地方例如服务器采用的虚拟化技术比较少见的点,一般来说相比价格更便宜的openvz技术,基于KVM的云服务器显然价格更高,那么这些

    礼包 2021年12月8日