nowcoder (牛客)Wannafly挑战赛26 B: 冥土追魂 (思维)

链接:https://www.nowcoder.com/acm/contest/212/B
来源:牛客网
 

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 524288K,其他语言1048576K
64bit IO Format: %lld

题目描述

有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏....
Misaka和Kuroko在一个 n x m 的棋盘上玩游戏,每个格子上都放着一些呱太。游戏共进行 k 回合,每一回合 Kuroko会选**有呱太**的一行 i,在这之后Misaka会选择一列 j ,并拿走格子 (i, j) 上的所有呱太,Misaka希望自己拿走的呱太尽可能多,而Kuroko不想让Misaka拿走很多呱太,所以她希望拿走的呱太尽可能少。
在一旁围观的恒温死神希望预测结果,请你预测在双方都采取最优策略的情况下,Misaka最终能拿走呱太的数量。

输入描述:

第一行三个数 n, m, k。 
接下来 n 行,每行 m 个数,第 i 行第 j 个数表示棋盘第 i 行第 j 列上的呱太数量 ai,j。

输出描述:

输出共一个数,表示在你的预测下,Misaka最终能拿走呱太的数量。

示例1

输入

复制

3 2 4
5 7
3 2
8 5

输出

复制

17

备注:

1≤ n, m ≤ 1000, 1 ≤ k ≤ n x m, 1 ≤ ai,j ≤ 1

[思路]

最优策略为:   

最多有一行内 选择的个数 不超过m (k%m)

剩下的n-1行  要么全选, 要么全不选,  即n-1行sum 和从小到大  选择(k/m)个

枚举(k%m)+暴力 (k/m)

[代码]

#include <bits/stdc++.h>
#include <stdio.h>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,a,n) for(int i=n;i>=a;i--)

typedef long long ll;
const int maxn = 1e5+10;
const int mod =1e9+7;
const int inf = 0x3f3f3f3f;
using namespace std;

ll a[1010][1010];
ll tx[1010];
int cmp(int a,int b)
{
    return a>b;
}
int main(int argc, char const *argv[])
{
    ll n,m,k;
    scanf("%lld %lld %lld",&n,&m,&k);
    ll sum = 0;

    rep(i,1,n)
    {
        sum = 0;
        rep(j,1,m)
        {
            scanf("%lld",&a[i][j]);
            sum+=a[i][j];
        }
        tx[i] = sum;
        sort(a[i]+1,a[i]+1+m,cmp);
    }

    if( k == n*m )
    {
        sum = 0;
        rep(i,1,n)
            sum+=tx[i];
        cout<<sum<<endl;
        return 0;
    }

    int t = k%m;
    int s = k/m;
    ll ans = (1ll<<63-1);
    rep(i,1,n)
    {
        std::vector<ll> v;
        v.clear();
        sum = 0;
        rep(j,1,t)
            sum+=a[i][j];
        per(j,1,n)
        {
            if( i!=j)
                v.push_back(tx[j]);
        }
        sort(v.begin(),v.end());
        rep(j,0,s-1)
            sum+=v[j];
        ans = min(ans,sum);
    }
    printf("%lld\n",ans);
    return 0;
}
发布了372 篇原创文章 · 获赞 89 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/sizaif/article/details/83045010