Homework 贪心(排序)

杭电oj1002,简单理解,复杂解法 杭电oj这道题的解法是要通过字符数组储存数字在进行运算的,涉及到数值进位的问题,以下是代提供码参考。 #include #include int main() { char a[1000],b[1000]; int sum[10000]={0}; int c,d,e,f,g,i,n,s; scanf("%d",&n); f=48; s=1; c=n; while(n--) 阅读详情

题目描述

临近开学了,大家都忙着收拾行李准备返校,但I_Love_C却不为此担心! 因为他的心思全在暑假作业上:目前为止还未开动(-_-!!还以为他有多冷静呢)。
暑假作业是很多张试卷,我们这些从试卷里爬出来的人都知道,卷子上的题目有选择题、填空题、简答题、证明题等。 而做选择题的好处就在于工作量很少,但又因为选择题题目都普遍很长。 如果有5张试卷,其中4张是选择题,最后一张是填空题,很明显做最后一张所花的时间要比前4张长很多。 但如果你只做了选择题,虽然工作量很少,但表面上看起来也已经做了4/5的作业了。 I_Love_C决定就用这样的方法来蒙混过关。
他统计出了做完每一张试卷所需的时间以及它做完后能得到的价值(按上面的原理,选择题越多价值当然就越高咯)。 现在就请你帮他安排一下,用他仅剩的一点时间来做最有价值的作业。

输入

测试数据包括多组。 每组测试数据以两个整数M,N(1≤M≤20, 1≤N≤10000)开头,分别表示试卷的数目和I_Love_C剩下的时间。 接下来有M行,每行包括两个整数T,V(1≤T≤N,0<V<10000),分别表示做完这张试卷所需的时间以及做完后能得到的价值! 输入以0 0结束。

输出

对应每组测试数据输出I_Love_C能获得的最大价值。
保留小数点2位

样例输入

4 20
4 10
5 22
10 3
1 2
0 0

样例输出

37.00

提示

float的精度可能不够。 你应该使用double类型。

解题思路:记得当初刚开始学习DP的时候做了这道题,用DP的思想一直错,后来才发现这道题不是DP,而是贪心。因为结果会有小数点出现的。看代码和注释就能懂了。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
    double w[21],v[21],r[21];
    int i,j,m,n;
    while(scanf("%d%d",&m,&n)!=EOF&&(m||n))
    {
        for(i=0; i<m; ++i)
        {
             scanf("%lf%lf",&w[i],&v[i]);
             r[i]=v[i]/w[i];
        }
        //冒泡排序,按价值时间比从大到小序
        for(i=0;i<m-1;++i)
        for(j=i+1;j<m;++j)
        {
        if(r[j]>r[i])
        {
            swap(r[j],r[i]);
            swap(w[j],w[i]);
            swap(v[j],v[i]);

        }
        }
         int s=0;
         double value=0;
         //如果剩余时间足够,那么总价值加上这张试卷的价值,并继续另一张;
         //如果剩余时间不足,则总价值加上剩余时间*此张试卷的价值时间比
         for(i=0;i<m;++i)
         {
             if(s+w[i]<=n)
             {
                 value+=v[i];
                 s+=w[i];
             }
             else
             {
                 value+=(n-s)*r[i];
                 break; //注意不要漏写
             }
         }
         printf("%.2lf\n",value);
    }
    return 0;
}


HDU——Doing Homework Again(贪心算法) Problem Description Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If Ignatius hands in ... 阅读详情

相关推荐

ZZNUOJ_1002:简单多项式求值(C/C++/Java算法源码)

ZZNUOJ

彬sir哥的博客 1338

Home Work

