描述

C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果 第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木 棒处理完,你能告诉他应该怎样做吗?

输入
第一行是一个整数T(1<T<1500),表示输入数据一共有T组。
每组测试数据的第一行是一个整数N(1<=N<=5000),表示有N个木棒。接下来的一行分别输入N个木棒的L,W(0 < L ,W <= 10000),用一个空格隔开,分别表示木棒的长度和质量。
输出
处理这些木棒的最短时间。
样例输入
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
一开始我以为只要将长度和重量升序,然后找出当length[i]!=length[i-1]时,weight[i]<weight[i-1]然后count++,结果发现不是这样,1 4 2 1 3 5 4 9 5 2这样那就count为3
实际上顺序为1 4 3 5 4 9 2 1 5 2 属于贪心策略,尽量让每次加工的木棒多;这道题对时间有很高要求,选择排序不可行,选择快排sort;
 #include<stdio.h>/*WA*/
typedef struct
{
int length;
int weight;
}stick;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,i,j,count=,first=;
scanf("%d",&n);
stick a[n],t;
for(i=;i<n;i++)
scanf("%d%d",&a[i].length,&a[i].weight);
for(i=;i<n-;i++)
for(j=i+;j<n;j++)
{
if(a[i].length>a[j].length)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
for(i=;i<n-;i++)
for(j=i+;j<n;j++)
{
if((a[i].length==a[j].length)&&(a[i].weight>a[j].weight))
{
t=a[i];
a[i]=a[j];
a[j]=t;
} }
for(i=;i<n;i++)
printf("%d %d\n",a[i].length,a[i].weight);
for(i=;i<n;i++)
{
if((a[i].length!=a[i-].length)&&(a[i].weight<a[i-].weight))
count++;
}
if(first==)
{
printf("%d\n",count+);
first=;
}
else
printf("%d\n",count);
}
}
 #include<stdio.h>/*AC*/
#include<algorithm>
#include<string.h>/*memset函数将数组重置 memset(数组名,替换后元素,大小)*///大小一般为sizeof(数组名)(全部置换),sizeof(int)*n
using namespace std;
typedef struct
{
int length;
int weight;
}stick;
bool cmp(stick x,stick y)/*sort排序方式*/
{
if(x.length<y.length)
return true;
if(x.length==y.length&&x.weight<y.weight)
return true;
return false;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int count=,i,j,n,t;
scanf("%d",&n);
stick a[n];
memset(a,,sizeof(a));
for(i=;i<n;i++)
scanf("%d%d",&a[i].length,&a[i].weight);
sort(a,a+n,cmp);
for(i=;i<n;i++)/*第一个木棒所需时间就是机器打开时间*/
{
if(a[i].weight!=)/*贪心策略,每次尽量多的加工木棒!!*/
{
t=a[i].weight;
count++;
for(j=i+;j<n;j++)
{
if(a[j].weight>=t)
{
t=a[j].weight;
a[j].weight=;/*加工后的木棒质量置零*/
}
} } }
printf("%d\n",count);
}
}

最新文章

  1. ueditor 1.4.3 gbk asp 上传中文乱码 终极解决方法 ie6 ie8 也适用
  2. xpath轴的正确使用姿势
  3. 十分钟让你的javascript登峰造极
  4. AspNetPager 免费分页控件7.5.1版发布!
  5. Linux QtCreator设置mingw编译器生成windows程序
  6. Binder相关
  7. hdu 3481 3482
  8. 【邮件】imap与pop3的区别
  9. HTTP请求、响应报文格式
  10. 用Myeclipse 编写struts.xml时,自动提示
  11. 关于SQL中数据类型(float和real)和 .NET Framework 中数据类型(float和double)的问题
  12. 《第一行代码》学习笔记11-活动Activity(9)
  13. 使用Supervisor守护Python进程
  14. 芯灵思Sinlinx A64开发板设置qt程序自启动
  15. numpy ndarray求其最值的索引
  16. 大数据小白系列——HDFS(1)
  17. hdu 1828 Picture(线段树扫描线矩形周长并)
  18. 16个PHP设计模式详解
  19. Eclipse maven 错误修正方法:An error occurred while filtering resources
  20. Django-模板语言和过滤器

热门文章

  1. UITableView属性和方法
  2. WINAPI大全~
  3. Windows PowerShell是啥?看完本文你就懂它了
  4. Intent.ACTION_TIME_TICK 广播
  5. IOS回调机制——代理,通知中心以及Block
  6. 在Struts2中集成Spring详细讲解
  7. 关于Microsoft app下同义词的整理
  8. juicer模板引擎使用
  9. CF 567C Geometric Progression
  10. 我的Android进阶之旅------&gt;Android拍照小例子