給你n個正整數,n<=5,每個正整數大小不超過1000,最初su
m=0 sum
=0
,每次可將su
m sum
按順序加上陣列中的數,加完之後可以對sum的數字進行全排列,求最終能達到的最大值。
由於n只有5,所以按照題意模擬dfs實現就可以了,注意最後一組也可以按數字進行全排列。
d題**
#include
#include
#include
#include
using namespace std;
const int maxn = 10;
int n;
int a[maxn];
int b[5];
int ans;
void dfs(int
x,int sum)
sort(b,b+pos);
doans=max(ans,cnt);;
}while (next_permutation(b,b+pos));
return ;
}int b[5];
memset(b,0,sizeof(b));
int xx=sum;
intpos=0;
while(xx)
sort(b,b+pos);
dodfs(x+1,cnt+a[x]);
}while (next_permutation(b,b+pos));
}int main()
給你一些長度不等寬度相等的木板,橫向左對齊依次排好,每次只能沿一條連續的直線進行粉刷,求最少多少次就能全部粉刷。
這算是我的第一分治題,由於之前沒有接觸過卡了很久,後來研究了一下,這個還是具有區域性最優解的,如果當前所有木板中最短長度為t,共n個木板,若選擇橫向塗,則結果一定為n,若選擇縱向塗,則將所有木板與最短木板相應的部分塗色,再對最短木板的左右分別進行下一輪的塗色問題。
e題**
#include
#include
#include
using
namespace
std;
const
int maxn = 3005;
const
int inf = 0x3f3f3f3f;
int n;
int a[maxn];
int dfs(int l,int r,int h)
int tmp=a[flag]-h;
if(tmp<0) tmp=0;
return min(sum,dfs(l,flag-1,max(a[flag],h))+dfs(flag+1,r,max(a[flag],h))+tmp);
}int main()
牛客練習賽9
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 珂朵莉想每天都給威廉送禮物,於是她準備了n個自己的本子 她想送最多的天數,使得每天至少送乙個本子,但是相鄰兩天送的本子個數不能相同 珂朵莉最多送幾天禮物呢 第一行乙個整...
牛客練習賽15
時間限制 c c 2秒,其他語言4秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 第一次期中考終於結束啦!沃老師是個語文老師,他在評學生的作文成績時,給每位學生的分數都是乙個小於10的非負小數。amy 8.99999999999999999999...
牛客練習賽24
a石子列陣 快速冪取模 第乙個位置可以有m種選擇,其他每個位置m 1種 include include include includeusing namespace std const int mod 1e9 7 long long quick power long long a,long long...