1277: Home Work Time Limit: 1000 Sec  Memory Limit: 64 MB Submit: 3  Solved: 2 [Submit][Status][Web Board] Description 临近开学了,大家都忙着收拾行李准备返校,但I_Love_C却不为此担心! 因为他的心思全在暑假作业上:目前为止还未开动(-_-!!还以为

不会思考的机器 1081

VMFS数据存储(datastore)丢失后恢复步骤

vmfs datastore恢复步骤

jetliu05的博客 3267

航电OJ1002

#航电OJ1002 问题描述 对您来说,我有一个非常简单的问题。给定两个整数A和B,您的工作是计算A + B的总和。 输入项 输入的第一行包含一个整数T(1 <= T <= 20),它表示测试用例的数量。然后是T行,每行由两个正整数A和B组成。请注意,这些整数非常大,这意味着您不应使用32位整数对其进行处理。您可以假设每个整数的长度不超过1000。 输出量 对于每个测试用例,您应该输出...

weixin_45634839的博客 691

恒定跨导的奥秘:基于1:3电流镜的轨到轨运放输入级设计与仿真验证

本文深入探讨了基于1:3电流镜的轨到轨运放输入级设计,重点分析了恒定跨导(GM)的实现原理与仿真验证。通过精确的电流补偿机制和工艺参数优化,解决了传统运放在电源轨附近跨导下降的问题,为模拟集成电路设计提供了可靠的低电压解决方案。

weixin_33686714的博客 516

企业微信-审批控件中的外部选项的应用全流程完美解决方案

完美解决企业微信所有JS-SDK调用问题 完美解决苹果和PC端不适配的问题

qq_45195039的博客 5864

大整数的加法

#include &lt;iostream&gt;#include &lt;stdio.h&gt;#include &lt;cstring&gt; using namespace std;struct bign{ int d[1000]; int len; bign(){ memset(d,0,sizeof(d)); len=0; }};bign change(char str[]){ big...

QAQ的小耗子的博客 280

DNF单机版搭建全攻略:从零开始到局域网联机(含常见问题解决)

本文提供详细的DNF单机版搭建指南,从环境配置到局域网联机设置,涵盖服务端安装、数据库配置及常见问题解决方案。适合新手和有经验的玩家,帮助快速搭建专属游戏服务器,重温经典游戏体验。

weixin_30832143的博客 846

【贪心+排序】HDU-1789 Doing Homework again

注解 1、贪心。贪心策略:先按分数降序,罚分越多的,越应该完成。再按截止日期升序,也就是说罚分相同时,应该先写截止日期早的。 2、排序之后,对排序后的科目,依次填入对应的天数。填入的规则是:先找到当前罚分最多的未完成的作业,然后从他的截止日期那天开始,往前找,哪天还没有安排做作业,就将当前的科目安排到那一天。如果直到第1天,前面的天数都有安排了,那么这个科目就完不成了,也就只能罚分了。 代码 #...

zhanggirlzhangboy的博客 253

python实现带符号的二进制数转换十进制数 (附完整源码)

python实现带符号的二进制数转换十进制数 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 554

国产FPGA高云GW1NSR-4C,集成ARM Cortex-M3硬核

从板子整体角度来看,这是一款国产化程度很高的板子,从主控FPGA,到JTAG芯片,存储芯片、电源芯片等,都是使用的国产半导体公司的产品。板子整体尺寸也比较迷你,属于小而美类型的,可以认为是一款FPGA核心板,当然也预留了排针接口,给用户足够的扩展空间。对于想了解高云小蜜蜂SoC软硬件开发,以及对云源软件、MCU开发环境做个深度评测来说足够了。JTAG调试器固件可以增加虚拟串口功能,对于板子本来来说面积不会有改动,只需要添加两根信号线即可。

whik1194的博客 6395

hdu1789 Doing Homework again(贪心+排序)

Doing Homework again Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 18294Accepted Submission(s): 10648 Problem Description Ignatius...

baizhen6460的博客 259

【WRF安装】WRF环境配置移植详细说明

【WRF安装】WRF环境配置移植详细说明

WW、forever的博客 819

HDU - 1789 Doing Homework again(贪心) ~~~学了一波sort对结构体排序

  题目中因为天数和分数是对应的,所以我们使用一个结构体来存分数和截止如期。   一开始做这道题的时候,很自然的就想到对天数排序,然后天数一样的分数从大到小排序,最后WA了之后才发现没有做到“舍小取大”的贪心。所以改变一下策略,对分数排序,如果分数一样的话,时间从小到大排序(因为我们的目的就是先做分多的作业,所以分数一样的得放到前几天去做)。   (具体sort排结构体知识见代码里面...

weixin_38166557的博客 161

把表的每一次改动都记下来:SAP 表变更日志 DBTABLOG/DBTABPRT 与 SCU3 全面解析

摘要:SAP系统提供了数据库表变更日志功能(SCU3/DBTABLOG),用于追踪关键配置表的变更历史。该功能通过profile参数rec/client和表级技术设置双重开关控制,能记录谁在何时修改了哪些数据。与业务变更凭证(CDHDR/CDPOS)和应用日志(SLG1)不同,表变更日志提供技术层面的审计线索,适用于快速定位生产事故中的异常数据变更。但需注意其限制:不支持超宽表和大批量变更,且可能引发性能问题。建议将表变更日志与业务变更凭证、应用日志结合使用,构建完整的审计追踪体系。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1689

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

HDU1789 Doing Homework again【贪心】

Doing Homework again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 24959 Accepted Submission(s): 14299 Problem Description Ignatius has just come back school from the 30th ACM/ICPC. Now he has a

海岛Blog 1163

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Codeforces Round 1043 (Div. 3)补题

这篇文章分享了三个编程题解:1)用双端队列模拟字符串操作;2)通过数学规律求解能被特定数整除的数;3)贪心算法解决购买问题。分别涉及字符串处理、数学推导和贪心策略,提供了简洁的代码实现。其中第三题还提到可能有更优的二分解法。

