这算哪门子dp..

具体做法就是贪心,建立两个vector存递增序列递减序列,操作过程中a可以合法地匀一个给b

就是判断第i个数放在递增序列里还是放在递减序列里,需要根据后面的数来进行决策

#include<bits/stdc++.h>
#define ll long long
#define P pair<ll,ll>
#define mp make_pair
#define fi first
#define se second
#define N 200100
using namespace std; ll n,m,num[N],sy[N];
vector<P>a,b; int main()
{
ll i,j,p,q;
cin>>n;
for(i=;i<=n;i++) scanf("%lld",&num[i]);
a.push_back(mp(-,));
b.push_back(mp(N,));
for(i=;i<=n;i++)
{
if(num[i]<=a.back().fi&&num[i]>=b.back().fi)
{
puts("NO");
return ;
}
if(num[i]>a.back().fi)
{
sy[i]=;
a.push_back(mp(num[i],i));
continue;
}
if(a.back().fi<b.back().fi&&a.back().se>b.back().se)
{
sy[a.back().se]=;
b.push_back(a.back());
a.pop_back();
}
if(num[i]>a.back().fi)
{
sy[i]=;
a.push_back(mp(num[i],i));
continue;
}
if(num[i]<b.back().fi)
{
sy[i]=;
b.push_back(mp(num[i],i));
continue;
}
puts("NO");
return ;
}
puts("YES");
for(i=;i<=n;i++) printf("%lld ",sy[i]);
}

cf1144G 将串分解成单调递增和递减子串(贪心)的更多相关文章

  1. [C++] 动态规划之矩阵连乘、最长公共子序列、最大子段和、最长单调递增子序列、0-1背包

    一.动态规划的基本思想 动态规划算法通常用于求解具有某种最优性质的问题.在这类问题中,可能会有许多可行解.每一个解都对应于一个值,我们希望找到具有最优值的解. 将待求解问题分解成若干个子问题,先求解子 ...

  2. NYOJ17,单调递增最长子序列

    单调递增最长子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描写叙述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf.长度为4 输入 第 ...

  3. nyoj 单调递增子序列(二)

    单调递增子序列(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长 ...

  4. [LeetCode] 926. Flip String to Monotone Increasing 翻转字符串到单调递增

    A string of '0's and '1's is monotone increasing if it consists of some number of '0's (possibly 0), ...

  5. 【LeetCode】738. 单调递增的数字

    738. 单调递增的数字 知识点:字符串:贪心 题目描述 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x ...

  6. 萌新笔记——C++里将string类字符串(utf-8编码)分解成单个字(可中英混输)

    最近在建词典,使用Trie字典树,需要把字符串分解成单个字.由于传入的字符串中可能包含中文或者英文,它们的字节数并不相同.一开始天真地认为中文就是两个字节,于是很happy地直接判断当前位置的字符的A ...

  7. 将形如:Oct 8, 2016 5:29:44 PM串转换成正常时间在真机上遇到的坑

    将形如:Oct 8, 2016 5:29:44 PM串转换成正常时间在真机上遇到的坑 /** * 根据传入字符串 * * @param str 传入的日期字符串 形如:Oct 8, 2016 5:29 ...

  8. 百度在线笔试编程测试题(Python):整数分解成素数的积

    编程测试题: 输入一个正整数将其分解成素数的乘积,输入格式连续输入m个数,然后将这m个数分别分解,如 输入: 2 10 20 输出: 2 5 2 2 5 Python code: def primes ...

  9. 使用List把一个长字符串分解成若干个短字符串

    把一个长字符串分解成若干个固定长度的短字符串,由于事先不知道长字符串的长度,以及短字符串的数量,只能使用List. public static void get_list_sbody(String s ...

随机推荐

  1. IntelliJ IDEA执行maven 跳过test

  2. Linux 学大纲

  3. redis设置开机自启

    开机自启动redis(其他服务类似) centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvini ...

  4. php编程 之 php进阶练习

    1,php的date相关操作: PHP date() 函数可把时间戳格式化为可读性更好的日期和时间. <?php echo date("Y/m/d") . "< ...

  5. CF1091E New Year and the Acquaintance Estimation

    题目地址:CF1091E New Year and the Acquaintance Estimation 首先,易知 \(ans\) 的奇偶性与所有给出的数的和的奇偶性相同 其次,易证 \(ans\ ...

  6. 【转】MySQL— 基础

    [转]MySQL— 基础 目录 一.MySQL概述 二.下载安装 三.数据库操作 四.数据表操作 五.表内容操作 一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司 ...

  7. 关于dubbo服务超时的讨论

    呵呵,偷点懒,直接把QQ上的讨论发下来. huxin  10:35:19你们现在超时了是咋办的,首先超时了,回复用户肯定是要的 huxin  10:36:14超时了用户实际是不知道这业务是成功还失败了 ...

  8. ES6学习笔记八(module模块export)

    1.导出export,导入import组合 知识点1:导出export lesson2.js export let A=; export function test(){ console.log('t ...

  9. linux虚拟机网络服务问题

    这里说一下我遇到的一个网络问题,前天修改了虚拟机的主机名,重启虚拟机之后,使用新的主机名和IP都可以访问虚拟机,但昨天开启虚拟机之后,宿主机使用主机名和IP都不能访问虚拟机,于是,我通过ifconfi ...

  10. servlet生成图片验证码

    package cn.itcast.servlet.session.demo3; import java.awt.Color; import java.awt.Font; import java.aw ...