【BZOJ1046】上升序列(动态规划,贪心)
【BZOJ1046】上升序列(动态规划,贪心)
题面
题解
我一开始看错题了,一度以为是字典序最小的序列。
最后发现它要求的字典序是位置的字典序最小。
那就很好办了。
设\(f[i]\)表示以\(i\)开头的\(LIS\)长度,用\(BIT\)转移。
然后每次询问暴力贪心即可。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define ll long long
#define MAX 10100
inline int read()
{
int x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
int f[MAX],n,a[MAX],c[MAX],S[MAX],len,ans;
int lb(int x){return x&(-x);}
void add(int x,int w){while(x<=len)c[x]=max(c[x],w),x+=lb(x);}
int Query(int x){int ret=0;while(x)ret=max(ret,c[x]),x-=lb(x);return ret;}
int main()
{
n=read();
for(int i=1;i<=n;++i)S[i]=a[i]=read();
sort(&S[1],&S[n+1]);len=unique(&S[1],&S[n+1])-S-1;
for(int i=1;i<=n;++i)a[i]=lower_bound(&S[1],&S[len+1],a[i])-S;
for(int i=n;i>=1;--i)add(len-a[i]+1,f[i]=Query(len-a[i])+1);
for(int i=1;i<=n;++i)ans=max(ans,f[i]);
int m=read();
while(m--)
{
int k=read();
if(k>ans){puts("Impossible");continue;}
for(int i=1,lt=0;i<=n&&k;++i)
if(a[i]>lt&&f[i]>=k)
printf("%d ",S[lt=a[i]]),--k;
puts("");
}
return 0;
}
【BZOJ1046】上升序列(动态规划,贪心)的更多相关文章
- 【BZOJ-1046】上升序列 DP + 贪心
1046: [HAOI2007]上升序列 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3723 Solved: 1271[Submit][Stat ...
- [BZOJ1046][HAOI2007]上升序列 DP+贪心
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1046 我们先求出对于每一个数字作为开头的LCS的长度f[i],最长的f[i]为mxlen. ...
- hdu 1257 最少拦截系统(动态规划 / 贪心)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- 【NLP】选择目标序列:贪心搜索和Beam search
构建seq2seq模型,并训练完成后,我们只要将源句子输入进训练好的模型,执行一次前向传播就能得到目标句子,但是值得注意的是: seq2seq模型的decoder部分实际上相当于一个语言模型,相比于R ...
- BZOJ5092 分割序列(贪心)
设si为该序列的异或前缀和,则显然相当于求Σmax{sj+sj^si} (i=1~n,j=0~i).从高位到低位考虑,如果该位si为1,无论sj怎么填都是一样的:如果该位si为0,则sj该位应尽量为1 ...
- BZOJ:5092 [Lydsy1711月赛]分割序列(贪心&高维前缀和)
Description 对于一个长度为n的非负整数序列b_1,b_2,...,b_n,定义这个序列的能量为:f(b)=max{i=0,1,...,n}((b_1 xor b _2 xor...xor ...
- 洛谷P2127 序列排序 [贪心]
题目传送门 题目描述 小C有一个N个数的整数序列,这个序列的中的数两两不同.小C每次可以交换序列中的任意两个数,代价为这两个数之和.小C希望将整个序列升序排序,问小C需要的最小代价是多少? 输入输出格 ...
- 2019 Multi-University Training Contest 1 String(序列自动机+贪心)
题意 链接:https://vjudge.net/problem/HDU-6586 给你一个字符串和k,还有每个字符出现次数的限制,求一个长度为k的字典序最小的满足限制的子序列. 思路 先构造出序列自 ...
- P4393 [BOI2007]Sequence 序列问题[贪心]
题目描述 对于一个给定的序列a1, -, an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用一个元素max(ai,ai+1)替代,这样得到一个比原来序列短的新序列.这一 ...
- 洛谷P1095守望者的逃离题解-伪动态规划/贪心
链接 题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很 ...
随机推荐
- 学习python,第二篇
注释 # 单行注释 ''' 多行注释 ''' 或者 """ 多行注释 """ # Author: Itxpl mag ...
- STUN, TURN, ICE介绍
STUN STUN协议为终端提供一种方式能够获知自己经过NAT映射后的地址,从而替代位于应用层中的私网地址,达到NAT穿透的目的.STUN协议是典型的Client-Server协议,各种具体应用通过嵌 ...
- ActiveMQ笔记:管理和监控
ActiveMQ提供了比较丰富的监控和管理工具.在ActiveMQ的网页里(http://activemq.apache.org/how-can-i-monitor-activemq.html)提到了 ...
- Tree - Information Theory
This will be a series of post about Tree model and relevant ensemble method, including but not limit ...
- Erlang的调度原理(译文)
原文 http://jlouisramblings.blogspot.com/2013/01/how-erlang-does-scheduling.html 免爬墙链接 http://www.diku ...
- 使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)
1,根据数据库类型拼接不同URL /** * 根据类型不同拼接连接的URL * @param dbType 1:mysql.2:oracle.3:sql server.4:gp * @param ip ...
- 20172324《Java程序设计》第二周学习总结
20172324<Java程序设计>第2周学习总结 教材学习内容总结 了解了字符串及其拼接和转义序列的使用. Java的基本数据类型. 定义数据转换类型和实现其转换的方法. Scanner ...
- 第二阶段Sprint冲刺会议8
进展:重新规划主界面,把视频录制暂放到主页面里,先实现功能,视频提醒后期再做.
- poi读取、通过poi导出数据库的记录到excl表
package com.nt.test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFo ...
- Hibernate的使用技巧②
1.Hibernate统计记录的数量 Criteria c = session.createCriteria(User.class.getName()); c.setProjection ...