题目链接: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:

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 #define MAX_N 30005
 5
 6 using namespace std;
 7
 8 int n;
 9 int a[MAX_N];
10 int d[MAX_N];
11
12 int cal_lis()
13 {
14     int len=1;
15     d[1]=a[0];
16     for(int i=1;i<n;i++)
17     {
18         if(a[i]>=d[len])
19         {
20             d[++len]=a[i];
21             continue;
22         }
23         int lef=1;
24         int rig=len;
25         while(rig-lef>1)
26         {
27             int mid=(lef+rig)/2;
28             if(a[i]>=d[mid]) lef=mid;
29             else rig=mid;
30         }
31         int ans;
32         if(a[i]<d[lef]) ans=0;
33         else ans=lef;
34         d[ans+1]=min(d[ans+1],a[i]);
35     }
36     return len;
37 }
38
39 int cal_lds()
40 {
41     int len=1;
42     d[1]=a[0];
43     for(int i=1;i<n;i++)
44     {
45         if(a[i]<=d[len])
46         {
47             d[++len]=a[i];
48             continue;
49         }
50         int lef=1;
51         int rig=len;
52         while(rig-lef>1)
53         {
54             int mid=(lef+rig)/2;
55             if(a[i]<=d[mid]) lef=mid;
56             else rig=mid;
57         }
58         int ans;
59         if(a[i]>d[lef]) ans=0;
60         else ans=lef;
61         d[ans+1]=max(d[ans+1],a[i]);
62     }
63     return len;
64 }
65
66 int main()
67 {
68     cin>>n;
69     for(int i=0;i<n;i++)
70     {
71         cin>>a[i];
72     }
73     int v1=cal_lis();
74     int v2=cal_lds();
75     cout<<n-max(v1,v2)<<endl;
76 }

转载于:https://www.cnblogs.com/Leohh/p/7604687.html

BZOJ 1609 [Usaco2008 Feb]Eating Together麻烦的聚餐:LIS LDS (nlogn)相关推荐

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

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

  2. bzoj 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐(DP)

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

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

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

  4. [Usaco2008 Feb]Eating Together麻烦的聚餐

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

  5. [Usaco2008 Feb]Eating Together麻烦的聚餐[最长不下降子序列]

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

  6. [BZOJ] 1610: [Usaco2008 Feb]Line连线游戏

    1610: [Usaco2008 Feb]Line连线游戏 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 2264  Solved: 1017 [Sub ...

  7. bzoj 1611: [Usaco2008 Feb]Meteor Shower流星雨(DP)

    1611: [Usaco2008 Feb]Meteor Shower流星雨 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1631  Solved: 6 ...

  8. bzoj 1610: [Usaco2008 Feb]Line连线游戏

    1610: [Usaco2008 Feb]Line连线游戏 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 2235  Solved: 997 [Subm ...

  9. 1593: [Usaco2008 Feb]Hotel 旅馆

    1593: [Usaco2008 Feb]Hotel 旅馆 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 489  Solved: 272 [Subm ...

最新文章

  1. 标准差、协方差、相关性分别是什么?
  2. HyperLink 鼠标经过时候显示全部文字
  3. html radio 默认图片替换_html,css_如何更改radio、checkbox选项框背景图?,html,css - phpStudy...
  4. 【深度学习】PyTorch 中的线性回归和梯度下降
  5. 分布式系统的工程化开发方法
  6. 国内首位!Node.js社区将阿里云工程师张秋怡吸纳为CTC成员
  7. Arrays工具、二维数组以及LeetCode练习题
  8. 计算机键盘各个键的用途,给大家介绍键盘各个键的功能图解
  9. 【产品经理学习笔记】Part 7 收益预估
  10. 关于解决Visual Studio 实时调试器弹出的对话框问题 三种解决办法
  11. 大神TP_萌新到大神的必修课---分路篇v
  12. 【最后一天报名】数据科学峰会分论坛:供应链、用户增长、电商零售
  13. Android中m、mm、mmm、mma、mmma的区别
  14. 苹果商店App Store审核指南中文版(14-15-2016最新)-附:2015年App Store审核被拒Top10(官网)+被拒的23个理由(中英)
  15. 《寒江独钓 Windows内核安全》——串口的过滤
  16. 需要小程序源码/模板的进
  17. C语言 | 【耗费一夜总结三本C语言系列】之 结构体、联合、枚举
  18. Flutter 多渠道打包详解(埋点统计系列文章)
  19. 国家标准《道路交通标志和标线》
  20. struct in_addr 结构体

热门文章

  1. 投影仪投影粉色_DecisionTreeRegressor —停止用于将来的投影!
  2. android 揭示动画_遗传编程揭示具有相互作用的多元线性回归
  3. 收入和贷款有什么关系?
  4. pcb中layer stack manager 中,右上角的layer pairs 、internal layer pairs和build-up,三者的区别?
  5. 在C/C++代码中使用SSE等指令集的指令(1)介绍
  6. 压力测试过负载均衡_性能测试的方法有哪些?
  7. dba的前景_运维、测试、程序员,这些技术岗位哪个更有前景?
  8. mysql 层_mysql三层体系
  9. java wordcount程序_[java]wordcount程序
  10. opencv利用矩形框选中某一区域_【从零学习OpenCV】4Ubuntu系统中安装OpenCV 4