Wooden Sticks
来源:互联网 发布:修罗场是什么意思网络 编辑:程序博客网 时间:2024/05/18 12:04
题目链接:http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1§ionid=3&problemid=16
方法:贪心算法,多参数排序
思路:木棒拥有两个参数,因此需要用结构体变量来表示木棒,并对木棒按照长度进行排序,若长度相同,则按照重量排序。排序完成后,需要对其进行扫描,每次扫描找出最长的不减序列。
难点:扫描最长不减序列,注意这里凡是未经标记的木棒并不是没有使用的木棒,而是以此木棒开始产生的一个不减序列,因此统计没有标记的木棒数目就是有几个这样的序列,也就是所需要开机的次数,即答案。
#include<cstdio>#include<algorithm>#define N 5010using namespace std;struct stick{ int length; int weight;}s[N];bool cmp(stick a,stick b){ if (a.length==b.length) return a.weight<b.weight; return a.length<b.length;}int main(){ int t,n; int i,j; while(~scanf("%d",&t)) { while(t--) { scanf("%d",&n); for (i = 0;i < n;i++) { scanf("%d%d",&s[i].length,&s[i].weight); } sort(s,s+n,cmp); int mark[N] = {0}; for (i = 0;i < n;i++) { int id = i; for(j = i+1;j < n;j++) { if(mark[i]) continue; if(s[j].length>=s[id].length&&s[j].weight>=s[id].weight&&!mark[j]) { mark[j] = 1; id = j; } } } int num = 0; for(i = 0;i < n;i++) { if(mark[i]!=1) num++; } printf("%d\n",num); } }}
0 0
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Quick-Cocos2d-x初学者游戏教程(一)
- 安卓使用ImageView显示OpenCV-Mat
- django静态文件配置
- 程序员如何爱护自己的眼睛
- django静态文件配置
- Wooden Sticks
- *POJ 3417 - Network(LCA + 树形DP)
- 在web.xml中classpath和classpath*的区别。/与/*的区别
- 1.webservice及其简单应用!
- django静态文件配置
- 鸟哥私房菜学习笔记三
- django静态文件配置
- django静态文件配置
- Android当无线鼠标,通过蓝牙与pc通信,pc端用java写