牛客每日练习----最优屏障,打铁的箱子,小妈妈找蝌蚪
我从前最怕旁人火眼金睛,如今,倒是盼着有人能够洞幽烛远。如此,就能赠我一点欢喜。
链接:https://ac.nowcoder.com/acm/problem/14666
来源:牛客网
题目描述
M国的地势高低不平,现给出一个数组代表此国家某纬度上均匀分布的N座山的海拔高度H[i](任意两座山高度不同),已知每座山的山顶上都有一座哨塔,若两个哨兵分别位于第i、j(i<j)座山上,当且仅当两人所在的山比两人之间所有的山都高时,这两个哨兵可以相互监视,M国的防守能力大小为相互监视的哨兵对数。H国早已对M国虎视眈眈,H国的皇帝希望黑魔法师们可以在M国的某两座山之间放置一块巨大的屏障,M国的哨兵不可通过该屏障互相监视。皇帝想让你告诉他最优的屏障放置位置,你是皇帝手下最信任的军师,现在需要你帮助皇帝计算最优的屏障放置位置和最大的防守力减少量。
输入描述:
第一行包含一个正整数T(T≤20)。
对于每组数据,第一行包含一个正整数n(2≤n≤50000)。
接下来n个不同的正整数,H1,H2,H3,…,Hn(0≤Hi≤109)分别代表横截面上每座山的海拔高度。
(读入数据比较大,建议使用scanf而不要使用cin读入)
对于60%的数据,n≤500
对于80%的数据,n≤5000
对于100%的数据,n≤50000
输出描述:
每组数据输出一行形如“Case #N: X C”,N代表当前是第N组数据(从1开始),X代表屏障放置在第X座山前可使M国的防守能力下降最多, 此时减少量为C。若有多种方案使得减少量为C,那么输出最小的X对应的方案。
示例1
输入
复制
2 3 2 1 3 5 4 5 2 6 3
输出
复制
Case #1: 2 2 Case #2: 3 2
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x7ffffff
#define P pair<int,int>
typedef long long ll;
using namespace std;
const ll MOD=1e9+7;
int T,n,k=1,a[50010], v[50010], vis[50010];
int main(){scanf("%d",&T);while(T--){memset(v, 0, sizeof(v));memset(vis, 0, sizeof(vis));scanf("%d",&n);for(int i = 1; i <= n; i++) scanf("%d",&a[i]);stack<int> st;while(!st.empty()) st.pop();for(int i = 1; i <= n; i++){int tmp = 0;vis[i] = vis[i - 1];while(!st.empty() && st.top() < a[i]){tmp++;st.pop();}if(!st.empty()) vis[i] += tmp + 1;else vis[i] += tmp;st.push(a[i]);}while(!st.empty()) st.pop();for(int i = n; i >= 1; i--){int tmp = 0;v[i] = v[i + 1];while(!st.empty() && st.top() < a[i]){tmp++;st.pop();}if(!st.empty()) v[i] += tmp + 1;else v[i] += tmp;st.push(a[i]);}int jg = -1, id = 0;for(int i = 1; i < n; i++){if(v[1] - (vis[i] + v[i + 1]) > jg){jg = vis[n] - (vis[i] + v[i + 1]);id = i;}}printf("Case #%d: %d %d\n",k++, id + 1, jg);}return 0;
}
链接:https://ac.nowcoder.com/acm/problem/14671
来源:牛客网
题目描述
作为彩虹岛上最擅长打铁的人,
牛客每日练习----最优屏障,打铁的箱子,小妈妈找蝌蚪相关推荐
- 牛客网 短最优升级路径 【Dijkstra算法】+【路径记录】
链接:https://www.nowcoder.com/questionTerminal/a7052c5bd8634edb9ccee711a5c1ea54 来源:牛客网 短最优升级路径 题目描述:游戏 ...
- 力扣牛客每日刷题(Python解法持续更新)
力扣牛客每日刷题(持续更新) 初试结束第15天, 之前简单的处理了部分毕设方面的任务, 对接下来的学习做了个简单的规划 决定每天开始刷几道力扣题提高一下算法的理解,不能让之前学的数据结构都忘记了 每道 ...
- 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m
剑指offer:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他 ...
- 牛客每日练习----可做题,汀博尔,轰炸区最优选取
大提琴的声音就像一条河,左岸是我无法忘却的回忆,右岸是我值得紧握的璀璨年华,中间流淌的,是我年年岁岁淡淡的感伤 链接:https://ac.nowcoder.com/acm/problem/14500 ...
- 【牛客每日一题】4.16 逆序对 ( 数学 , 排列组合 ,快速幂 , 快速乘 )
[每日一题]逆序对 链接:https://ac.nowcoder.com/acm/problem/14731 来源:牛客网 题目描述 求所有长度为n的01串中满足如下条件的二元组个数: 设第i位和第j ...
- 【牛客每日一题】4.15 Treepath 题解(树上dfs/树形DP)
题目链接:https://ac.nowcoder.com/acm/problem/14248 来源:牛客网 题目描述 给定一棵n个点的树,问其中有多少条长度为偶数的路径.路径的长度为经过的边的条数.x ...
- 【牛客每日一题】 4.13 Xorto(前缀异或和,枚举优化/映射)
链接:https://ac.nowcoder.com/acm/problem/14247 来源:牛客网 题目描述 给定一个长度为n的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为 ...
- 【牛客每日一题】tokitsukaze and Soldier 题目精讲 贪心、优先队列、堆
链接:https://ac.nowcoder.com/acm/problem/50439 来源:牛客网 ACM在线模板 今天才发现牛客推出了一个每日一题的版块,3月25号就开始了,今天才发现,赶紧补救 ...
- 牛客每日练习----合并回文串,年轮广场,安卓图案解锁
大提琴的声音就像一条河,左岸是我无法忘却的回忆,右岸是我值得紧握的璀璨年华,中间流淌的,是我年年岁岁淡淡的感伤. 链接:https://ac.nowcoder.com/acm/problem/1323 ...
最新文章
- notes belonging to given user
- 事情在不断的解决中,想念巫英才和张国振
- 5、java中的数组
- Python排序算法之快速排序
- gettimeofday_PHP gettimeofday()函数与示例
- WordPress 3.0十大看点 CMS功能进一步增强
- java子线程的创建_Java多线程基础(一):线程的创建
- python文档字符串格式_Python字符串及文本模式方法详解
- Java建立Zip压缩文件的代码实例
- 为type=file的input标签制定样式——CSS基础
- 我的第一次随笔——胡桂玲
- 九、Oracle学习笔记:聚合函数
- 今天您大数据营销了吗?
- layUI table表格合并
- CQUPT WEEKLY TRAINING (3)解题报告
- Java面向对象-01-类和对象
- Pnet抓包工具Wireshark提示end of file on pipemagic during open
- python计算圆周率代码_使用 Python 计算 π 值
- 华为linux依赖关系不满足,在深度Deepin系统中出现依赖关系不满足缺少libjpeg8的解决方法...
- net.sf.cglib.beans.BeanCopier用途