当前位置: 首页 > 编程日记 > 正文

ZOJ 1025 Wooden Sticks(快排+贪心)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=25

题目大意:机器运送n个木条,每个木条有一个长度和重量。运送第一根木条需要1分钟的准备时间,接下来如果后一根木条的长度和重量都大于等于前一根木条,则不需要准备时间,否则需要1分钟的准备时间,求运完所有木条最少时间。 比如有5根木条,长度和重量分别是(4,9), (5,2), (2,1), (3,5), (1,4),则需要2分钟就可运完第1分钟运(1,4), (3,5), (4,9);第2分钟运 (2,1), (5,2)

分析:快速排序加贪心。首先按照木条长度从小到大排,第二关键字是重量,这时在f[]中做贪心,若遇到比其中一个大的就直接在里面覆盖,否则计数器p++,并把该数压入f[]

  比如(4,9), (5,2), (2,1), (3,5), (1,4),排序后是(1,4),(2,1),(3,5),(4,9), (5,2), 这样以后主关键字是从小到大排的不需要考虑。

  每步调试之后是:f[1]=4; f[2]=1; f[1]=5; f[1]=9; f[2]=5;  表示第1分钟运(1,4), (3,5), (4,9);第2分钟运 (2,1), (5,2)

代码如下:

 1 # include<stdio.h>
 2 # include<string.h>
 3 # include<stdlib.h>
 4 # define size 5001
 5 
 6 struct node{
 7     int l,w;
 8 }data[size];
 9 
10 int f[size];
11 
12 int cmp(const void *a,const void *b){
13     struct node *c = (node *)a;
14     struct node *d = (node *)b;
15     if(c->l == d->l)
16         return c->w - d->w;
17     return c->l - d->l;
18 }
19 
20 int main(){
21     int T;
22     int n,p,i,j,flag;
23     scanf("%d",&T);
24     while(T--){
25         scanf("%d",&n);
26         for(i=0;i<n;i++)
27             scanf("%d%d",&data[i].l,&data[i].w);
28         qsort(data,n,sizeof(data[0]),cmp);
29         p =0 ;
30         memset(f,0,sizeof(f));
31         for(i=0;i<n;i++){
32             flag = 0;
33             //判断第i个数与f[]已存在的数的大小,若大则记录f[]中比它小的数的下标
34             for(j=1;j<=p;j++)
35                 if(data[i].w >= f[j] && f[j] != 0){
36                     flag = j;
37                     break;
38                 }
39                 //原有数中不存在比当前数小的,则压入
40                 if(flag==0){
41                     p++;
42                     f[p] = data[i].w;
43                 }
44                 //存在则用当前数覆盖原来的
45                 else
46                     f[flag] = data[i].w;
47         }
48         printf("%d\n",p);
49     }
50     return 0;
51 }

相关文章:

Swift:UIKit中Demo(一)

关于Swift的基本概念及语法知识。我在前面的章节中已经介绍了非常多。这一节和下一节主要有针对性的解说Swift在实际UIKit开发中的使用场景及注意点。先来看看Demo的终于效果图。Demo分析&#xff1a; 1. 界面上面有三个button&#xff0c;他们的宽度不一致。 2. 点击每一个but…

jdbc封装与多并发的共鸣

欢迎来到&#xff1a;http://observer.blog.51cto.com代码的封装是一门艺术&#xff0c;封装得好&#xff0c;不但给自己便利&#xff0c;还可以给自己的维护提供帮助&#xff1b;同时&#xff0c;封装得好&#xff0c;还可以给看自己代码的人以赏心悦目的感觉&#xff0c;团队…

计算机视觉怎样实现自我超越?更大规模更精准的数据

最新发布的《2021中国人工智能应用趋势报告》强调&#xff0c;数据、算力和算法是支撑人工智能发展的"三驾马车"&#xff0c;为模型训练提供基本资料的「数据」&#xff0c;是人工智能的根基。 随着互联网、社交媒体、移动设备和传感器的大量普及&#xff0c;其产生…

Visual Studio 2005 Web Deployment Projects版本不同引发的问题

为了方便Visual Studio 2005发布为单一dll&#xff0c;微软发布了一个Visual Studio 2005 插件&#xff0c;Visual Studio 2005 Web Deployment Projects&#xff0c;在微软的不同文档里&#xff0c;这个插件提供了两个下载地址&#xff0c;分别是&#xff1a; 下载地址一&…

【书籍下载链接】_2_第二轮_计算机专业书籍

各位朋友&#xff0c;下面是我收集的书籍&#xff0c;介绍给大家&#xff0c;有需要可以分享给大家&#xff0c;如果看的还可以&#xff0c;请购买纸质版的图书。 驱动器 J 中的卷是 Elements 卷的序列号是 8AAF-3206 j:\ 的目录 2014/01/20 20:00 1,533,385 WinCE.pdf2010/09/…

VS2005发布、生成网站时如何设置固定的dll文件名?

