Codeforces 4D. Mysterious Present

传送门:https://codeforces.com/problemset/problem/4/D

提醒自己:
这个排序前面已经说过了,主要要记住的是如何对一个链条反向输出:就是利用函数,把输出放在迭代后面。

题目大意:
其实就是你有一封信和n个信封后面接型号,问你最多可以包几个信封。

主要想法:
这是一个dp题。
这个数据是比较小的,从理论上来说,这个直接暴力是不会T的,这个也的确没有。
可能是受我做的上个题(Codeforces 754D,文尾附链接)的影响我第一个反应就是先对行排了个序。这样做到后面也的确产生了一定的好处,就是可以少算几次。我们从最小的开始算起,每一个的dp等于比它小的信封的dp中的最大值加1。同时我们顺便记录它这个dp从哪来。然后我们就得到了最大的dp,输出。接着是输出次序,我们本来已经记住了这个次序,但很遗憾,它反了。本来我想的是可以开个新数组接着。但写到一半,我想起上次看一个优先队列的题,有个人反向输出用的是函数迭代,然后就套用了一下。

 代码实现:
#include <bits/stdc++.h>using namespace std;
typedef struct node
{int x,y,z;
}NODE;
bool cmp(NODE a,NODE b)
{if(a.x==b.x)return a.y<b.y;return a.x<b.x;
}
vector<NODE>a;
vector<int>b(5050,1),c;
void f1(int i)
{c.push_back(-1);int j;for(j=0;j<i;j++){if(a[j].x<a[i].x&&a[j].y<a[i].y){if(b[i]<b[j]+1){b[i]=b[j]+1;c[i]=j;}}}
}
void f2(int m)
{if(m==-1)return;f2(c[m]);cout<<a[m].z+1<<' ';
}
int main()
{int n,d,e,f,g,l,i,m;cin>>n>>d>>e;for(i=0;i<n;i++){scanf("%d%d",&f,&g);if(f>d&&g>e){a.push_back({f,g,i});}}l=a.size();if(l==0){cout<<0<<endl;return 0;}sort(a.begin(),a.end(),cmp);for(i=0;i<l;i++){f1(i);}m=max_element(b.begin(),b.begin()+1+l)-b.begin();cout<<b[m]<<endl;f2(m);return 0;
}

最后补个754D的链接:
https://blog.csdn.net/ydfy_/article/details/98728256

Codeforces 4D. Mysterious Present相关推荐

  1. Codeforces 4D Mysterious (DP)

     Peter decided to wish happy birthday to his friend from Australia and send him a card. To make hi ...

  2. [CF4D]Mysterious Present

    4D:Mysterious Present 题意简述 给出一个限制 >(w,h) >(w,h)和 n n个物品的二维信息(xi,yi)(x_i,y_i). 求物品二维都满足限制的前提下,最 ...

  3. CF4D D. Mysterious Present

    做题链接: D. Mysterious Present 题目: 给出一个限制(w, h),和n个物品的二维信息(wi,hi)求物品二维都满足wi > w, hi > h的前提下的最长二维严 ...

  4. 2022.02.05 Mysterious Present神秘的礼物

    https://acs.jxnu.edu.cn/problem/CF4D 描述: Peter decided to wish happy birthday to his friend from Aus ...

  5. 【CodeForces - 460C】Present(二分+树状数组)

    题干: 给定N朵花的原先的高度,从左到右排列,最多浇水m天,每天只能浇一次,每次使得连续的w朵花的高度增长1,问最后最矮的花的高度最高是多少. Examples Input 6 2 3 2 2 2 2 ...

  6. Codeforces Beta Round #4 (Div. 2)【完结】

    2022.3.3 题单地址:https://codeforces.com/contest/4 目录 A. Watermelon[思维] B. Before an Exam[贪心] C. Registr ...

  7. 杭电OJ分类题目(4)-Graph

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...

  8. ACM比赛经验、刷题记录及模板库总结(更新中)

    前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...

  9. Codeforces Round #626 (Div. 2) D. Present 按位贡献 + 快排新姿势

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的序列aaa,让你计算 n≤4e5,a≤1e7n\le 4e5,a\le 1e7n≤4e5,a≤1e7 思路: 首先这个式子是n2n^2n ...

  10. Codeforces Round #262 (Div. 2) 460C. Present(二分)

    题目链接:http://codeforces.com/problemset/problem/460/C C. Present time limit per test 2 seconds memory ...

最新文章

  1. 201403-4 无线网络
  2. oracle异地迁移,数据泵实现Oracle数据迁移到异地库
  3. 【Socket网络编程】6.两个既能收也能发的udp客户端进行通信的原理
  4. 銷售訂單 (Sales Order): 資料表及更新記錄
  5. Java进阶:CyclicBarrier基本使用
  6. RedHat5.5_X64 Linux安装oracle 11.2.0.3 报错
  7. virtual多态 你不知道的事情
  8. 启动TOMCAT报错 java.util.zip.ZipException: invalid LOC header (bad signature)
  9. VC++ 进度条更新方案
  10. mysql中的concat和group_concat的用法
  11. linux设置定时关机命令,linux定时关机命令是什么?
  12. 消息队列原理及activeMQ基本知识点
  13. 微信小程序生成二维码工具类附带完整示例和源码
  14. stm32复位引脚NRST
  15. jenkins自动化部署
  16. Photoshop设计精讲笔记
  17. 【学习笔记】状态转移矩阵
  18. Django数据库连接池(mysql)
  19. The Home Depot - 家得宝
  20. 敏捷教练和专业教练有什么不同?

热门文章

  1. 数据库中了勒索病毒,怎么办?
  2. 圆和长方形周长相等谁的面积大_周长相等,正方形、长方形、圆形谁的面积最大?...
  3. win10设置开机默认开启数字小键盘2022
  4. php 获取xlsx,使用php读取xlsx文件
  5. C# OpenCv 证件照换底色
  6. java谷歌翻译_Java 调用 google 翻译
  7. 计算机添加usb网络打印机,电脑USB连接打印机怎么共享给别的电脑?
  8. cad插入块_CAD软件中图块无法分解怎么办?
  9. cad插入块_CAD中创建块,有一种最快捷的方式,看看你用过没?
  10. PCA降维-原理(一)