ZOJ Problem Set - 1025解题报告
ZOJ Problem Set - 1025
题目分类:基础题
原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1025
题目大意就是有很多木头,都有各自的长度和重量。现在要加工这些木头,如果加工某根木头的长度和重量大于等于它上一根木头的长度和重量,那么加工它不需要时
间,否则要花1分钟。现给出一堆木头的长度和重量,要求加工完这堆木头可以花的最少时间。例如给出5根木头长度重量分别为(4,9), (5,2),
(2,1), (3,5),(1,4),那么最优加工顺序是(1,4), (3,5), (4,9), (2,1), (5,2),只需要花两分钟。
解题思路:刚看完题目我觉得有点像上升序列。这题可以先排序,按照长度排序,长度相同的按重量排。然后按照以下的步骤即可求出答案。
(1)找到第 i 趟(i∈[1,n])第一个可加工的木头,向后遍历,把可以在这一趟中不花时间的标记为已加工,并记录已加工的件数。
(2)若件数小于木头总数n,则返回(1),否则进入(3)。
(3)输出最短时间即遍历趟数 i。
代码链接:http://paste.ubuntu.com/15263595/
#include <iostream>
using namespace std; struct stick
{
int len;
int wei;
int made;
};
int main()
{
int T,n,i,j,nowlen,nowwei,count,time;
stick w[],t;
cin>>T;
while(T)
{
cin>>n;
if(n == )
{
cout<<""<<endl;
T--;
continue;
}
for(i=;i<n;i++)
{
cin>>w[i].len>>w[i].wei;
w[i].made = ; // 1表示可以加工,0表示已加工
}
for(i=;i<n-;i++) //排序
{
for(j=i+;j>;j--)
{
if(w[j].len < w[j-].len || (w[j].len == w[j].len && w[j].wei < w[j].wei))
{
t = w[j];
w[j] = w[j-];
w[j-] = t;
}
}
}
count = ;
time = ;
while(count < n) //count记录已加工的件数
{
for(i=;i<n;i++) //记录每趟遍历的第一个可加工的木头
{
if(w[i].made)
{
nowlen = w[i].len;
nowwei = w[i].wei;
break;
}
}
for(i=;i<n;i++) //每趟遍历把可以不花时间的标记为已加工
{
if(w[i].len >= nowlen && w[i].wei >= nowwei && w[i].made)
{
nowlen = w[i].len;
nowwei = w[i].wei;
w[i].made = ;
count++; }
}
time++;
}
cout<<time<<endl;
T--;
}
}
ZOJ Problem Set - 1025解题报告的更多相关文章
- ACM: A Simple Problem with Integers 解题报告-线段树
A Simple Problem with Integers Time Limit:5000MS Memory Limit:131072KB 64bit IO Format:%lld & %l ...
- BestCoder18 1002.Math Problem(hdu 5105) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5105 题目意思:给出一个6个实数:a, b, c, d, l, r.通过在[l, r]中取数 x,使得 ...
- Problem - 433C - Codeforces解题报告
对于这题本人刚开始的时候的想法是:先把最大两数差的位置找到然后merge计算一个值再与一连串相同的数做merge后计算一个值比较取最大值输出:可提交后发现不对,于是本人就搜了一下正解发现原来这题的正确 ...
- Problem A: 选举 解题报告
Problem A: 选举 题意 给出一个投票过程.有\(n\)个选民和\(m\)个候选人,每个选民\(i\)有个不重且有序的可投集合\(\{a_i\}\). 对于第一轮投票,选民\(i\)会投给\( ...
- Problem A: 种树 解题报告
Problem A: 种树 Description 很久很久以前,一个蒟蒻种了一棵会提问的树,树有\(n\)个节点,每个节点有一个权值,现在树给出\(m\)组询问,每次询问两个值:树上一组点对\((x ...
- Problem C: 多线程 解题报告
Problem C: 多线程 Description 多线程是一种常见的加速手段,利用多个线程同时处理不同的任务可以一定程度上减少总耗时,达到提高效率的目的.然而,多个线程间的执行顺序是完全不可控的, ...
- Problem A: 踢罐子 解题报告
Problem A: 踢罐子 Description 平面上有\(n\)个点,其中任意2点不重合,任意3点不共线. 我们等概率地选取一个点A,再在剩下的\(n-1\)个点中等概率地选取一个点B,再在剩 ...
- Problem B: 专家系统 解题报告
Problem B: 专家系统 Description 一个专家系统是指,你雇佣了\(n\)个专家,他们每个人会做出一个结果,然后你从中选取较多的专家的结果组合而成最终的结果.专家系统广泛应用于传统机 ...
- Problem C Dist 解题报告
Problem C Dist Description 有一个\(n\)个点带边权的连通无向图,边集用\(k\)个集合\(s_1,s_2,\dots,s_k\)和\(k\)个整数\(w_1,w_2,\d ...
随机推荐
- 菜鸟的MySQL学习笔记(五)
7.自定义函数 用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同.包含了两个必要条件,参数与返回值.没有必然内在联系. 函数可以返 ...
- easy ui tabs 顶部绑定事件
$(function(){ $('#tb').tabs('bindclick', function(index, title){ }); }); $.extend($.fn.tabs. ...
- c语言位运算符
C语言既具有高级语言的特点,又具有低级语言的功能. 所谓位运算是指进行二进制位的运算. C语言提供的位运算: 运算符 含义 & 按位与 | 按位或 ∧ 按位异或 ∽ ...
- CSS 响应式设计
响应式设计是指在不同分辨率的设备中,网页布局可以自适应的调整.这种弹性化的布局使网站在不同设备中的布局都比较合理,可以为不同终端的用户提供更加舒适的界面和更好的用户体验,其根本理念是使原本 PC 上的 ...
- php 相对路径中 及 绝对路径中 的一些问题
写本篇文章,是为了以后学习中遇到问题好解决 php的相对路径是以当前工作目录为基准的,并不是以当前处理的文件目录为基准,这样导致我们在开发过程中总会遇到一些问题. 但是如果我们使用绝对路径,就会导致后 ...
- 在ecshop商品详情页显示供货商
好久没写文章了,隐约记得前几天有人问到这个问题:[如何在ecshop商品详情页面显示该商品的供货商?] 今天有时间整理下,分享给大家. 注:以下修改适用于ecshop2.7.2,其他版本未做测试. 1 ...
- linux下进度条的简单实现
在实现进度条之前,先学习一下makefile. 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中, makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编 ...
- NS实现采用的技术大多是PHP,如果采用java、 .net是否同样适用?
SNS采用的技术可不都是PHP (不局限于国内),特别是国外的新兴公司,基本上没有再用PHP的了,国内到还是蛮常用的.简单说说我知道的几个案例:Facebook (PHP):Facebook采用PHP ...
- ubuntu中vi在编辑状态下方向键不能用的解决
ubuntu中vi在编辑状态下方向键不能用,还有回格键不能删除等,我们平时习惯的一些键都不能使用. 解决办法: 可以安装vim full版本,在full版本下键盘正常,安装好后同样使用vi命令. 安装 ...
- 【web安全】第四弹:防火墙技术笔记
参考资料: <黑客攻防演习>第二版 Ed SKoudis Tom Liston著 <防火墙.入侵检测与VPN> 马春光 郭方方著 OSI在理论上将网络分为七层,物理层.数 ...