poj 1887解題報告

2021-06-27 19:41:11 字數 629 閱讀 6268

題目要求的是最長下降子串行的長度。長度為n的串的最長子序列長度必定存在最優子結構。

證明:若序列的最長下降子串行為,不妨假設yk=xm。則也一定是序列的最長子序列。否則,一定存在p>k,使得序列的最優解為p>k。與假設矛盾。

因此,可以採用dp 的做法。

dp陣列初始化為1.

dp[i]表示以第i位為結尾的最長下降子串行的長度。

dp[i]=max(dp[j]+1),(0<=j=num[i])

最後選出最大的dp值為ans。

演算法複雜度為o(n^2)

#include using namespace std;

int afx[32768];

int dp[32768];

int main()

for(int a=0;a=afx[b]&&dp[j]+1>max)

max=dp[j]+1;

dp[b]=max;

if(max>ans)

ans=max;

} printf("test #%d:\n maximum possible interceptions: %d\n\n",c,ans);

} return 0;

}

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,要保證素數...