P1233 木棍加工
这道题要求,寻找的x,y,递减链的最少数目。由于没有排序,先按照x排个序(x相等时,按照y排序)这样就能由二维降到一维。
这样问题就变成,在排好序的序列中,寻找按照y递减的链的最少数目。
这里有一个定理,对于一个偏序问题,它的最少递增链的数目,等于最长递减子序列的长度。
于是题目就变成了寻找最长递增子序列。
还不会?动态规划————模板最长递增/公共子序列
#include<stdio.h>
#include<stdlib.h>
#define size 5005
struct tnode {
int x;
int y;
}all[size];
int cmpl(const void* _a, const void* _b) {
//比较
struct tnode* a = (struct tnode*)_a;