【贪心】LIS @The 15th Zhejiang Provincial Collegiate Programming Contest E
题意要你构造一个序列,使得该序列的每个位置上的最长上升子序列的长度能构成给定的序列。
构造序列的元素要求还要求满足给定的上下界
solution
我们可以把给出的最长上升子序列的长度按升序排列,长度相同的按下标降序排列。
排完序后第一个数可以贪心的取其下界,同一层(即长度相同)的下标小的取值应该大于等于下标较大的取值
同时取值应该大于前一层下标最大且小于该位置的数
#define IN_LB() freopen("F:\\in.txt","r",stdin)
#define IN_PC() freopen("C:\\Users\\hz\\Desktop\\in.txt","r",stdin)
#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
struct node {
int ind,ceil,d,u;
int ans;
} nd[maxn];
bool cmp(node a,node b) {
if(a.ceil==b.ceil)return a.ind>b.ind;
return a.ceil<b.ceil;
}
bool cmp1(node a,node b) {
return a.ind<b.ind;
}
struct qnode{
int yuanind,xianind,ceil;
};
queue <qnode> que;
int main() {
// IN_LB();
int T;
scanf("%d",&T);
while(T--) {
int n;
scanf("%d",&n);
for(int i=0; i<n; i++) {
nd[i].ind = i;
scanf("%d",&nd[i].ceil);
}
for(int i=0; i<n; i++) {
scanf("%d%d",&nd[i].d,&nd[i].u);
}
sort(nd,nd+n,cmp);
nd[0].ans = nd[0].d;
qnode seed;
seed.yuanind = nd[0].ind;
seed.xianind = 0;
seed.ceil = 1;
while(!que.empty())que.pop();
que.push(seed);
for(int i=1; i<n; i++) {
if(nd[i].ceil==nd[i-1].ceil) {
if(nd[i].ceil>1){
int exind;
while(!que.empty()) {
if(que.front().yuanind<nd[i].ind) {
exind = que.front().xianind;
break;
}
que.pop();
}
nd[i].ans = max(max(nd[exind].ans+1,nd[i-1].ans),nd[i].d);
}
else nd[i].ans = max(nd[i-1].ans,nd[i].d);
qnode cur;
cur.yuanind = nd[i].ind;
cur.xianind = i;
cur.ceil = nd[i].ceil;
que.push(cur);
} else {
int exind;
while(!que.empty()) {
if(que.front().ceil==nd[i].ceil-1&&que.front().yuanind<nd[i].ind) {
exind = que.front().xianind;
break;
}
que.pop();
}
nd[i].ans = max(nd[exind].ans+1,nd[i].d);
qnode cur;
cur.yuanind = nd[i].ind;
cur.xianind = i;
cur.ceil = nd[i].ceil;
que.push(cur);
}
}
sort(nd,nd+n,cmp1);
for(int i=0; i<n; i++) {
printf("%d%s",nd[i].ans,(i==n-1)?"\n":" ");
}
}
return 0;
}
【贪心】LIS @The 15th Zhejiang Provincial Collegiate Programming Contest E的更多相关文章
- 2018浙江省赛(ACM) The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple
我是铁牌选手 这次比赛非常得爆炸,可以说体验极差,是这辈子自己最脑残的事情之一. 天时,地利,人和一样没有,而且自己早早地就想好了甩锅的套路. 按理说不开K就不会这么惨了啊,而且自己也是毒,不知道段错 ...
- The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple - L Doki Doki Literature Club
Doki Doki Literature Club Time Limit: 1 Second Memory Limit: 65536 KB Doki Doki Literature Club ...
- The 15th Zhejiang Provincial Collegiate Programming Contest(部分题解)
ZOJ 4024 Peak 题意 给出n和n个数,判断该数列是否是凸形的. 解题思路 从前往后第一对逆序数,和从后往前第一队逆序数,如果都非零而且相邻,证明该数组是凸形的. 代码 #include & ...
- The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple - M Lucky 7
Lucky 7 Time Limit: 1 Second Memory Limit: 65536 KB BaoBao has just found a positive integer se ...
- The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple - J CONTINUE...?
CONTINUE...? Time Limit: 1 Second Memory Limit: 65536 KB Special Judge DreamGrid has clas ...
- The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple - B King of Karaoke
King of Karaoke Time Limit: 1 Second Memory Limit: 65536 KB It's Karaoke time! DreamGrid is per ...
- The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple -A Peak
Peak Time Limit: 1 Second Memory Limit: 65536 KB A sequence of integers is called a peak, if ...
- ZOJ 4033 CONTINUE...?(The 15th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple)
#include <iostream> #include <algorithm> using namespace std; ; int a[maxn]; int main(){ ...
- zoj The 12th Zhejiang Provincial Collegiate Programming Contest Capture the Flag
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5503 The 12th Zhejiang Provincial ...
随机推荐
- 10本Java架构师必读书籍
1.大型网站系统与JAVA中间件实践 本书围绕大型网站和支撑大型网站架构的Java中间件的实践展开介绍. 从分布式系统的知识切入,让读者对分布式系统有基本的了解:然后介绍大型网站随着数据量.访问量增长 ...
- 分布式系统的BASE理论
一.BASE理论 eBay的架构师Dan Pritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论,BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(St ...
- centos6.5上安装redis3.2.1遇见的坑
解决方法: 安装gcc即可解决 解决方法: make MALLOC=libc 原因分析: 说关于分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redi ...
- sendfile
Sendfile 函数在两个文件描写叙述符之间直接传递数据(全然在内核中操作,传送),从而避免了内核缓冲区数据和用户缓冲区数据之间的拷贝,操作效率非常高,被称之为零拷贝. Sendfile 函数的定义 ...
- JavaMelody 项目性能监控和调优工具
转自 JavaMelody 可以实现对内存.CPU.线程.JDBC 连接数.HTTP 请求执行时间.SQL 执行时间(分析 Top SQL).方法执行时间(分析系统方法性能瓶颈)等等的监控. 配置方式 ...
- loadrunner之运行方式:线程还是进程?
loadrunner controller将使用驱动程序mmdrv运行Vuser. 用户可以在controller的run-time setting中选择Vuser的运行方式: 是多进程方式还是多线程 ...
- rest模式get,post,put,delete简单讲解
1.请求方法为get时,会向数据库请求数据,类似于select语言,只能达到查询的效果,不会添加,修改,不会影响资源的内容,无副作用 2.请求方法为post时,该方法,用于向服务器添加数据,可以改变数 ...
- svn图标的含义
http://www.cnblogs.com/genhaosan/articles/5129791.html
- ES2018正则表达式更新
如果你是一个初学者,这篇文章可以拓展你对正则表达式用法的理解,不过建议你先阅读一些正则表达式入门文章,比如经典的<正则表达式30分钟入门教程>.如果你对正则表达式有一定的认识,那么这篇文章 ...
- checkbox、radio设置自定义样式
老生常谈,做一个简单的记录.浏览器自带的checkbox和radio样式可能不符合项目要求,通常要做一些自定义样式设置,目前基本的解决思路都是将input[type=checkbox/radio]隐藏 ...