题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1609

题意:

  给你一个只由数字"1,2,3"组成的序列a[i],共n个数。

  你可以任意更改这些数字,使得序列中每一种数字都“站在一起”,并且单调不减或不增。

  例如:"1111222", "332211"...

  问你至少更改多少个数字。

题解:

  单调不减:求原序列LIS(最长非降子序列),当前答案t1 = n - LIS.

  单调不增:求原序列LDS(最长非升子序列),当前答案t2 = n - LDS.

  最终答案ans = min(t1,t2).

  注:n为30000,求LIS & LDS用nlogn方法。

AC Code:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 30005 using namespace std; int n;
int a[MAX_N];
int d[MAX_N]; int cal_lis()
{
int len=;
d[]=a[];
for(int i=;i<n;i++)
{
if(a[i]>=d[len])
{
d[++len]=a[i];
continue;
}
int lef=;
int rig=len;
while(rig-lef>)
{
int mid=(lef+rig)/;
if(a[i]>=d[mid]) lef=mid;
else rig=mid;
}
int ans;
if(a[i]<d[lef]) ans=;
else ans=lef;
d[ans+]=min(d[ans+],a[i]);
}
return len;
} int cal_lds()
{
int len=;
d[]=a[];
for(int i=;i<n;i++)
{
if(a[i]<=d[len])
{
d[++len]=a[i];
continue;
}
int lef=;
int rig=len;
while(rig-lef>)
{
int mid=(lef+rig)/;
if(a[i]<=d[mid]) lef=mid;
else rig=mid;
}
int ans;
if(a[i]>d[lef]) ans=;
else ans=lef;
d[ans+]=max(d[ans+],a[i]);
}
return len;
} int main()
{
cin>>n;
for(int i=;i<n;i++)
{
cin>>a[i];
}
int v1=cal_lis();
int v2=cal_lds();
cout<<n-max(v1,v2)<<endl;
}

BZOJ 1609 [Usaco2008 Feb]Eating Together麻烦的聚餐:LIS & LDS (nlogn)的更多相关文章

  1. BZOJ 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐( LIS )

    求LIS , 然后用 n 减去即为answer ---------------------------------------------------------------------------- ...

  2. Bzoj 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 二分

    1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1272  Solve ...

  3. BZOJ 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐

    1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 Description 为了避免餐厅过分拥挤,FJ要求奶牛们分3批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按F ...

  4. bzoj 1609[Usaco2008 Feb]Eating Together麻烦的聚餐【dp】

    设up[i][j]为第i位升序为j的最小修改数,down为降序 #include<iostream> #include<stdio.h> using namespace std ...

  5. 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐

    1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 1010  Solv ...

  6. 【BZOJ】1609: [Usaco2008 Feb]Eating Together麻烦的聚餐(dp+被坑)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1609 首先我不得不说,我被这题坑了.题目前边没有说可以不需要3种牛都有啊!!!!!!!!然后我一直在 ...

  7. 【BZOJ】1609: [Usaco2008 Feb]Eating Together麻烦的聚餐

    [算法]动态规划 [题解]DP有个特点(递推的特点),就是记录所有可能状态然后按顺序转移. 最优化问题中DP往往占据重要地位. f[i][j]表示前i头奶牛,第i头改为号码j的最小改动数字,这样每头奶 ...

  8. BZOJ1609: [Usaco2008 Feb]Eating Together麻烦的聚餐

    1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 938  Solved ...

  9. [BZOJ1609] [Usaco2008 Feb] Eating Together麻烦的聚餐 (dp)

    Description 为了避免餐厅过分拥挤,FJ要求奶牛们分3批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按FJ的设想所有第3批就餐的奶牛排在队尾,队伍的前端由设定为第1批就餐的奶牛占据,中间的 ...

随机推荐

  1. 【日常学习】【并查集+map】codevs2639 约会计划题解

    然而我居然让诸城一中悲剧机房的C++可以编译了··· 直接上题目 题目描写叙述 Description cc是个超级帅哥,口才又好.rp极高(这句话似乎降rp),又非常的幽默,所以非常多mm都跟他关系 ...

  2. Locust压力测试Odoo

    Table of Contents 编写测试任务集 TaskSet 运行 Locust 分布式 运行 master 运行 slave.     Locust 是个伸缩性很好的压力测试框架,OdooLo ...

  3. Neural Turing Machines-NTM系列(一)简述

    Neural Turing Machines-NTM系列(一)简述 NTM是一种使用Neural Network为基础来实现传统图灵机的理论计算模型.利用该模型.能够通过训练的方式让系统"学 ...

  4. SAS学习经验总结分享:篇一—数据的读取

    第一篇:BASE SAS分为数据步的作用及生成数据集的方式 我是学经济相关专业毕业的,从事数据分析工作近一年,之前一直在用EXCEL,自认为EXCEL掌握的还不错. 今年5月份听说了SAS,便开始学习 ...

  5. 高阶函数:sorted

    排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的 ...

  6. Cocos2d-x粒子系统

    CCparticleSystem类封装实现对粒子的控制与调度,当中操作包含有: 1.产生粒子 2.更新粒子状态 3.回收无效的粒子 CCparticleSystem派生出CCParticleSyste ...

  7. C#中判断某个值是否存在于枚举

    我有一个枚举类型: #region -酒的种类- public enum WineType { 白酒 = 3, 葡萄酒 = 4, 洋酒 = 5, 老年陈酒 = 16, 啤酒 = 17 } #endre ...

  8. CentOS 6.9上安装Mysql 5.7.18 安装

    CentOS 6.9上安装Mysql 5.7.18 安装 下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-g ...

  9. mybatis前台传来一个String,后后台执行sql变成了true

    实际上参数传来的是一个字符串 3 ,不知道为什么会变成true 最后当然是查不到信息了.. 我在mapper映射文件里面使用了动态的where查询,我觉得跟这个关系不太大, 现在不知道怎么办,希望有思 ...

  10. 将到来的战略转变:移动 Web 还是移动 Apps?

    目前来看,移动应用比移动网站的易用性更高,但变化即将发生,移动网站最终将优于Apps,成为更好的策略选择. 一家公司制定移动策略时,最重要的问题是:是否需要考虑为移动设备特别做点什么.一些公司永远都不 ...