H 最小花費 (簡單的貪心吧)

2021-08-06 01:50:40 字數 743 閱讀 5570

給乙個長度為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 項元素的值...