ACM Wooden Stricks
有一堆n根木棍。每根棍子的长度和重量是预先知道的。 这些棒子将被木工机器逐一加工。。它需要一些时间,称为安装时间,用于机器准备加工棒。设置时间与机器中的清洁操作和更换工具和形状相关联。木工机械的安装时间如下:
(a)第一个木棒的设置时间是1分钟。
(b)在处理一根长度l和重量w后,如果l < = l '和w < = w ',机器将不需要安装长度l '和weight w '。否则,安装需要1分钟。
你要找到最小的安装时间来处理一堆n个木棒。例如,如果你有五根长度和重量为(4、9)、(5、2)、(2、1)、(3、5)、(1、4),那么最小设置时间应为2分钟,因为有一对(1,4),(3,5),(3,5),(4,9),(2,1),(2,1),(5,2)。
输入由T测试用例组成。在输入文件的第一行中给出了测试用例(T)的数量。每个测试用例由两行组成:第一行有一个整数n,1 < = n < = 5000,表示测试用例中木棒的数量,第二行包含n* 2个正整数l1,w1,l2,w2,…,ln,wn,最大10000点,li和wi分别是i th木棒的长度和重量。2n个整数被一个或多个空格分隔。
输出应在分钟内包含最小设置时间,每行一个。
Sample Input
3
5
4 9 5 2 2 1 3 5 1 4
3
2 2 1 1 2 2
3
1 3 2 2 3 1
Sample Output
2
1
3
#include<bits/stdc++.h>
using namespace std;
struct node{
int l;
int w;
bool flag;
}sticks[];
bool cmp(node a,node b)
{
if(a.l!=b.l)
return a.l > b.l;
else
return a.w > b.w;
}
int main()
{
int t,n;
while(cin>>t)
{
while(t--)
{
scanf("%d",&n);
for(int i = ; i < n; i++)
{
scanf("%d %d",&sticks[i].l,&sticks[i].w);
sticks[i].flag = false;
} sort(sticks,sticks+n,cmp); int ans = ,min;
for(int i = ; i < n; i++)
{
if(sticks[i].flag) continue; /*说明sticks[i]已经被处理*/
min = sticks[i].w; for(int j = i+; j < n; j++) /*往后找 l已经排好了序*/
{
if(min >=sticks[j].w && !sticks[j].flag) /*满足提议所给条件*/
{
min = sticks[j].w; /*按照题中条件 min此时应该要设为木块j的重量*/
sticks[j].flag = true;
}
}
ans++;
}
cout<<ans<<endl;
}
}
return ;
}
ACM Wooden Stricks的更多相关文章
- Wooden Stricks——两个递增条件的线性DP
题目 一堆n根木棍.每个棒的长度和重量是预先已知的.这些木棒将由木工机械一一加工.机器需要准备一些时间(称为准备时间)来准备处理木棍.设置时间与清洁操作以及更换机器中的工具和形状有关.木工机械的准备时 ...
- HDU ACM 1051/ POJ 1065 Wooden Sticks
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- HDOJ 1051. Wooden Sticks 贪心 结构体排序
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- UVALive 7276 Wooden Signs (DP)
Wooden Signs 题目链接: http://acm.hust.edu.cn/vjudge/contest/127406#problem/E Description http://7xjob4. ...
- HDU 1005 Wooden Sticks
http://acm.hdu.edu.cn/showproblem.php?pid=1051 Problem Description There is a pile of n wooden stick ...
- Wooden Sticks---hdu1051(最长上升子序列)
http://acm.hdu.edu.cn/showproblem.php?pid=1051 Problem Description There is a pile of n wooden stick ...
- SCNU ACM 2016新生赛决赛 解题报告
新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- acm结束了
最后一场比赛打完了.之前为了记录一些题目,开了这个博客,现在结束了acm,这个博客之后也不再更新了. 大家继续加油!
随机推荐
- 排序技巧——双关键字排序(快速排序,sort)
一个萌新的成长之路 Background 在做题过程中,我们常会遇到对双关键字排序的情况,如:当分数相等时,序号小的在前. 这时我们可以通过定义cmp函数作为sort的参数进行排序. Solution ...
- uvalive 3213 Ancient Cipher
https://vjudge.net/problem/UVALive-3213 题意: 输入两个字符串,问是否可以由第一个字符串的每个字符一一映射得到第二个字符串,字符是可以随意移动的. 思路: 统计 ...
- POJ-2263 Heavy Cargo---最短路变形&&最小边的最大值
题目链接: https://vjudge.net/problem/POJ-2263 题目大意: 有n个城市,m条连接两个城市的道路,每条道路有自己的最大复载量.现在问从城市a到城市b,车上的最大载重能 ...
- 闭包(closure)
大牛的讲解,点击 我们首先需要有作用域的概念,点击 那么什么是闭包? 官方的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 广义上的 ...
- Protobuf java版本安装步骤
1,安装mavena.下载apache-maven-3.2.5,链接:http://mirrors.hust.edu.cn/apache//maven/maven-3/3.2.5/binaries/b ...
- CF 472 div1 D. Contact ATC
#include <algorithm> #include <cmath> #include <cstdio> #include <cstring> # ...
- 部署testlink报错,安装wampserver时提示丢失MSVCR110.dll
安装wampserver时提示丢失MSVCR110.dll(在windows server上可用)对于32位系统,安装Wampserver 后启动的时候提示系统错误:MSVCR110.dll丢失.于是 ...
- kafka知识体系
最近一直在整理kafka相关资料,以构建自己的知识体系. 主要分为五大方面: Kafka设计与原理分析 Kafka配置分析 Kafka运维手册 Kafka编程开发 kafka源码分析
- 从零开始系列之vue全家桶(3)安装使用vuex
什么是vuex? vuex:Vue提供的状态管理工具,用于同一管理我们项目中各种数据的交互和重用,存储我们需要用到数据对象. 即data中属性同时有一个或几个组件同时使用,就是data中共用的属性. ...
- JS 语言核心(JavaScript权威指南第六版)(阅读笔记)
前言: 对于程序员,学习是无止境的,知识淘换非常快,能够快速稳固掌握一门新技术,是一个程序员应该具备的素质.这里将分享本人一点点不成熟的心得. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思 ...