看完题目第一眼的感觉就是求一个最长不上升子序列 和 最长不下降子序列
O(N^2)一定是跑不过去的 所以要写个O(NlogN)的算法
结果成功写挫~
思维难度不大,注意二分容易写爆炸。

#include <cstdio>
#include <algorithm>
#include <cstring>using namespace std;int n;
int num[30005],b[30005];
int Max,MAX;void DOWN(){Max = 1;int j;b[Max] = num[Max];for(int i=2;i<=n;i++){if(num[i]<=b[Max]) j = ++Max;else{int l = 1;int r = Max+1;while(l<r){int m = (l+r)>>1;if(b[m]>=num[i]) l = m+1;else r = m;}j = l;}b[j] = num[i];}/*for(int i=1;i<=Max;i++){printf("b[%d]:%d\n",i,b[i]);}*/MAX=Max;
}void UP(){memset(b,0,sizeof(b));Max = 1;int j ;b[Max] = num[Max];for(int i=2;i<=n;i++){if(num[i]>=b[Max]) j=++Max;else{int l = 1;int r = Max+1;while(l<r){int m = (l+r)>>1;if(b[m]<=num[i]) l = m+1;else r = m;}j= l;}b[j] = num[i];}/*for(int i=1;i<=Max;i++){printf("b[%d]:%d\n",i,b[i]);}*/MAX = max(Max,MAX);
}int main(){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&num[i]);DOWN();UP();printf("%d\n",n-MAX);return 0;
}

转载于:https://www.cnblogs.com/OIerLYF/p/7496131.html

BZOJ 1609 Usaco Eating Together相关推荐

  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. BZOJ 1609 [Usaco2008 Feb]Eating Together麻烦的聚餐:LIS LDS (nlogn)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1609 题意: 给你一个只由数字"1,2,3"组成的序列a[i],共n个 ...

  4. BZOJ 1666 USACO 2006 Oct. 奶牛的数字游戏

    直接模拟2333 1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int n,ans; 5 ...

  5. BZOJ 1624 Usaco Clear And Present Danger

    这个题目和最近那个 AtCoder T4很像,不过这个是简单版的. 只需要m个点依次经过就可以了.. #include <bits/stdc++.h> using namespace st ...

  6. bzoj 4393 Usaco Fruit Feast

    题目很明显的一道dp题目. 方程也不难推 dp[i][0]表示饱食度为i没喝水  dp[i][1]表示当前饱食度为i已经喝了水 #include <cstdio> #include < ...

  7. BZOJ 1232 USACO 2008 Nov. 安慰奶牛Cheer

    [题解] 对于每一条边,我们通过它需要花费的代价是边权的两倍加上这条边两个端点的点权. 我们把每条边的边权设为上述的值,然后跑一边最小生成树,再把答案加上最小的点权就好了. 1 #include< ...

  8. BZOJ 4094 USACO 2013 Dec. Optimal Milking

    线段树 每个节点保存4个值,both表示左右端点都取,neither表示左右端点都不取,left表示只取左端点,right表示只取右端点. 维护的特殊姿势: $cur$的$both=max(ls.l+ ...

  9. BZOJ 1631==USACO 2007== POJ 3268 Cow Party奶牛派对

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 19226   Accepted: 8775 Description One ...

最新文章

  1. GIS可视化——属性图
  2. Java如何解析markdown_使用Java实现的一款Markdown解析器md2x
  3. bat基础学习--bat批量执行其他bat(startcall),bat执行后暂停(调试)关闭,批量执行关闭exe----基础
  4. Leet Code OJ 226. Invert Binary Tree [Difficulty: Easy]
  5. EF Core 实现多租户
  6. python贪心算法求删数问题_贪心算法删数问题
  7. mysql 创建用户并授权_教你MySQL-8.0.x数据库授权
  8. 阿里大牛程序员的Java问题排查工具单
  9. pytorch打包exe出现WARNING: file already exists but should not: C:\Users\workAI\AppData\Local\Temp\_MEI13
  10. CAD图纸中图块无法打开编辑?
  11. 创业经验谈(转自:ouravr.com)
  12. gitlab使用教程详细
  13. profibus通讯快速入门_西门子S7-300/400PLC入门:硬件配置
  14. 怎样将图片制作转换圆形图片
  15. python 汉字编码
  16. c语言函数定义四要素,C语言函数
  17. linux操作系统期末试卷及答案,Linux操作系统期末复习题(含答案).pdf
  18. OSI 的七层模型有哪些?
  19. ES摄入性能优化(插入提高了2倍+ 17w/s到37w/s)
  20. Python|Anaconda安装

热门文章

  1. linux popd 命令,在Linux系统中的Pushd命令与Popd命令,教你这两个命令的基本用法...
  2. springboot做网站_Github 上 Star 最多的个人 Spring Boot 开源学习项目
  3. java转成图形界面_【转】java图形界面设计(AWT)
  4. 向js中添加静态方法与属性方法
  5. 【sprinb-boot】改造成 spring-cloud 项目
  6. php mssql 新 id,MSSQL获取当前插入数据的id
  7. PHP堆实现TopK算法实例,top-k 算法浅析
  8. 利用pickle保存模型
  9. MYSQL驱动包升级到5.1.17版本之后会出现的问题
  10. 爬虫 | urllib入门+糗事百科实战