2403_88489850的博客 379

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

贪心算法例题

不定期更新一些贪心算法题。

yuhaomogui的博客 499

[贪心+排序]CF101A题解

题目传送门 思路 总的来说这个题目就是 贪心 +++ 排序。题目意思比较明确,这里将不再阐述。 首先,他要让我们在删去 kkk 个字符之后,留下的字母种类数尽量的小,也就是让删去的种类尽量的多。我们可以运用桶的思想,将每个字母的数量储存下来,为了让删去的种类越多,我们先根据这个字母的数量从小到大排序,然后每次都先删去数量越少的字母。因为这样的话,我们可以删去的 kkk 个字符才能利用到最大化,使得他能删去更多的字母种类。 代码 #include<iostream> #include<alg

Minecraftwzy的博客 224

Doing Homework again 贪心

Doing Homework again Time Limit: 1000MS Memory limit: 65536K 题目描述  Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a

顺便A道题 737

贪心+堆维护,HDU1789Doing Homework again

贪心调度问题

EQUINOX1的博客 1048

Doing Homework again 贪心

题目链接 题意 伊格内修斯刚从第30届ACM/ICPC毕业。现在他有很多家庭作业要做。每个老师都给他一个交作业的最后期限。如果伊格内修斯在最后期限后交作业,老师就会降低他的期末考试分数。现在我们假设每个人做作业都要花一天的时间。所以伊格那丢想让你帮他安排作业的顺序,把减少的分数减到最小。 输入 输入包含几个测试用例。输入的第一行是一个整数T,它是测试用例的数量。接下来是T测试用例。每...

wa的一声就哭了 627

Week4 HomeWork A DDL的恐惧 贪心

文章目录题目描述InputOutputSample InputSample Output算法/思路分析算法证明代码 题目描述 ZJM 有 n 个作业,每个作业都有自己的 DDL,如果 ZJM 没有在 DDL 前做完这个作业,那么老师会扣掉这个作业的全部平时分。 所以 ZJM 想知道如何安排做作业的顺序,才能尽可能少扣一点分。 请你帮帮他吧! Input 输入包含T个测试用例。输入的第一行是单...

落花·无间的博客 172

HDUOJ 1789 Doing Homework again(贪心)

solution:难点在于找到贪心策略,我们发现按时间排序并不能满足要求,于是改用分数排序 #include <bits/stdc++.h> using namespace std; struct node { int date; int score; }a[1001]; //标记第i天是否可用 int book[1001]; bool cmp(node a, node b...

weixin_44014982的博客 204

hdu1789Doing Homework again(贪心)

题目链接: 啊哈哈,点我点我 思路: 这道题是简单的贪心。。先按分数从大到小排序,然后将这个分数的截止日期从后向前扫描,如果碰到没有被标记的则这一天可以做这个作业。。。 题目: Doing Homework again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot

大洋深处 888

HDU 1789 Doing Homework again(非常经典的贪心)

&#13; Doing Homework again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17622    Accepted Submission(s): 10252 Problem Description...

Y先森0.0 235
上一篇: DP问题之最优加法序列
下一篇: 微信红包的算法实现
MagicScaring
博客等级 码龄11年 18粉丝 28原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值