在用VS2005发布网站项目时,默认生成bin目录下的.dll文件名是随机命名的; 如果要固定生成文件名如何固定呢&#xff1f;有以下两种方案&#xff1a; 一、每个页面的程序集分别生成对应的dll; 方法&#xff1a;在“发布网站”的选项中&#xff0c;勾选“使用固定命名和单页程…

android 广播机制

1&#xff1a;首先说andoid 广播分为系统的和 自定义的 2&#xff1a;注册方式呢&#xff0c;也是两种&#xff0c;1&#xff1a;静态注册&#xff0c;在manifest.xml 文件中注册的 2&#xff1a;动态注册&#xff0c;用filter 区分 不说了 占代码 首先是动态注册&#xff1a;…

2021第一融!第四范式完成D轮7亿美元融资

来源丨第四范式头图丨来源于第四范式近日&#xff0c;第四范式宣布完成D轮融资&#xff0c;融资金额7亿美元。本轮融资由春华资本、博裕资本、厚朴投资领投&#xff0c;并引入国家制造业转型基金、国开、国新、中国建投、中信建投、海通证券等战略股东&#xff0c;红杉中国、中…

springboot-26-springboot 集成rabbitmq

rabbitmq是基于AMQP规范的一个消息代理, 它可以兼容jms, 支持其他语言, 并且可以跨平台 1, 安装 1) 普通安装 度娘: 2) docker 安装 sudo docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:3-management 安装成功后: 使用 guest/guest 用户登录 2 使用: 1) 添加 rabbi…

asp.net中的联动菜单

目标达到的效果&#xff1a;两个下拉框&#xff0c;第二个跟随第一个变化而变化&#xff0c;使用客户端脚本JavaScript在ASP.NET环境下实现。 第一步&#xff1a;建立JavaScript脚本&#xff1a; 在Page_Load中建立并注册这个js脚本&#xff1a; string scriptKey "Menu…

2020长沙“科技之星”榜单重磅揭晓,近百家企业凭实力“出道”!

今天&#xff0c;「INFLUENCE长沙 2020年度“科技之星”企业评选」&#xff08;下文统称「长沙科技之星」&#xff09;圆满收官&#xff0c;评选结果正式揭晓&#xff01;作为专业的 IT 社区&#xff0c;CSDN 多年来与千万技术人员、技术企业共同见证了产业的发展和时代的变更…

CENTOS6.4 IBUS输入法不显示候选词解决办法

IBUS输入法 不显示候选词原因分析&#xff1a;输入im-chooser时候&#xff0c;显示找不到gtk模块&#xff1b;原因为升级python后的版本&#xff0c;不能导入gtk。找到能够导入gtk版本的python,然后默认python设置为此版本。故障解决&#xff1a;删除或更改默认python版本# whi…

sql server 表索引碎片处理

DBCC SHOWCONTIG (Transact-SQL) SQL Server 2005 其他版本更新日期&#xff1a; 2007 年 9 月 15 日 显示指定的表或视图的数据和索引的碎片信息。 重要提示&#xff1a;后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能&#xff0c;并着手修…

ASP.NET2.0 GridView小技巧汇粹

1)GridView绑定数据源控件,需要有编辑和删除选项按钮时,数据源控件必须提供SQL操作语句或存储过程调用,一般,我的推荐做法是,使用无意义的SQL语句或存储过程来使GridView的编辑和删除按钮可以生成,具体的编辑更新和删除操作在代码运行时而不是在控件设计时指定,虽然多写了一点代…

树莓派出微控制器了!Raspberry Pi Pico 只需 4 美元

整理 | 郑丽媛来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;昨天&#xff0c;树莓派搞了个大动作&#xff1a;推出了首款微控制器开发板 Raspberry Pi Pico&#xff01;该开发板基于树莓派开发的全新芯片——RP2040&#xff0c;并且作为双核 Arm Cortex-M0 的它…

“chaos”的算法--之链表面试题

【 声明&#xff1a;版权所有&#xff0c;欢迎转载。 联系信箱&#xff1a;yiluohuanghungmail.com】前两天倩仔仔给我了一套试题让我看&#xff0c;整体来说感觉题都还算不错&#xff0c;从中随便找了两道。先看题吧&#xff01;1、怎样判断一个单链表中是都存在环路&#xff…

ABP官方文档翻译 6.1.2 MVC视图

ASP.NET MVC 视图 介绍AbpWebViewPage基类介绍 ABP通过Abp.Web.Mvc nuget包集成到MVC视图。你可以如往常一样创建正常的MVC视图。 AbpWebViewPage基类 ABP提供了AbpWebViewPage&#xff0c;它定义了一些有用的属性和方法。如果你使用启动模板创建的工程&#xff0c;那么你所有的…

ASP.NET 打开新窗口几种方法

