仅枚举一次行列的值,后续随着取值更新权值

#include <bits/stdc++.h>
using namespace std;
const int maxn=15;
int mp[maxn][maxn];
int n,m,k;
int ans;
int h[maxn],l[maxn];
vector<int> q;
bool cmp(int a,int b){
    return a>b;
}
int main(){
    while(cin>>n>>m>>k){
        int ans=0;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                cin>>mp[i][j];
            }
        }
        memset(h,0,sizeof(h));
        memset(l,0,sizeof(l));
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                h[i]+=mp[i][j];
            }
            q.push_back(h[i]);
        }
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                l[i]+=mp[j][i];
            }
            q.push_back(l[i]);
        }
        if(k>=n || k>=m){
            for(int i=0;i<n;i++){
                for(int j=0;j<m;j++){
                    ans+=mp[i][j];
                }
            }
            cout<<ans<<endl;
            continue;
        }

        //0~n-1 行,n~m-1列
        while(k--){
            int maxi=0,maxx=0;
            for(int i=0;i<q.size();i++){
                if(q[i]>maxx){ maxi=i;
                    maxx=q[i];
                }
            }
            ans+=maxx; q[maxi]=0;
            if(maxi>n-1){
                for(int i=0;i<n;i++){
                    q[i]-=mp[i][maxi-n];
                }
            }
            if(maxi<=n-1){
                for(int i=n;i<q.size();i++){
                    q[i]-=mp[maxi][i-n];
                }
            }
        }
        cout<<ans<<endl;
    }
     
     
    return 0;
}
不知道为什么只过了95%数据,感觉应该是可以的,求大佬们帮忙查查错
全部评论
3 3 2 1001 1 101 1001 0 101 0 0 0
点赞 回复 分享
发布于 2020-02-29 07:55
已找到错误,提供一组数据hack一下
点赞 回复 分享
发布于 2020-02-29 07:53
我也是95,不知道哪里出错了
点赞 回复 分享
发布于 2020-02-28 23:30

相关推荐

10-13 22:56
门头沟学院 C++
rt,鼠鼠的浪潮网签明天过期,鼠鼠是山东人,好像自己也能接受。之前的面试大厂基本挂干净了,剩下小米二面后在泡,问了下面试官没有挂,但要泡。还有海信似乎也通过了,不过在深圳,鼠鼠也不是很想去。其它还有一些公司应该陆陆续续还有一些面试,现在有些纠结是直接签了还是再等再面呢?大佬们能不能给鼠鼠提一些意见,万分感谢!!!
牛客78696106...:浪潮可不是开摆,当初我还是开发的时候我组长跟我说他们组有段时间天天1,2点走,早上5点就来,全组肝出来心肌炎,浪潮挣钱省立花可不是说说,当然也看部门,但是浪潮普遍就那dio样,而且你算下时薪就知道不高,没事也是9点半走,不然算你旷工
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
09-23 14:45
贵州大学 财务
勇敢求职牛牛:怎么9.2佬人手一个中信证券实习
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务