TOJ 1469.Wooden Sticks
2016-07-14 21:54
288 查看
题目链接
这道题很容易就能想到用贪心算法,而且算法思想也比较简单。不过通过这道题我学到了一下几点,分享一下:
复习一下结构体的定义:
用sort函数对结构体排序时,注意灵活使用cmp来定义排序规则,比如本题通过使用cmp定义了双标准排序规则:先根据x升序排,然后根据y升序排。
这道题很容易就能想到用贪心算法,而且算法思想也比较简单。不过通过这道题我学到了一下几点,分享一下:
复习一下结构体的定义:
typedef struct Node
用sort函数对结构体排序时,注意灵活使用cmp来定义排序规则,比如本题通过使用cmp定义了双标准排序规则:先根据x升序排,然后根据y升序排。
#include <stdio.h> #include <algorithm> #include <cstring> using namespace std; typedef struct Node { int x,y; }sticks; int cmp (Node a,Node b) { if (a.x==b.x) return a.y<b.y; return a.x<b.x; } Node node[5005]; int flag[5005]; int main() { int count,num; scanf("%d",&count); for(int counttag=0;counttag<count;counttag++) { scanf("%d",&num); for(int i=0;i<num;i++) scanf("%d%d",&node[i].x,&node[i].y); sort(node,node+num,cmp); memset(flag,0,sizeof(flag)); int ans=0; for(int i=0;i<num;i++) { if(flag[i]==0){ int tag=node[i].y; for(int j=i;j<num;j++){ if(flag[j]==0 && node[j].y>=tag){ tag = node[j].y; flag[j]++; } } ans++; } } printf("%d\n",ans); } }