項(xiàng)目分配
一個(gè)人可以負(fù)責(zé)多個(gè)項(xiàng)目,一個(gè)項(xiàng)目只能由一個(gè)人負(fù)責(zé),每個(gè)員工i負(fù)責(zé)項(xiàng)目j
的收益為a[i, j],求最大收益?
輸入
3 3
1 3 3
2 2 2
3 2 1
輸出
9
就是每個(gè)項(xiàng)目的最大收益累加和。
#include <iostream>
using namespace std;
//int a[1005][1005];
int main(){
int n, m;
cin>>n>>m;
int b[1005] = {0};
int a;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin>>a;
if(a > b[j]) b[j] = a;
}
}
int sum = 0;
for (int i=0; i<m; i++){
sum += b[i];
}
cout<<sum<<endl;
return 0;
}
法陣的最大威力
法陣由正多邊形構(gòu)成(至少是正三邊形),每個(gè)基座有一個(gè)威力值v_i,法陣威力值為所有基座的威力值的和。但是有些基座的威力是負(fù)值,這時(shí)我們可以移除部分法陣以使法陣威力最大,但是基座的位置不能移動(dòng),求得到的法陣的最大威力(注意:法陣是正多邊形)
輸入 第一行,基座個(gè)數(shù),第二行,每個(gè)基座的威力
6
1 5 2 -3 3 -3
輸出
6
正六邊形里有正三邊形,正八邊形里有正四邊形,正九邊形里有正三邊形,整除關(guān)系,然后遍歷所有的正多邊形即可
#include <iostream>
using namespace std;
int a[20005];
int main(){
int n;
cin>>n;
int result = 0;
for(int i=0; i<n; i++){
cin>>a[i];
result += a[i];
}
for(int k=3; k<=n/2; k++){
if(n%k == 0){
int step = n/k;
for (int i=0; i<n/k; i++){
int p=i, sum = 0;
while(p<n){
sum+=a[p];
p+=step;
}
if (result < sum) result = sum;
}
}
}
cout<<result<<endl;
return 0;
}