跟金保學DP系列 一

2021-07-04 07:16:19 字數 2308 閱讀 7357

a:ingenuous cubrency

分析:硬幣兌換問題,直接揹包

#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define repf( i , a , b ) for ( int i = a ; i <= b ; ++ i )

#define rep( i , n ) for ( int i = 0 ; i < n ; ++ i )

#define clear( a , x ) memset ( a , x , sizeof a )

const int inf=0x3f3f3f3f;

typedef long long ll;

const int maxn=1e5+100;

int tot=0;

int v[110];

ll dp[11000];

void init()

int main()

while(pos2porcelain

分析:看到這道題我的內心是崩潰的,因為m太tm大了,但是事實證明我太年輕了

顯然我們要預處理每行取k個的最大值,這個複雜度約為(o(n^3))

然後就是揹包dp[i][j]:前i行選j個的最大價值,複雜度約(o(n^2*m))最大情況下達1e8

#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define repf( i , a , b ) for ( int i = a ; i <= b ; ++ i )

#define rep( i , n ) for ( int i = 0 ; i < n ; ++ i )

#define clear( a , x ) memset ( a , x , sizeof a )

const int inf=0x3f3f3f3f;

typedef long long ll;

const int maxn=1e5+100;

int n,m;

int k,x,all,a[110],num[110];

int dp[110][110],mx[110];

int sum[110][110];

int d[110][10005];

int dfs(int l,int r,int s)

int main()

dfs(1,k,0);

mx[k]=all;

repf(j,1,k)

sum[i][j]=mx[j];

}clear(d,0);

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

printf("%d\n",d[n][m]);

}return 0;

}

d:eternal victory

分析:開始題意沒讀清楚,給你n個點,n-1條邊,每個點還必須走到,問你最小代價

這道題就是和fzu月賽題目一樣的,求個最長路,然後總價值*2-最大價值的路

#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define repf( i , a , b ) for ( int i = a ; i <= b ; ++ i )

#define rep( i , n ) for ( int i = 0 ; i < n ; ++ i )

#define clear( a , x ) memset ( a , x , sizeof a )

const int inf=0x3f3f3f3f;

typedef long long ll;

const int maxn=1e5+100;

struct nodee[maxn<<2];

int tot,n;

ll all,sum;

int head[maxn],vis[maxn];

void addedge(int u,int v,int w)

void dfs(int u,ll s)

}int main()

dfs(1,0);

printf("%lld\n",all*2-sum);

}return 0;

}

學渣亂搞系列之dp斜率優化

學渣亂搞系列之dp斜率優化 by 狂徒歸來 下面看乙個例題print article。連續列印一段長達從i到j的的文章,需要m sigma sum j sum i 2的費用,求列印完這篇文章的最小費用。到底分多少次去列印,費用最低呢。dp i 表示列印從1.i的最小費用。那麼我們有dp轉移方程dp ...

演算法入門系列一 DP初步

其實動態規劃本身並不是乙個特定的演算法,是一種用途廣泛的問題求解方法,一種思想,一種手段。有乙個有非負整數組成的三角形,第一行乙個數字,下面各行除了最後一行外,每行的每個數字下面左右各乙個數字。如圖示 從第一行數字開始,每次只能走左下或右下一格,直到走到最後一行,把沿途的走過的所有數字加起來。如何能...

零基礎學程式設計系列一

每個人都有夢想,你是否也曾羨慕過那些月薪5萬的西二旗程式猿們?可是每個人條件不同,理想很豐滿,現實很骨感。有些非計算機專業的同學學習程式設計還是有些吃力。其實要想短時間內學會一門程式語言也不是沒有可能。本系列教程就是想給零基礎的同學帶入到程式設計這個神奇的世界中,凡事只要入門了後面學起來就會快起來。...