記錄路徑dp 4713 Permutation

2021-06-18 07:31:37 字數 1123 閱讀 6305

題目大意:

題意同hdu 3092這不過這題要輸出路徑。

解題思路:

思路同hdu 3092。

因為n比較大,不能開二維只記錄前面乙個來 逆著存路徑。

所以對於每個狀態,把到達它的所有數都儲存下來。轉移的時候將前面的路徑也賦值過來。

dp[i]表示表示不超過i的能分成的最大的最小公倍數的對數。少了的話用1來湊。

注意:輸出的時候值小的在前面,+1成環輸出。

**:#include#include#include#include#include#include#include#include#include#include#include#include#include#define eps 1e-6

#define inf 0x3fffffff

#define pi acos(-1.0)

#define ll __int64

#define lson l,m,(rt<<1)

#define rson m+1,r,(rt<<1)|1

#pragma comment(linker, "/stack:1024000000,1024000000")

using namespace std;

#define maxn 10000 //三千內的質數430個

double dp[maxn+10]; //取對數保證最小公倍數不會溢位

//dp[i]表示i能分成的最大的最小公倍數的對數

bool tmp[maxn+10];

int pp[maxn+10],ans[maxn+10];

vectormyv[maxn+10];

int n,cnt;

void init()

}return ;

}void solve()}}

}int main()

{ init();

//printf("%d\n",cnt);

int t;

scanf("%d",&t);

while(t--)

{scanf("%d",&n);

solve();

int t=myv[n].size();

int sum=0;

for(int i=0;i

DP 路徑記錄

題意 很多肥老鼠認為,長的越肥,奔跑速度就越快,為了反駁這個觀點,你現在需要對老鼠的體重和速度進行研究,你要在老鼠序列中找出乙個子串行,使得老鼠的體重在增加,但是速度卻在減慢 input 輸入以eof結束。輸入中每行有兩個正整數,分別表示老鼠的體重和速度,範圍均在1到10000之間,輸入資料最多有1...

poj3003 2397 DP 記錄路徑

這兩題是一模一樣的 最近做了好多這種揹包的題,但是這題需弄清的地方還是不少,有些繞 f陣列其實是可以省的 include define oo 10000000 using namespace std int cas,n,a 1010 p,q,dp 2 1010 pre 41 1010 bool f ...

UVA 624 記錄路徑dp

總得來說,不管是01揹包還是完全揹包,其動態轉移每次只有兩種狀態在轉移,就說這道題目,dp i j max dp i 1 j dp i 1 j v i val i 對於dp i j 來說,它只能使由兩個狀態中的乙個轉移過來的,要麼取一件,要麼不取,那麼我們再開乙個二維陣列s i j 0表示不取,1表...