USACO郵票醜數題解

2021-08-04 07:01:17 字數 945 閱讀 4240

這兩道題可使用特殊的優化方法:

醜數:#include

#include

#include

using namespace std;

int num[51];

int f[5000001];

int k,n,m,ans;

int tot[201]=;//表示第j個數的值乘上第f[tot[j]]大於當前尋找的醜數的前乙個醜數的最小值

bool comp(int a,int b)

int main()

f[0]=1;//將一視為第0個醜數

//sort(num,num+n,comp);

//f[1]=num[0];

for(int i=1;i<=n;i++)

f[i]=m;//第i個醜數 }

printf("%d",f[n]);//輸出

return 0; }

同理郵票有著相似的**

但是郵票資料時間給的非常卡所以有以下省時方式:

——對郵票價值進行快排使之降序排序,在尋找時就可以提前斷點。

郵票:#include

#include

#include

using namespace std;

int num[51];

int f[5000001];//到達值的最小郵票張數

int k,n,m,ans;

bool comp(int a,int b)

int main()

sort(num,num+n,comp);

for(int i=1;;i++)

f[i]=m;

if(f[i]>k)  }

printf("%d",ans); }

切勿使用流輸出輸入此題用此法非常耗時:

可見第三個點子過得勉強。完;

designed by leo jam

USACO專題題解

思路 這道題的7種情況,我們可以把原圖存在s1,把目標存在s2裡面,然後各方法遍歷如下 1 先行從n到1變化,列從1到n變化 2 先列從n到1變化,行從n到1變化 3 先列從1到n變化,行從n到1變化 4 先列從n到1變化,行從1到n變化 5 先把每行進行逆序,然後執行1或2或3 6 把s1和s2比...

leetcode 263 醜數(醜數II)

給了我們乙個醜數的概念,真是為了考驗我們什麼手段都能使出來。首先說一下第乙個題目,判斷乙個數是不是醜數,就是不斷地去除5 除3 除2就行了,當然除之前看看餘數是不是0,否則的話說明已經不能被這三個數整除了,直接結束 public boolean isugly int num return flag ...

USACO3 1 6 郵票 動態規劃 滾動陣列

bool型別 f i j i這個數額,由j個郵票貼成 是否可行。f i j 換乙個思路 f i i這個數額,最少由幾張郵票組成。f i min 1 其中i的數額最高可以到達 pk也就是10000 200 2000000的空間和時間其實都是很大了。再加上每次轉移是o k 還是會tle。但是這裡我只需要...