1380 D - Berserk And Fireball(思维,贪心)
LINK
考虑怎样删除区间[l,r][l,r][l,r]内的战士
考虑一种无脑的做法,让区间[l,r][l,r][l,r]一直使用狂暴,剩下一个和al−1a_l-1al−1或ar+1a_{r+1}ar+1狂暴就能全部消除
但如果区间中的最大数比al−1a_{l-1}al−1和ar+1a_{r+1}ar+1都大,那么最后它是无法消除的,我们称这种数字为特殊数字
所以应该先用火球术把这种比两边大的数字消掉才行
此时如果(r−l+1)<k(r-l+1)<k(r−l+1)<k,不足以使用一次火球则无解,其余都可以消除
这里需要分两种情况
①.当y∗k<=xy*k<=xy∗k<=x时,狂暴比较划算
所以在消除特殊数字的同时还要最小化火球术的次数
当区间中没有特殊数字时,一直狂暴即可,代价(r−l+1)∗y(r-l+1)*y(r−l+1)∗y
否则,一直在最大数字周围使用狂暴知道只剩kkk个元素,用一次火球即可消除干净
②.当y∗k>xy*k>xy∗k>x时,火球比较划算
所以在消除特殊数字的同时还要最大化火球术的次数
令z=(r−l+1)%kz=(r-l+1)\%kz=(r−l+1)%k,显然可以先用狂暴消掉任意zzz个数字,然后一直用火球术即可消干净
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 1e6+10;
int n,m,t,x,y,k,flag = 1;
int a[maxn],b[maxn],mx[maxn][22],lg[maxn];
unordered_map<int,int>ma;
int get(int l,int r)
{int k = lg[r-l+1];return max( mx[l][k],mx[r-(1<<k)+1][k] );
}
int solve(int l,int r)
{if( l>r ) return 0ll;int w = get(l,r);if( w>max( a[l-1],a[r+1] ) && (r-l+1)<k ) flag = 0;if( y*k<=x ){if( w<max( a[l-1],a[r+1] ) ) return y*(r-l+1);else if( w>max( a[l-1],a[r+1]) ) return ( r-l+1-k )*y+x; }else{int z = (r-l+1)%k;return (r-l+1)/k*x+z*y; }
}
signed main()
{ios::sync_with_stdio( false ); cin.tie( 0 ); cout.tie( 0 );for(int i=2;i<=1000000;i++) lg[i] = lg[i>>1]+1;ma.clear();cin >> n >> m >> x >> k >> y;for(int i=1;i<=n;i++) cin >> a[i], ma[a[i]] = i, mx[i][0] = a[i];for(int j=1;j<=20;j++)for(int i=1;i+(1<<j)-1<=n;i++)mx[i][j] = max( mx[i][j-1],mx[i+(1<<(j-1))][j-1] );int las = 0, ans = 0;for(int i=1;i<=m;i++){cin >> b[i];int x = ma[b[i]];if( !ma.count( b[i] ) ) flag = 0;else{if( x<las ) flag = 0;else las = x;}}b[0] = 0;for(int i=1;i<=m;i++){if( i==1 ){if( a[1]==b[1] ) continue;ans += solve( 1,ma[b[1]]-1 );}elseans += solve( ma[b[i-1]]+1,ma[b[i]]-1 );}if( a[n]!=b[m] ) ans += solve( ma[b[m]]+1,n );if( flag==0 ) ans = -1;cout << ans << endl;
}
1380 D - Berserk And Fireball(思维,贪心)相关推荐
- F 魏迟燕的自走棋(思维+贪心+并查集维护联通块/左部点配对边<=2的匈牙利)
https://ac.nowcoder.com/acm/contest/9984/F 参考:F 魏迟燕的自走棋(贪心+并查集) 将每个人看成一个点,武器的能力值抽象成边,这样就转化成图论的模型了. 然 ...
- CF思维联系--CodeForces -214C (拓扑排序+思维+贪心)
ACM思维题训练集合 Furik and Rubik love playing computer games. Furik has recently found a new game that gre ...
- cf 1059e 思维 贪心 树
参考博客:http://www.cnblogs.com/waldenlake/p/9750249.html 题意:将一棵n个点的带权有根树剖分成尽量少的链,使得 (1)链的两个端点是祖先关系 (2)链 ...
- Wannafly交流赛1 B 硬币[数学思维/贪心]
链接:https://www.nowcoder.com/acm/contest/69/B 来源:牛客网 蜥蜴的生日快到了,就在这个月底! 今年,蜥蜴的快乐伙伴之一壁虎想要送好多个1元硬币来恶整蜥蜴. ...
- Codeforces 1093C (思维+贪心)
题面 传送门 题目大意: 有一个长n(n为偶数)的序列a 已知a满足 \(a_1≤a_2≤⋯≤a_n\) 给出一个长度为\(\frac{n}{2}\) 的序列b,定义\(b_i=a_i+a_{n-i+ ...
- HDU多校7 - 6850 Game(博弈+思维+贪心)
题目链接:点击查看 题目大意:二维平面上有 n 个点,现在两个人博弈,每个点至多遍历一次,先手从第一个点出发,随意选择一个点作为下一个点,后手再选择一个点,从现在开始需要满足的条件是,接下来选择点的距 ...
- CodeForces - 1339C Powered Addition(思维+贪心)
题目链接:点击查看 题目大意:给出一个由 n 个数组成的数列 a,选择一个最小的 k ,代表可以进行 k 次操作,对于第 t 次操作可以选择任意个位置使得 a[ i ] = a[ i ] + 2^( ...
- 中石油训练赛 - 围栏翻新(思维+贪心+差分)
题目描述 小明的破旧围栏又要喷涂油漆了.围栏由N个木板构成,每个宽度都为1cm,但是高度各不相同.他给自己买了一个喷漆机器,喷涂头恰好也是1cm宽. 小明的喷漆机器是直接喷射的,因此喷头的每一个部位必 ...
- CodeForces - 618D Hamiltonian Spanning Tree(思维+贪心)
题目链接:点击查看 题目大意:首先给出n个点,n*(n-1)/2条边组成的无向图,边的权值为y,现在给出一棵连接n个点的树,树上的权值都是x,现在问如何在每个点只遍历一次的情况下走遍n个点,并使一路上 ...
- Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp
Codeforces Round #459 (Div. 2) C. The Monster 题意:定义正确的括号串,是能够全部匹配的左右括号串. 给出一个字符串,有 (.). ? 三种字符, ? 可以 ...
最新文章
- Linux服务器生产环境中的文件删除与替换
- SIFT(ASIFT) Matching with RANSAC
- 不会连PPPoE协议都不会配吧?
- iOS 9.0以后支持http协议
- 十招教你学会软件破解(转)
- NSURLSession的应用
- 接受拒绝算法_通过算法拒绝大学学位
- java中document解析jsp,JSP基于dom解析xml实例详解
- 阿里巴巴Linux开源镜像站 华为Linux开源镜像站 Linux宝塔面板
- 空间组网(卫星组网)概述
- kali 安装volatility_电子取证技术之实战Volatility工具
- python处理一些乱码的中文文本时decode('utf-8')报错的处理
- Android 开机Logo、铃声、震动修改方案
- 模拟赛 东风谷早苗
- 追星女孩彩虹屁情话土味情话合集100条
- 解决最新小马激活工具导致主页劫持问题
- micropython nodemcu 获取天气预报_NodeMCU获取并解析心知天气信息
- vue+echarts+springboot实现云词图
- 第二期腾讯AI加速器将面向全球招募AI创业者
- 都2020了,做Web前端还这么香么
热门文章
- 【PS】如何简单的处理带晒伤皮肤的婚纱照?红斑/脱皮/减淡红色
- 【寒江雪】Go实现Builder Pattern
- 原生js写简易别踩白块儿
- Parsed mapper file:项目启动不起来
- (SSM,JQUERY-EASYUI,MYSQL)快递物流系统
- 课程设计---快递管理系统(boostrap + servlet + jQuery + Redis + MySQL)
- 什么是光电耦合器?光耦有哪些类型
- 北邮通信博士万字长文,带你深入了解 4G/5G 区别!
- 无线网络共享有线计算机,win10怎么把有线网络变成无线_win10如何共享有线网络为无线热点...
- tibco往服务器发消息,教程:使用 TIBCO EMS 消息上下文属性 - BizTalk Server | Microsoft Docs...