codeforces 4D. Mysterious Present
来源:互联网 发布:excel vba 定义数组 编辑:程序博客网 时间:2024/06/05 10:50
Peter decided to wish happy birthday to his friend from Australia and send him a card. To make his present more mysterious, he decided to make a chain. Chain here is such a sequence of envelopes A = {a1, a2, ..., an}, where the width and the height of the i-th envelope is strictly higher than the width and the height of the (i - 1)-th envelope respectively. Chain size is the number of envelopes in the chain.
Peter wants to make the chain of the maximum size from the envelopes he has, the chain should be such, that he'll be able to put a card into it. The card fits into the chain if its width and height is lower than the width and the height of the smallest envelope in the chain respectively. It's forbidden to turn the card and the envelopes.
Peter has very many envelopes and very little time, this hard task is entrusted to you.
The first line contains integers n, w, h (1 ≤ n ≤ 5000, 1 ≤ w, h ≤ 106) — amount of envelopes Peter has, the card width and height respectively. Then there follow n lines, each of them contains two integer numbers wi and hi — width and height of the i-th envelope (1 ≤ wi, hi ≤ 106).
In the first line print the maximum chain size. In the second line print the numbers of the envelopes (separated by space), forming the required chain, starting with the number of the smallest envelope. Remember, please, that the card should fit into the smallest envelope. If the chain of maximum size is not unique, print any of the answers.
If the card does not fit into any of the envelopes, print number 0 in the single line.
2 1 12 22 2
11
3 3 35 412 119 8
31 3 2
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <sstream>#include <vector>#include <queue>#include <set>#include <map>#include <ctime>#define MAXN 1000 #define offset 10000 #define eps 1e-11 #define PI acos(-1.0)//3.14159265358979323846 #define exp 2.718281828#define mod 1000000007using namespace std;typedef long long LL;struct envelop{int w,h;int num;};bool cmp(envelop e1,envelop e2){return e1.w<e2.w;}int main(){int n,cw,ch;scanf("%d%d%d",&n,&cw,&ch);envelop e[5005];for(int i = 0;i<n;i++){scanf("%d%d",&e[i].w,&e[i].h);e[i].num = (i+1);if(e[i].w <= cw || e[i].h <= ch){e[i].num = -2;}}sort(e,e+n,cmp);int dp[5005];dp[0] = 1;int wz[5005];wz[0] = -1;for(int i = 1;i<n;i++){ int j = -1; int maxdp = 0; for(int k = i-1;k>=0;k--){ if(dp[k] >= maxdp && (e[k].w < e[i].w && e[k].h<e[i].h) &&e[k].num != -2){maxdp = dp[k];j = k; } }if(j < 0 || e[j].num == -2){dp[i] = 1;wz[i] = -1;}else{dp[i] = dp[j] + 1;wz[i] = j;}}int maxx = 0;int flag = -1;for(int i = 0;i<n;i++){maxx = max(maxx,dp[i]);if(maxx == dp[i] && e[i].num != -2){flag = i;}} vector<int> v;while(flag != -1){if(e[flag].num != -2){v.push_back(e[flag].num);}flag = wz[flag];}printf("%d\n",v.size());if(v.size() > 0){printf("%d",v[v.size()-1]);for(int i = v.size()-2;i>=0;i--){printf(" %d",v[i]);}printf("\n");}return 0;}
- codeforces 4D. Mysterious Present
- codeforces 4D Mysterious Present
- Codeforces 4D. Mysterious Present
- codeforces 4D. Mysterious Present
- CodeForces 4D. Mysterious Present
- codeforces 4D Mysterious Present
- CodeForces 4D-Mysterious Present
- Codeforces#4D Mysterious Present
- Codeforces 4D Mysterious Present
- codeforces 4D D. Mysterious Present(dp)
- codeforces 4D Mysterious Present -- 动态规划
- CodeForces 4D Mysterious Present(DP)
- Codeforces Beta Round #4 (Div. 2 Only)D. Mysterious Present
- Codeforces Beta Round #4 (Div. 2 Only) D. Mysterious Present
- CF 4D Mysterious Present
- CF 4D Mysterious Present
- CF 4 D. Mysterious Present
- Codeforce 4D - Mysterious Present
- 张爱玲的 因为懂得,所以慈悲 如何理解
- javascript对象章节学习第二部分
- 安装配置初始化MySQL 5.5.39(二进制软件包版)
- 搭建自己的Git服务器失败了
- 搭建LAMP环境_mac使用php和mysql通信
- codeforces 4D. Mysterious Present
- MongoDB3.0正式版已发布!
- 数据结构--最大子序列和(使用分治策略和递归)
- oracle硬解析、软解析、软软解析
- win8系统的电脑重装win7要注意的地方
- poj-1661 Help Jimmy 【DP】
- 2015.02.08关于开机启动字符界面以及切换图形界面的方法
- android 应用中加入支付功能(支付宝集成)
- 8.case语句