題目鏈接戳我
可能是我太菜了,一個模擬題寫了好久這題的輸入太坑了,以為是x,y,k,結果是x,k,y,害的我樣例一一直輸出6,一度懷疑樣例錯了.
題目意思:有n個數,他們的大小是a[i],另外還有m個數b[i],問經過以下兩種操作把a[i]變成b[i],如果不能變成b[i]輸出-1;
1.花費x點神力刪去連續k個數(不能少也不能多)(當x=2k,花費為2x)
2.花費y,刪去相鄰位置最小的那個數
題解:首先考慮哪些不能變成b[i],b[i],和a[i]的相對位置都不對的肯定不行例如a[i]=1 2 3 4 5,b[i]=5 1,根本就不可能,然后就是當b[e]到b[e+1]轉到a[i],這個區間內的最大值大于b[e]和b[e+1]并且區間的大小小于k,肯定也不可以,例如k=2 a[i]=1 4 3 2 b[i]=1 3,那么4就無法刪除,滿足條件后就開始模擬了,在代碼中注釋
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<string>
#include<vector>
#include<queue>
#include<algorithm>
#include<deque>
#include<map>
#include<stdlib.h>
#include<set>
#include<iomanip>
#include<stack>
#define ll long long
#define ull unsigned long long
#define ms(a,b) memset(a,b,sizeof(a))
#define lowbit(x) x & -x
#define fi first
#define se second
#define lson num<<1
#define rson num<<1|1
#define bug cout<<"----acac----"<<endl
#define IOS ios::sync_with_stdio(false), cin.tie(0),cout.tie(0)
using namespace std
;
const int maxn
= 2e5+ 50;
const double eps
= 1e-7;
const int inf
= 0x3f3f3f3f;
const ll lnf
= 0x3f3f3f3f3f3f3f3f;
const ll mod
= 23333;
const double pi
=3.141592653589;
int n
,m
,k
;
int a
[maxn
],b
[maxn
],c
[maxn
];
int main()
{ll x
,y
;scanf("%d%d",&n
,&m
);scanf("%lld%d%lld",&x
,&k
,&y
);for(int i
=1; i
<=n
; i
++){scanf("%d",&a
[i
]);c
[a
[i
]]=i
;}bool flage
=true;int pos
=1;for(int i
=1; i
<=m
; i
++){scanf("%d",&b
[i
]);}for(int i
=1; i
<m
; i
++){if(c
[b
[i
]]>c
[b
[i
+1]])flage
=false;}if(!flage
){printf("-1\n");return 0;}ll ans
=0;int l
=0,r
=0;for(int i
=1;i
<=m
+1;i
++){if(i
==m
+1){r
=n
+1;}else{r
=c
[b
[i
]];}int ma
=0;for(int j
=l
+1;j
<=r
-1;j
++){ma
=max(a
[j
],ma
);}bool flage
=true;if(ma
>a
[l
]&&ma
>a
[r
]){flage
=false;}ll len
=r
-l
-1;if(len
<=0){l
=r
;continue;}if(len
<k
){if(!flage
){printf("-1\n");return 0;}else{ans
+=len
*y
;}}else{if(!flage
){ans
+=min((len
-k
)*y
+x
,(len
%k
)*y
+(len
/k
)*x
);}else{ans
+=min((len
%k
)*y
+(len
/k
)*x
,len
*y
);}}l
=r
;}printf("%lld\n",ans
);return 0;
}
總結
以上是生活随笔為你收集整理的Educational Codeforces Round 91 (Rated for Div. 2) D. Berserk And Fireball的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。