給乙個長度為n(n <= 10^5)的「01」串,你可以任意交換乙個為0的位和乙個為1的位,若這兩位相鄰,花費為x,否則花費為y。求通過若干次交換後將串中的「1」全部變換到「0」前面的最小花費。
input
第一行乙個整數t(1 <= t <= 10),表示測試資料的組數。接下來3*t行,每組資料三行,第一行為整數x(1 <= x <= 10^3),第二行為整數y(x <= y <= 10^3),第三行是「01」串。
output
最小花費。
sample input21
2110012
0011
sample output03
自己模擬一下就行了吧從最後那個一開始檢索
反正我不怎麼會。就是這樣。
#include#include#include#includeusing namespace std;
char a[100100];
int b[100010];
int main(){
int re,x,y;
scanf("%d",&re);
while(re--){
scanf("%d%d\n",&x,&y);
scanf("%s",a);
int k=0,sum=0,n=0;
for(int i=strlen(a)-1;i>=0;i--)
if(a[i]=='1')
b[k++]=i;
for(int i=0;i
思路題 貪心 fzu oj 2197 最小花費
題意 給乙個01串,相鄰的01交換代價為x,否則為y。問把全部1變到0前面的最小費用。思路 對於 01011 11100 如果只靠相鄰位移動是需要5步的。然而不管怎麼移動,步數是固定的。那我們就把最前面的0和最後面的1交換 假設0在i,1在j。我們交換的代價就是min y,x j i 然後累加求和就...
分金條的最小花費
一塊金條切成兩半,是需要花費和長度數值一樣的銅板的。比如 長度為20的 金條,不管切成長度多大的兩半,都要花費20個銅 板。一群人想整分整塊金 條,怎麼分最省銅板?例如,給定陣列,代表一共三個人,整塊金條長度為 10 20 30 60.金條要分成10,20,30三個部分。如果,先把長 度60的金條分...
746 使用最小花費爬樓梯 簡單
題目 於力扣 leetcode 目錄三 實現 四 執行用時 五 部分測試用例 746.使用最小花費爬樓梯 說明 定義兩個變數 dp1,dp2,初始值均為 0 遍歷陣列,每一項的結果都取兩個變數中的最小值 得到本次遍歷計算得到的結果後,改變 dp1,dp2 的值 dp2 原本的值 即前 2 項元素的值...