poj解題報告 1014

2021-06-28 19:56:43 字數 638 閱讀 5353

題意: 有分別價值為1,2,3,4,5,6的6種物品,輸入6個數字,表示相應價值的物品的數量,問一下能不能將物品分成兩份,是兩份的總價值相等,其中乙個物品不能切開,只能分給其中的某一方,當輸入六個0是(即沒有物品),這程式結束,總物品的總個數不超過20000

**如下

#include#includeint a[7],sum,b[100],n;

int dp[60001];

void main()

if(sum==0)

break;

printf("collection #%d:\n", t++);

sum=0;

n=0;

for(i=1;i<=6;i++)

if(sum%2)

memset(dp,0,sizeof(dp));

dp[0]=1;

for(i=0;i=b[i];j--)

if(dp[j-b[i]])

dp[j]=1;

if(dp[sum/2])

printf ("can be divided.\n\n");

else

printf ("can't be divided.\n\n");

}}

POJ 1014 解題報告

這道題我用的是最原始的dfs,雖然加了cache,避免了一些重複運算,但不出意料地tle了。然後就是 優化 把每個value中的item個數減到200以下 看discuss可以取到30甚至6的,還有一堆mod的解法 我都不明白這些優化的原理。見源 中注釋掉的dfs部分。1014 accepted 3...

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...