uva 1451——Average
题意:给定一个长度为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相关推荐
- UVA 1451 Average 数形结合
借此把数形结合相关的知识补充补充,戳这里→浅谈数形结合思想在信息学竞赛中的应用 emmmmm求区间斜率最大的问题,用单调队列去维护下凸曲线,感觉有些博客解释的蛮清楚的,比如这里→戳 注意一下:下标的问 ...
- uva 1451 - Average 数形结合
数形结合那篇论文的例题,维护一个下凸队列,一开始为了省事,用了栈,但是原理上有问题,因为有可能正好起点为上凸点的情况,WA了好多次-- /* author:jxy lang:C/C++ univers ...
- 1451 - Average 高速求平均值
怎样高速求取一段区间的平均值 用前缀的思想来看 很easy 可是 本题题意要求的是 大于等于一段长度的区间的平均值的最大值 并且给出的数据范围非常大 O(n*L)的直白比較算法 用于解决此问题不合适 ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
- uva 10883——Supermean
Do you know how to compute the mean (or average) of n numbers? Well, that's not good enough for me. ...
- 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 ...
- UVa Problem 10310 Dog and Gopher (狗拿地鼠)
// Dog and Gopher (狗拿地鼠) // PC/UVa IDs: 111301/10310, Popularity: A, Success rate: average Level: 1 ...
- UVa Problem 10001 Garden of Eden (伊甸园)
// Garden of Eden (伊甸园) // PC/UVa IDs: 110806/10001, Popularity: B, Success rate: average Level: 2 / ...
- UVa Problem 10067 Playing With Wheels (摆弄轮子)
// Playing With Wheels (摆弄轮子) // PC/UVa IDs: 110902/10067, Popularity: C, Success rate: average Leve ...
最新文章
- gtkorphan清理孤立软件包
- RabbitMQ学习系列(五): RPC 远程过程调用
- 计算勒让德多项式的系数
- 服务器tail正常,cat正常,vim打开中文乱码
- Android之如何解决popupWindow(pw.setFocusable(true))按返回键和menu键退出
- vue-cli3中的vue.config.js配置
- (转)Cortex-M3 (NXP LPC1788)之GPIO
- UI标签库专题十三:JEECG智能开发平台 ckfinder(ckfinder插件标签)
- JVM虚拟机-Class文件之常量池
- linux 拷机软件,拷机软件跑起来,OS X平台下OpenGL初体验
- freemarker 如何获得list的索引值
- [猎豹网校]数据结构与算法_Java语言
- python生成双层pdf
- 【Pygame实战】俄罗斯方块 | 太好玩了~停不下来,这种版本(Turtle彩版)你肯定没玩过……(经典怀旧:无人不知的俄罗斯方块)
- vue中watch不触发、不生效的解决办法及原理
- 首届青年统计学家论坛 | 小微金融与个人征信专场
- 计算机组成原理 最新教材,《计算机组成原理(本科教材)》—甲虎网一站式图书批发平台...
- Oracle数据库实验四查询实验三(Oracle 11g)
- 【C++内存管理侯捷】---学习笔记(下)malloc/free,loki allocator,other issue
- 基于JavaSwing开发书店管理系统+论文 毕业设计 课程设计 大作业