1380 D - Berserk And Fireball(思维,贪心)
LINK
考慮怎樣刪除區(qū)間[l,r][l,r][l,r]內(nèi)的戰(zhàn)士
考慮一種無腦的做法,讓區(qū)間[l,r][l,r][l,r]一直使用狂暴,剩下一個(gè)和al?1a_l-1al??1或ar+1a_{r+1}ar+1?狂暴就能全部消除
但如果區(qū)間中的最大數(shù)比al?1a_{l-1}al?1?和ar+1a_{r+1}ar+1?都大,那么最后它是無法消除的,我們稱這種數(shù)字為特殊數(shù)字
所以應(yīng)該先用火球術(shù)把這種比兩邊大的數(shù)字消掉才行
此時(shí)如果(r?l+1)<k(r-l+1)<k(r?l+1)<k,不足以使用一次火球則無解,其余都可以消除
這里需要分兩種情況
①.當(dāng)y?k<=xy*k<=xy?k<=x時(shí),狂暴比較劃算
所以在消除特殊數(shù)字的同時(shí)還要最小化火球術(shù)的次數(shù)
當(dāng)區(qū)間中沒有特殊數(shù)字時(shí),一直狂暴即可,代價(jià)(r?l+1)?y(r-l+1)*y(r?l+1)?y
否則,一直在最大數(shù)字周圍使用狂暴知道只剩kkk個(gè)元素,用一次火球即可消除干凈
②.當(dāng)y?k>xy*k>xy?k>x時(shí),火球比較劃算
所以在消除特殊數(shù)字的同時(shí)還要最大化火球術(shù)的次數(shù)
令z=(r?l+1)%kz=(r-l+1)\%kz=(r?l+1)%k,顯然可以先用狂暴消掉任意zzz個(gè)數(shù)字,然后一直用火球術(shù)即可消干凈
#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; }總結(jié)
以上是生活随笔為你收集整理的1380 D - Berserk And Fireball(思维,贪心)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: domain adaptation论文记
- 下一篇: 关于已上发布app,升级admob后,激