UESTC 1015 Lweb and pepper --前,后缀最值
题意: n种食物,每种含花椒的概率为Pi,现在已经选择了[L,R]这个区间(下标)的食物,要再选一个,使总的食物只有一种含花椒的概率最大,问选哪个最好,相同的选下标小的。
解法: 就不写解法了。此处有官方题解: http://acm.uestc.edu.cn/bbs/read.php?tid=5835
维护一个前缀后缀的最值即可。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#define Mod 1000000007
#define eps 1e-8
using namespace std;
#define N 100002 int preMax[N],bacMax[N],preMin[N],bacMin[N];
double pMax[N],pMin[N],bMax[N],bMin[N],p[N];
int sgn(double x)
{
if(x < -eps) return -;
if(x > eps) return ;
return ;
} int main()
{
int t,n,i,m,L,R;
cin>>t;
while(t--)
{
scanf("%d",&n);
for(i=;i<=n;i++)
scanf("%lf",&p[i]);
preMax[] = ; preMin[] = ;
pMax[] = -; pMin[] = Mod;
bacMax[n+] = n+; bacMin[n+] = n+;
bMax[n+] = -; bMin[n+] = Mod;
for(i=;i<=n;i++)
{
preMax[i] = preMax[i-];
preMin[i] = preMin[i-];
pMax[i] = pMax[i-];
pMin[i] = pMin[i-];
if(p[i] > pMax[i]) pMax[i] = p[i], preMax[i] = i;
if(p[i] < pMin[i]) pMin[i] = p[i], preMin[i] = i;
}
for(i=n;i>=;i--)
{
bacMax[i] = bacMax[i+];
bacMin[i] = bacMin[i+];
bMax[i] = bMax[i+];
bMin[i] = bMin[i+];
if(p[i] >= bMax[i]) bMax[i] = p[i], bacMax[i] = i;
if(p[i] <= bMin[i]) bMin[i] = p[i], bacMin[i] = i;
}
scanf("%d",&m);
while(m--)
{
scanf("%d%d",&L,&R);
L++,R++;
double B = 1.0, E = 0.0;
for(i=L;i<=R;i++)
B *= (-p[i]), E += p[i]/(-p[i]);
if(sgn(-E) > )
{
if(pMax[L-] >= bMax[R+]) printf("%d\n",preMax[L-]-);
else printf("%d\n",bacMax[R+]-);
}
else
{
if(pMin[L-] <= bMin[R+]) printf("%d\n",preMin[L-]-);
else printf("%d\n",bacMin[R+]-);
}
}
}
return ;
}
UESTC 1015 Lweb and pepper --前,后缀最值的更多相关文章
- codeforces 579D D. "Or" Game(前后缀+贪心)
题目链接: D. "Or" Game time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Objective-C 【NSString-字符串比较&前后缀检查及搜索】
———————————————————————————————————————————NSString 字符串比较 #import <Foundation/Foundation.h> vo ...
- poj 2752 Seek the Name, Seek the Fame【KMP算法分析记录】【求前后缀相同的子串的长度】
Seek the Name, Seek the Fame Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14106 Ac ...
- [LeetCode] Prefix and Suffix Search 前后缀搜索
Given many words, words[i] has weight i. Design a class WordFilter that supports one function, WordF ...
- Hibernate给表和字段设置前后缀及分隔符
在<一口一口吃掉Hibernate(一)--使用SchemaExport生成数据表>中介绍了如何生成数据表.但是这只是最基本的.hibernate在生成或者操作数据库时,会受一些限制.比如 ...
- HDU 2594(求最长公共前后缀 kmp)
题意是在所给的两个字符串中找最长的公共前后缀,即第一个字符串前缀和第二个字符串后缀的最长相等串. 思路是将两个字符串拼接在一起,然后直接套用 kmp 算法即可. 要注意用 next 会报编译错误,改成 ...
- poj 2752 求一个字符串所有的相同前后缀
求一个字符串所有的相同前后缀Sample Input ababcababababcababaaaaaSample Output 2 4 9 181 2 3 4 5 #include <iostr ...
- HDU 2594 最长相同前后缀
Sample Inputclintonhomerriemannmarjorie Sample Output0rie 3 输入两个字符串 ,求最长相同前后缀直接把两个字符串连接在一起求next就行了,唯 ...
- python 删除2天前后缀为.log的文件
python脚本 删除2天前后缀为.log的文件 #!/usr/local/python/bin/python #-*-coding=utf8 -*- import time import os,sy ...
随机推荐
- Grid – 入门必备!简单易懂的响应式设计指南
如今,人们使用各种各样的移动设备访问网页,设计师们需要去适配不同的屏幕,让用户在都能有最佳的浏览体验.Grid 是一个简单的响应式设计指南,按照这些简单的步骤,你的就能够掌握基础的响应网页设计技巧. ...
- JavaScript学习笔记-正则表达式(语法篇)
正则表达式的模式规则是由一个字符系列组成的,包括所有字母和数字在内;大多数的字符(所有字母和数字)都是按字符的直接量来描述带匹配的字符;一些具有特殊语义的字符按照其特殊语义来进行匹配,有些字符需要通过 ...
- FIM2010同步用户
在需要进行同步的来源MA进行同步 在需要进行导入的来源进行导入
- Android View各种尺寸位置相关的方法探究
Android View各种尺寸位置相关的方法探究 本来想做一个View间的碰撞检测之类的. 动手做了才发现不是想象的那么简单. 首先,写好了碰撞检测的工具类如下: package com.mengd ...
- xmpp整理笔记:用户网络连接及好友的管理
xmpp中的用户连接模块包括用户的上线与下线信息展现,用户登录,用户的注册: 好友模块包括好友的添加,好友的删除,好友列表的展示. 在xmpp中 负责数据传输的类是xmppStream,开发的过程中, ...
- Layout--iOS
// 系统的约束代码 @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIView *superVi ...
- Charles中如何对https抓包
前言:下面介绍关于Charles中如何对https抓包 1.在默认没有相关设置HTTPS需要设置相关操作的时候,会出现下面的情况: 2.下面就是设置SSL Proxying,然后443是默可用的端口 ...
- 如何开启win7端口的图文教程
Windows 7/Vista/XP/2003等系统中的远程终端服务是一项功能非常强大的服务,下面来教教大家如何开启端口:打开“控制面板”中的“Windows防火墙”,点击左侧的“高级设置” 右击“入 ...
- .NET读写Excel工具Spire.XlS使用(DataExport )
Introduction E-ICEBLUE is developing office.net component, the main products include Spire.Doc, Spir ...
- const,readonly 这些你真的懂吗? 也许会被面试到哦。。。
首先不可否认,这些在面试上会经常被面试官问起,但是你回答的让面试官满意吗?当然如果你知道了这些原理,或许你就不 怕了.既然说到了原理,我们还是从MSDN说起. 一:值得推敲的几个地方 1.先来看看ms ...