地址:https://www.nowcoder.com/acm/contest/212/B

思路:对于行列选取,是选择所有行中的最大值的最小值,当是并不能用贪心来做,例如

2 2 2
7 8
1 9

如果用贪心的话就是7+8=15,但是最小值是1+9=10

对于a[i][j]行按照由大到小排序,列按照行总和由小到大排序,选取顺序应该是以每次选择一整行来考虑的,即若k>=m,则选取前m个数一定是选取一整行的数的,可以这样考虑借鉴博客Wannafly挑战赛26: B. 冥土追魂(思维题)

假设第1行选择了前x个数字, 第2行选择了前y个数字,且x, y<m(都没选满一行)

首先肯定a[2][y+1]>a[1][x] (如果a[2][y+1]<=a[1][x]的话,那么选择a[2][y+1]更优,而不会选a[1][x]了)   那么可以得出a[2][y+1]>a[1][x] → a[2][y]>a[1][x] → a[2][y]>a[1][x+1],这样的话如果第二行选择前y-1个数字,第一行选择前x+1个一定更优

t1=k/m,t2=k%m, 那么可以对于t2可以枚举所有行,在取前t1(不包含t2选取行)行,保存最小值即可

Code :

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;const int MAX_N=1005;
const int MAX_M=1005;
int n,m,s;
int a[MAX_N][MAX_M];
struct node{LL Sum[MAX_M];int id;bool operator<(const node &p)const{return Sum[m]<p.Sum[m];}
}d[MAX_N];bool cmp(const int &a,const int &b){return a>b;
}
int main()
{ios::sync_with_stdio(false);while(cin>>n>>m>>s){for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)cin>>a[i][j];for(int i=1;i<=n;++i)sort(a[i]+1,a[i]+m+1,cmp);for(int i=1;i<=n;d[i].id=i++)for(int j=1;j<=m;++j)d[i].Sum[j]=d[i].Sum[j-1]+a[i][j];sort(d+1,d+n+1);LL ans=1e18,num;for(int i=1;i<=n;++i){num=d[i].Sum[s%m];for(int j=1,t=s/m;j<=n&&t>0;++j){if(i==j&&s%m) continue;num+=d[j].Sum[m];--t;}ans=min(ans,num);}cout<<ans<<endl;}return 0;
}

Wannafly挑战赛26-B 冥土追魂相关推荐

  1. Wannafly挑战赛26: B. 冥土追魂(思维题)

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misa ...

  2. Wannafly挑战赛26 B.冥土追魂 贪心

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misa ...

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

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言104 ...

  4. Wannafly挑战赛26 B 冥土追魂(暴力)

    题意:链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misaka ...

  5. Wannafly挑战赛26 B冥土追魂

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言104 ...

  6. wannafly挑战赛26 B 冥土追魂 (思维+排序)

    大致题意 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏- Misaka和Kuroko在一个 n x m 的棋盘上玩游戏,每个格子上都放着一些呱太.游戏共进行 k 回合,每一回合 ...

  7. Wannafly挑战赛26 B 冥土追魂

    首先,证明结果一定是取某些整行,再加上一个多余的一行的前几个. 假如: x1<=x2<=x3<=x4<=x5 y1<=y2<=y3<=y4<=y5 取6 ...

  8. Wannafly挑战赛26:B冥土追魂(模拟?贪心?暴力?)

    题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misaka和Kuroko在一个 n x m 的棋盘上玩游戏,每个格子上都放着一些呱太.游戏共进行 k 回合,每一 ...

  9. [贪心] 冥土追魂 Wannafly挑战赛26

    链接:https://www.nowcoder.com/acm/contest/212/B 来源:牛客网 冥土追魂 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他 ...

最新文章

  1. 用什么软件测试mate9的闪存_超越苹果?余承东重拳出击,华为Mate40 Pro确认采用海思自研闪存!...
  2. 搭建DVWA漏洞环境
  3. python安装wxpython库_wxPython:python 首选的 GUI 库
  4. 郭明錤爆料:苹果造车团队已解散
  5. java程序设计自考_java程序设计自考试题
  6. 解决命令行的乱码以及编码的问题
  7. 配置IIS5.5/6.0 支持 Silverlight
  8. 手把手教你用ls-dyna做入水冲击荷载仿真分析(一)大体介绍
  9. Confluence OGNL表达式注入漏洞复现与分析(CVE-2022-26134)
  10. python周环比增长率怎么算_Pandas实现计算同比、环比
  11. Git基本知识和常用命令(IDEA)
  12. 关于Virtual的英语含义
  13. 1024程序员节 技术对抗赛 算法与安全答题 标准答案
  14. ASCII码对照表(C++17 实现ANSI、UTF8、Unicode字符编码互转)
  15. 卫哲:阿里的中供铁军为什么能培养出滴滴程维?
  16. Github下载C++代码运行出现的问题
  17. 使用javascript抓取网站数据
  18. 作为一名成熟的云原生布道师,我是这么写作的
  19. 透彻理解“对数”概念及其在量化交易中的意义
  20. ARM 立即数范围以及合法立即数

热门文章

  1. 国内三大主流CDN横向全对比
  2. 输出1900-2000年中所有的闰年。每输出3个年号换一行。
  3. Eclipse中PHP插件使用
  4. 如何用计算机计算梁的受力,钢筋混凝土梁截面计算器 | 弯矩和剪力图计算器
  5. 使用Megacli64对服务器物理磁盘做Raid并通过uuid方式挂载
  6. 存储在阿里云的视频在浏览器中直接播放
  7. form转化json
  8. 推荐系统学习笔记03-矩阵分解和FM
  9. SQLSERVER中的 CEILING函数和 FLOOR函数
  10. digitalLogic_根据表达式画电路图的建议(与非门实现全加器实例)