当前位置: 首页 > news >正文

【BZOJ1046】上升序列(动态规划,贪心)

【BZOJ1046】上升序列(动态规划,贪心)

题面

BZOJ
洛谷

题解

我一开始看错题了,一度以为是字典序最小的序列。
最后发现它要求的字典序是位置的字典序最小。
那就很好办了。
\(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;
}

转载于:https://www.cnblogs.com/cjyyb/p/9445253.html

相关文章:

  • java离线api_Oracle官网下载Java的api离线文档
  • Bzoj5296: [Cqoi2018]破解D-H协议
  • java归并_java归并排序
  • java string的实现_string类的实现
  • ant design 中,使用dva/fetch 设置导致无法从后台导出excel的问题
  • python引用计数实例_Python中的引用计数法
  • LoadRunner Vuser接口测试脚本 Post举例
  • java 类的继承_Java:类与继承
  • 浅谈对象的复制拷贝
  • java官方网站下载_java下载 7.0 官方版
  • asp.net的% %特定用法
  • java代码shiro注解_java相关:Shiro集成Spring之注解示例详解
  • Oracle Shared Pool机制之——Latches, Locks, Pins and Mutexes
  • java生成apk工具_用Android SDK Build Tools手动构建APK
  • C++常用数据类型
  • [译]如何构建服务器端web组件,为何要构建?
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • chrome扩展demo1-小时钟
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • JavaScript设计模式之工厂模式
  • js操作时间(持续更新)
  • ng6--错误信息小结(持续更新)
  • vue学习系列(二)vue-cli
  • Web Storage相关
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • ------- 计算机网络基础
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • k8s使用glusterfs实现动态持久化存储
  • 从如何停掉 Promise 链说起
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #include
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (七)理解angular中的module和injector,即依赖注入
  • (算法)前K大的和
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转载)Linux 多线程条件变量同步
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET 回调、接口回调、 委托
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET命令行(CLI)常用命令
  • .vue文件怎么使用_我在项目中是这样配置Vue的