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 ...
随机推荐
- CSS3中DIV水平垂直居中-2(3)
用到CSS3中display的新属性. HTML <div class="parent"> </div> CSS html,body{ width: 100 ...
- BFC布局原理
写这篇博客的初衷其实是在解决浮动的时候看到的这个方法,就想着BFC是什么,为什么可以清除浮动.结果不看不知道,一看越看越不明白,潜下心来研究看看,总结一下学习心得. 1.BFC是什么 BFC就是Box ...
- ubuntu处理中文时设置locale
ubuntu下涉及中文处理的程序时,需要正确设置,否则会出现问号或者乱码的情况 具体的原因: http://wiki.ubuntu.org.cn/Locale locale的解释 http://wik ...
- Android 在C代码中调用logcat
本文给<Android java传递int类型数组给C>中添加C代码中调用logcat的功能 Android.mk文件增加以下内容 LOCAL_LDLIBS += -llog C代码中增加 ...
- 【代码笔记】iOS-带索引的tableView
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- 【读书笔记】iOS网络-解析响应负载
Web Service可以通过多种格式返回结构化数据, 不过大多数时候使用的是XML与JSON.也可以让应用只接收HTML结构的数据.实现了这些Web Service或是接收HTML文档的应用必须能解 ...
- Android实用代码七段(五)
前言 每次分享意味着每次都有进步,本系列以实用为主,欢迎和我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯 ...
- __block和__weak的区别
API Reference对__block变量修饰符有如下几处解释: //A powerful feature of blocks is that they can modify variables ...
- Spring整合Junit4
1.加入相应依赖包 junit4-4.7.jar 以及spring相关jar包 2.在测试代码的源码包中如 src/test/java 新建一个抽象类如下 import org.junit.runne ...
- Git笔记1
1.简介 1.1 GIT(分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非 ...