当前位置:网站首页>木棒
木棒
2022-07-29 16:00:00 【封子墨】
木棒
时间限制: 1 Sec 内存限制: 32 MB
题目描述现有n根木棒,已知它们的长度和重量。要用一部木工机一根一根地加工这些木棒。该机器在加工过程中需要一定的准备时间,是用于清洗机器,调整工具和模板的。木工机需要的准备时间如下:
(1)第一根木棒需要1min的准备时间;
(2)在加工了一根长为l,重为w的木棒之后,接着加工一根长为ll(l<=ll),重为ww(w<=ww)的木棒是不需要任何准备时间的。否则需要一分钟的准备时间。
给定n根木棒,你要找到最少的准备时间。例如现在有长和重分别为(4,9),(5,2),(2,1),(3,5)和(1,4)的五根木棒,那么所需准备时间最少为2min,顺序为(1,4),(3,5),(4,9),(2,1),(5,2)。输入输入包含多组测试数据。输入的第一行是一个整数T,表示测试数据的个数。
每个测试例两行:
第一行是一个整数n(1<=n<=5000),表示有多少根木棒;
第二行包括n*2个整数,表示了l1,w1,l2,w2,l3,w3,…,ln,wn,这些数均不大于10000,其中li和wi表示第i根木棒的长度和重量。输出输出以分钟为单位的最少准备时间。样例输入
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样例输出
2
1
3
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef struct stick {
int L;
int W;
int tag;
};
int cmp(stick a,stick b) {
if(a.L==b.L)
return a.W<=b.W;
else
return a.L<=b.L;
}
int main() {
int N;
scanf("%d",&N);
while(N--) {
int M;
scanf("%d",&M);
struct stick sti[M];
for(int i=0; i<M; i++) {
scanf("%d %d",&sti[i].L,&sti[i].W);
sti[i].tag=0;
}
sort(sti,sti+M,cmp);
int sum=0,l,w;
for(int i=0; i<M; i++) {
if(sti[i].tag==0) {
sti[i].tag=1;
sum++;
l=sti[i].L;
w=sti[i].W;
for(int j=0; j<M; j++) {
if(sti[j].tag==0&&sti[j].L>=l&&sti[j].W>=w) {
sti[j].tag=1;
l=sti[j].L;
w=sti[j].W;
}
}
}
}
printf("%d\n",sum);
}
return 0;
}
边栏推荐
猜你喜欢
随机推荐
上海移动基于亚信科技AntDB完成核心账务数据库的国产化替换
Linux environment redis complete configuration and startup command
节省70%的显存,训练速度提高2倍!浙大&阿里提出在线卷积重新参数化OREPA,代码已开源!(CVPR 2022 )...
mysql的union和union all
zabbix邮件发送告警信息
【软考软件评测师】自动化测试章节上篇
召回 i2i
Jenkins持续集成与自动化部署系统安装配置
Go语言结构体Go range怎么使用
Store Information Management System
58安全-图像质量评价技术实践
【服务器存储数据恢复】华为OceanStor某型号存储raid5硬盘故障离线,热备盘同步数据失败导致raid崩溃的数据恢复案例
Sentinel热门词汇限流如何实现
专访亚信科技张桦:AntDB面向企业核心业务支撑的数据库产品
任正非:华为绝不会出售终端手机业务!
sorting and searching 二分查找法
TensorFlow Serving 高性能的机器学习模型服务系统
PL5902 SOT-23-5 高效1MHz2A同步DC-DC降压调节器 百盛电子代理商
面试官:设计原则有哪些?什么是里式替换原则?
货比三家 tb1.3