ASP.NET打开新窗口方法一:Response.Write("<script language/"javascript/">window.open(aaa.aspx,新窗口,/"toolbaryes,locationno,directoriesyes,statusyes,menubaryes,resizableyes,scrollbarsyes/");</script>");这种方式代码每…

Hibernate的使用梳理

Hibernate创建步骤 &#xff08;五大核心接口&#xff1a;Configuration/SessionFactory/Session/Transaction/Query&#xff09; 1.新建java工程&#xff0c;导入需要的jar包。 2.创建hibernate.cfg.xml配置文件和Test.java工具类。配置好相应的实体对象User.java User.hbm.x…

驭势科技引入国家队战略注资,完成超10亿元人民币融资

2021年1月25日&#xff0c;驭势科技&#xff08;UISEE&#xff09;宣布完成累计金额超10亿元人民币的新一轮融资&#xff0c;并获得国开制造业转型升级基金的战略注资。这是国开制造业转型升级基金在自动驾驶领域的首笔投资。2019年11月&#xff0c;国家制造业转型升级基金股份…

[Python爬虫] 之二十二:Selenium +phantomjs 利用 pyquery抓取界面网站数据

一、介绍 本例子用Selenium phantomjs爬取界面&#xff08;https://a.jiemian.com/index.php?msearch&aindex&typenews&msg电视&#xff09;的资讯信息&#xff0c;输入给定关键字抓取资讯信息。 给定关键字&#xff1a;数字&#xff1b;融合&#xff1b;电视 抓取…

android高级编程-android高级应用

android高级应用>>>第一阶段程序员基本素质养成程序员所需要具备的12条职业素质让学员初步了解和审视自己所应该具备的职业素质。并且我们会在授课中随时训练和贯彻这样的素质&#xff0c;最终把大家捏成专业的职业的程序员。迭发各个环节及工具初步介绍总概性的讲解一…

asp.net三种重定向方法的总结

(1)Server.Transfer方法: Server.Transfer("m2.aspx");//页面转向(服务器上执行). 服务器停止解析本页,保存此页转向前的数据后,再使页面转向到m2.aspx, 并将转向前数据加上m2.aspx页结果返回给浏览器. (2)Server.Execute方法: Server.Execute("m2.aspx"…

区区几行Python代码,一分钟搞定一天工作量

作者 | 陈熹、刘早起来源 | 早起Python大家好&#xff0c;我是早起。前几天有一个读者说最近要整理几千份文件&#xff0c;头都要整秃了&#xff0c;不知道能不能用Python解决&#xff0c;我们来看一下&#xff0c;你也可以思考一下。由于涉及文件私密所以具体内容已做脱敏处理…

bc计算命令的知识及企业计算案例

bc命令的用法&#xff1a;bc是unix下的计算器&#xff0c;它也可以用在命令行下面&#xff1a;例&#xff1a;给自变量i加1i2iecho $i1|bc -----效率低#因为bc支持科学计算&#xff0c;所以这种方法功能非常强大[rootXCN ~]# echo 11|bc 2 [rootXCN ~]# echo 1*1|bc 1 […

ExecutorService与Executors例子的简单剖析(转)

对于多线程有了一点了解之后&#xff0c;那么来看看java.lang.concurrent包下面的一些东西。在此之前&#xff0c;我们运行一个线程都是显式调用了 Thread的start()方法。我们用concurrent下面的类来实现一下线程的运行&#xff0c;而且这将成为以后常用的方法或者实现思路。 …

GridView隐藏列取值解决方案

【摘要】 在Asp.net 2.0中增加了一个新的数据绑定控件&#xff1a;GridView&#xff0c;其目的用来取代Asp.net1.x中的DataGrid控件&#xff0c;但有一点很不爽的是&#xff0c;如果把某列设置为visiblefalse&#xff0c;则不会进行数据绑定&#xff0c;也就是说无法直接从Grid…

百度飞桨成为北京市首个AI产业方向创新应用平台

1月20日&#xff0c;北京市经济和信息化局正式授予百度公司"北京市人工智能产业创新应用平台&#xff08;百度飞桨&#xff09;"。当前&#xff0c;北京市正在创建国家人工智能创新应用先导区&#xff0c;人工智能作为新科技革命和产业变革前沿领域&#xff0c;是北京…

FTP的20、21端口,工作模式

什么是FTP? FTP就是文件传输协议 File Transfer Protocol 的缩写. FTP端口号是多少? 21 FTP的端口号能改吗? 能 ftp的端口号20、21有何区别? 一个是数据端口&#xff0c;一个是控制端口&#xff0c;控制端口一般为21&#xff0c;而数据端口不一定是20&#xff0c;这和FTP的…

android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu[转]

http://blog.csdn.net/jj120522/article/details/8095852 示意图就不展示了&#xff0c;和上一节的一样,滑动菜单SlidingMenu效果如何大家都比较熟悉&#xff0c;在这里我简单说明一下用自定义ViewGroup来实现. 实现方法&#xff1a;我们自定义一个ViewGroup实现左右滑动&#…