题意:给定一个长度为n 的01串,然后选一个长度至少为L的子串,使得子串的平均值最大。

思路:单调队列。如果把所有的前缀和都求出来,那么所求即为max((s[j] - s[i]) / (j - i)) ,转化成图也就是求斜率最大的那个点,s[i]是不递减的,那么最优解是下凸的。单调队列维护最优解,当是上凸的就弹出。

code:

#include <cstdio>
using namespace std;
const int N=100005;
int sm[N],q[N];
char s[N];int sol(int x1,int x2,int x3,int x4)
{return (sm[x2]-sm[x1])*(x4-x3)-(sm[x4]-sm[x3])*(x2-x1);
}
int main()
{int n,l,T;scanf("%d",&T);while (T--){scanf("%d %d %s",&n,&l,s+1);sm[0]=0;for (int i=1;i<=n;i++) sm[i]=sm[i-1]+s[i]-'0';int tl=0,tr=l;int i=0,j=0;for (int t=l;t<=n;t++){while(i<j-1&&sol(q[j-1],t-l,q[j-2],t-l)<0) j--;q[j++]=t-l;while(i<j-1&&sol(q[i+1],t,q[i],t)>=0) i++;int tt=sol(q[i],t,tl,tr);if (tt>0||tt==0&&(t-q[i]<tr-tl)) tr=t,tl=q[i];}printf("%d %d\n",tl+1,tr);}
}

uva 1451——Average相关推荐

  1. UVA 1451 Average 数形结合

    借此把数形结合相关的知识补充补充,戳这里→浅谈数形结合思想在信息学竞赛中的应用 emmmmm求区间斜率最大的问题,用单调队列去维护下凸曲线,感觉有些博客解释的蛮清楚的,比如这里→戳 注意一下:下标的问 ...

  2. uva 1451 - Average 数形结合

    数形结合那篇论文的例题,维护一个下凸队列,一开始为了省事,用了栈,但是原理上有问题,因为有可能正好起点为上凸点的情况,WA了好多次-- /* author:jxy lang:C/C++ univers ...

  3. 1451 - Average 高速求平均值

    怎样高速求取一段区间的平均值 用前缀的思想来看 很easy 可是 本题题意要求的是 大于等于一段长度的区间的平均值的最大值 并且给出的数据范围非常大 O(n*L)的直白比較算法 用于解决此问题不合适 ...

  4. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  5. uva 10883——Supermean

    Do you know how to compute the mean (or average) of n numbers? Well, that's not good enough for me. ...

  6. UVA - 12412 ​​​​​​​A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)

    A Typical Homework (a.k.a Shi Xiong Bang Bang Mang) UVA - 12412 题目传送门 emmmm,不想表达什么,udbug上的数据全过,可就是WA ...

  7. UVa Problem 10310 Dog and Gopher (狗拿地鼠)

    // Dog and Gopher (狗拿地鼠) // PC/UVa IDs: 111301/10310, Popularity: A, Success rate: average Level: 1 ...

  8. UVa Problem 10001 Garden of Eden (伊甸园)

    // Garden of Eden (伊甸园) // PC/UVa IDs: 110806/10001, Popularity: B, Success rate: average Level: 2 / ...

  9. UVa Problem 10067 Playing With Wheels (摆弄轮子)

    // Playing With Wheels (摆弄轮子) // PC/UVa IDs: 110902/10067, Popularity: C, Success rate: average Leve ...

最新文章

  1. gtkorphan清理孤立软件包
  2. RabbitMQ学习系列(五): RPC 远程过程调用
  3. 计算勒让德多项式的系数
  4. 服务器tail正常,cat正常,vim打开中文乱码
  5. Android之如何解决popupWindow(pw.setFocusable(true))按返回键和menu键退出
  6. vue-cli3中的vue.config.js配置
  7. (转)Cortex-M3 (NXP LPC1788)之GPIO
  8. UI标签库专题十三:JEECG智能开发平台 ckfinder(ckfinder插件标签)
  9. JVM虚拟机-Class文件之常量池
  10. linux 拷机软件,拷机软件跑起来,OS X平台下OpenGL初体验
  11. freemarker 如何获得list的索引值
  12. [猎豹网校]数据结构与算法_Java语言
  13. python生成双层pdf
  14. 【Pygame实战】俄罗斯方块 | 太好玩了~停不下来,这种版本(Turtle彩版)你肯定没玩过……(经典怀旧:无人不知的俄罗斯方块)
  15. vue中watch不触发、不生效的解决办法及原理
  16. 首届青年统计学家论坛 | 小微金融与个人征信专场
  17. 计算机组成原理 最新教材,《计算机组成原理(本科教材)》—甲虎网一站式图书批发平台...
  18. Oracle数据库实验四查询实验三(Oracle 11g)
  19. 【C++内存管理侯捷】---学习笔记(下)malloc/free,loki allocator,other issue
  20. 基于JavaSwing开发书店管理系统+论文 毕业设计 课程设计 大作业

热门文章

  1. height百分比以及高度自适应问题
  2. Google Chrome 浏览器JS无法更新解决办法
  3. 《Web前端开发修炼之道》-读书笔记CSS部分
  4. css3 flex 布局
  5. Zabbix监控多个JVM进程
  6. java之Hibenate中监听事件的重写和二级cache缓存
  7. 二叉树和哈希表的优缺点对比与选择
  8. property修饰关键字
  9. 【转】用BibTeX 写 Reference
  10. cs模式下,显示网络图片一例