0827笔试

项目分配

一个人可以负责多个项目,一个项目只能由一个人负责,每个员工i负责项目j
的收益为a[i, j],求最大收益?

输入

3 3
1 3 3
2 2 2
3 2 1

输出

9

就是每个项目的最大收益累加和。

#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;
} 

法阵的最大威力

法阵由正多边形构成(至少是正三边形),每个基座有一个威力值v_i,法阵威力值为所有基座的威力值的和。但是有些基座的威力是负值,这时我们可以移除部分法阵以使法阵威力最大,但是基座的位置不能移动,求得到的法阵的最大威力(注意:法阵是正多边形

输入 第一行,基座个数,第二行,每个基座的威力

6
1 5 2 -3 3 -3

输出

6

正六边形里有正三边形,正八边形里有正四边形,正九边形里有正三边形,整除关系,然后遍历所有的正多边形即可

#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;
} 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 阵法称之为“布阵”,是古代军队的野战队形,它是人类战争发展到一定历史阶段的产物,盛行于冷兵器时代,消亡于热兵器时代...
    晓寒深处明月人倚楼阅读 5,055评论 0 2
  • 1. 随着互联网时代成为当今社会发展的主题,我们获得信息的途径变多了,方便自己的同时,我们要面对的问题也变多了。现...
    赵宇晗阅读 422评论 4 5
  • 近两个月在吉吉社群连续打卡,让自己保持写作和画画的习惯,其实在两轮之后,我打算休整轮空一次了。因为就算是自带鸡血属...
    凯瑞理想生活代言人阅读 202评论 0 0
  • 逆行时刻阅读 186评论 2 3