您的位置:首页 > Web前端

CODEFORCES 270D Greenhouse Effect <求最长递增子序列长度的对立事件>

2016-07-14 15:11 465 查看
题目:http://codeforces.com/problemset/problem/270/D

题意:温室里要种植植物,物种编号大的要在编号小的右边,如果有大的编号在小的的编号的左边可以把大的编号移到最后面。求需要移动最小的植物数量?

分析:算出使得满足上升序的最大长度,用总量减去长度就是结果。。。很好懂的。。。而那植物的距离已经不需要用(题目已经说过,距离呈递增的顺序的输出。。。。无需担忧)

Input
3 2
2 1
1 2.0
1 3.100


Output
1


#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int m,n,r = 0;
int num[5005],d[5005];
double x;
//int  pre = 0;
scanf("%d %d",&m,&n);
memset(num,0,sizeof(num));
for(int i=1;i<=m;i++)
{
scanf("%d %lf",&num[i],&x);
d[i] = -1;
}
d[1] = 0;
for(int i =1;i<=m;i++)
for(int j =1;j<=n;j++)
{
d[j+1] = max(d[j+1],d[j]);
d[j] += (num[i] == j);
r = max(r,d[j]);
}
printf("%d\n",m-r);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: