Hdu 3183 ST演算法應用

2021-08-16 17:02:54 字數 754 閱讀 1799

題意大概是給一串數字,求刪掉之後剩餘數字組成的最小值(相對位置不變);為了確保數字最小,要從最前面開始找起,再依次往後找;
通過找規律易得第乙個數是在1,到m+1中取得,然後下個最小的數是從上個最小的數開始往後找到m+2,依次類推;
核心部分就是st演算法的應用,按相同操作儲存位置以便於使用;小部分就是對於前面0的處理可以開乙個bool變數進行儲存;
具體**實現如下:
#include#include#include#includeusing namespace std;

const int maxn=1000+5;

int a[maxn];

int dp[maxn][maxn];

int min(int i,int j)

void init(int n)

for(int j=1; 1<}

}int main()

init(len);

int c[maxn];

int vis=0;

for(int i=m+1,j=1,da=0; i<=len; i++,j++,da++)

bool flag=1;

for(int i=0;i<=vis;i++)

}if(flag)printf("0");

printf("\n");

}}

貪心演算法(hdu 4442 hdu 3183)

題目 題意 乙個人去做運動,給定每項運動的初始等待時間和增長等待時間,一等完該運動的等待時間就相當於完成該項運動,即不考慮做運動的時間,求完成所有運動最短要多少時間。題解 貪心,考慮兩種運動,初始等待時間為a1,a2,增長等待時間為b1,b2,只會發生兩種情況,先做第乙個運動和先做第二個,先做第乙個...

HDU 3183 字串處理

題目大意 給你一串數字,要你刪去n個數字,使得刪去n個數字後數值最小。解題思路 蛋疼的水題,搞了我一天。開始是暴力模擬,各種測試對但就是過不了。所以換了個寫法。思路主要是這樣的 因為需要你刪除m個數使得結果最小,所以每次對字串進行一次遍歷,從前往後,只要a i a j j的位置為i後面未標記的第乙個...

HDU 2544最短路 dijikstra演算法

輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n表示成都的大街上有幾個路口,標號為1的路口是商店所在地,標號為n的路口是賽場所在地,m則表示在成都有幾條路。n m 0表示輸入結束。接下來m行,每行包括3個整數a,b,c 1 a,b n,1 c 1000 表示在路口a與...