poj解題報告 2313

2021-07-04 03:48:01 字數 499 閱讀 5533

開始假設b[i] = a[i](1 <= i <= n),顯然b[i]對於最後最優值產生影響的有三項|a[i]-b[i]|,|b[i]-b[i-1]|,|b[i]-b[i+1]|, 反應在數軸上要使得這三項最小,那麼取值應該是這三數居中的那個,.若存在i使 b[i] < 或者 > mid(b[i - 1], a[i], b[i + 1]) (2 <= i <= n - 1), mid(x, y, z)表示x, y, z中數值居中間的數}這個畫下數軸就知道了,則b[i]=mid(b[i - 1], a[i], b[i + 1]),直到沒有以上所說的i,所得的b數列即為所求,按公式求sum, 輸出。

#include#include#includeusing namespace std;

int a[105],b[105],n;

int getmid(int a,int b,int c)

int main()

{ int i;

scanf("%d",&n);

for(i=0;i

poj解題報告 1328

不得不說,這題是讓我飽受折磨,畢竟第一次做貪心演算法,而且wa了好多次,幸好有學長的幫助,最終找到了問題所在,是在快排上是問題,double高位不可向int低位轉換,由於一開始強制轉換導致雖然樣例和其他的測試資料過了,但還是wa,現在改完了就對了,附上ac ps 這題通過率是22 真心不簡單 如下 ...

poj解題報告 2586

這題我是用的貪心演算法,其實不用也可以,列舉也能解決,因為情況不多。因為是每連續5個月必有虧損,而一年只有1 5,2 6,3 7,4 8 8 12共8種情況。現在設盈餘為s,虧損為d,可列出以下幾種情況。ssssdssssdss 4ssssddsssddss 3s 2d ssdddssdddss 2...

poj解題報告 2635

這題特別好理解,就是 坑啊。題意就是給乙個數,這個數是兩個大素數的積,再給出乙個數,如果最小的素數比給的數大,列印good,否則列印bad和最小的素數。這題用的方法是高精度求模 同餘模定理。還有素數打表,把10 6內的素數全部預打表,在求模時則列舉到小於l為止。注意打表不能只打到100w,要保證素數...