Codeforces 4D. Mysterious Present
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相关推荐
- Codeforces 4D Mysterious (DP)
Peter decided to wish happy birthday to his friend from Australia and send him a card. To make hi ...
- [CF4D]Mysterious Present
4D:Mysterious Present 题意简述 给出一个限制 >(w,h) >(w,h)和 n n个物品的二维信息(xi,yi)(x_i,y_i). 求物品二维都满足限制的前提下,最 ...
- CF4D D. Mysterious Present
做题链接: D. Mysterious Present 题目: 给出一个限制(w, h),和n个物品的二维信息(wi,hi)求物品二维都满足wi > w, hi > h的前提下的最长二维严 ...
- 2022.02.05 Mysterious Present神秘的礼物
https://acs.jxnu.edu.cn/problem/CF4D 描述: Peter decided to wish happy birthday to his friend from Aus ...
- 【CodeForces - 460C】Present(二分+树状数组)
题干: 给定N朵花的原先的高度,从左到右排列,最多浇水m天,每天只能浇一次,每次使得连续的w朵花的高度增长1,问最后最矮的花的高度最高是多少. Examples Input 6 2 3 2 2 2 2 ...
- Codeforces Beta Round #4 (Div. 2)【完结】
2022.3.3 题单地址:https://codeforces.com/contest/4 目录 A. Watermelon[思维] B. Before an Exam[贪心] C. Registr ...
- 杭电OJ分类题目(4)-Graph
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...
- ACM比赛经验、刷题记录及模板库总结(更新中)
前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...
- Codeforces Round #626 (Div. 2) D. Present 按位贡献 + 快排新姿势
传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的序列aaa,让你计算 n≤4e5,a≤1e7n\le 4e5,a\le 1e7n≤4e5,a≤1e7 思路: 首先这个式子是n2n^2n ...
- Codeforces Round #262 (Div. 2) 460C. Present(二分)
题目链接:http://codeforces.com/problemset/problem/460/C C. Present time limit per test 2 seconds memory ...
最新文章
- 201403-4 无线网络
- oracle异地迁移,数据泵实现Oracle数据迁移到异地库
- 【Socket网络编程】6.两个既能收也能发的udp客户端进行通信的原理
- 銷售訂單 (Sales Order): 資料表及更新記錄
- Java进阶:CyclicBarrier基本使用
- RedHat5.5_X64 Linux安装oracle 11.2.0.3 报错
- virtual多态 你不知道的事情
- 启动TOMCAT报错 java.util.zip.ZipException: invalid LOC header (bad signature)
- VC++ 进度条更新方案
- mysql中的concat和group_concat的用法
- linux设置定时关机命令,linux定时关机命令是什么?
- 消息队列原理及activeMQ基本知识点
- 微信小程序生成二维码工具类附带完整示例和源码
- stm32复位引脚NRST
- jenkins自动化部署
- Photoshop设计精讲笔记
- 【学习笔记】状态转移矩阵
- Django数据库连接池(mysql)
- The Home Depot - 家得宝
- 敏捷教练和专业教练有什么不同?
热门文章
- 数据库中了勒索病毒,怎么办?
- 圆和长方形周长相等谁的面积大_周长相等,正方形、长方形、圆形谁的面积最大?...
- win10设置开机默认开启数字小键盘2022
- php 获取xlsx,使用php读取xlsx文件
- C# OpenCv 证件照换底色
- java谷歌翻译_Java 调用 google 翻译
- 计算机添加usb网络打印机,电脑USB连接打印机怎么共享给别的电脑?
- cad插入块_CAD软件中图块无法分解怎么办?
- cad插入块_CAD中创建块,有一种最快捷的方式,看看你用过没?
- PCA降维-原理(一)