热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

选数字(贪心)

选数字 题目描述: LYK 找到了一个 n*m 的矩阵,这个矩阵上都填有一些数字,对于第 i 行第 j 列的位置上的数为 ai,j。 由于它 AK 了 n

选数字

题目描述:
LYK 找到了一个 n*m 的矩阵,这个矩阵上都填有一些数字,对于第 i 行第 j 列的位置上的数为 ai,j。
由于它 AK 了 noip2016 的初赛,最近显得非常无聊,便想到了一个方法自娱自乐一番。
它想到的游戏是这样的:每次选择一行或者一列,它得到的快乐值将会是这一行或者一列的数字之和。之后它将该行或者该列上的数字都减去 p(之后可能变成负数)。如此,重复 k次,它得到的快乐值之和将会是它 NOIP2016 复赛比赛时的 RP 值。
LYK 当然想让它的 RP 值尽可能高,于是它来求助于你。
输入格式:
第一行 4 个数 n,m,k,p.
接下来 n 行 m 列,表示 ai,j。
输出格式:
输出一行表示最大 RP 值。
输入样例:
2 2 5 2
1 3
2 4
输出样例:
11
数据范围:
总共 10 组数据。
对于第 1,2 组数据 n,m,k<&#61;5。
对于第 3 组数据 k&#61;1。
对于第 4 组数据 p&#61;0。
对于第 5,6 组数据 n&#61;1&#xff0c; m,k<&#61;1000。
对于第 7,8 组数据 n&#61;1&#xff0c; m<&#61;1000&#xff0c; k<&#61;1000000。
对于所有数据 1<&#61;n,m<&#61;1000&#xff0c; k<&#61;1000000&#xff0c; 1<&#61;ai,j<&#61;1000&#xff0c; 0<&#61;p<&#61;100。
样例解释&#xff1a;
第一次选择第二列&#xff0c;第二次选择第二行&#xff0c;第三次选择第一行&#xff0c;第四次选择第二行&#xff0c;第五次选择第一行&#xff0c;快乐值为 7&#43;4&#43;2&#43;0&#43;-2&#61;11。
思路&#xff1a;
观察可以发现如果确定选几次行几次列
那么选的顺序是无所谓的
对于选行 那么肯定是选最优的 对于行也是
所以
先处理出选0~k次行和列的最优值
然后枚举选i次行则选k-i次列
行的最优值加上列的最优值减去选行和列交叉的地方多选的即可
ans&#61;max(ans,s[i]&#43;r[i]-(i)*(k-i)*p)

#include
#include
#include
#define lon long long
using namespace std;
const int maxn&#61;1010;
const lon inf&#61;-1000000000000000;
lon n,m,k,p,h[maxn*maxn],l[maxn*maxn],a[maxn][maxn];
priority_queueq;
lon init()
{lon x&#61;0,f&#61;1;char c&#61;getchar();while(c<&#39;0&#39;||c>&#39;9&#39;){if(c&#61;&#61;&#39;-&#39;)f&#61;-1;c&#61;getchar();}while(c>&#61;&#39;0&#39;&&c<&#61;&#39;9&#39;){x&#61;x*10&#43;c-&#39;0&#39;;c&#61;getchar();}return x*f;
}
int main()
{freopen("select.in","r",stdin);freopen("select.out","w",stdout);n&#61;init(),m&#61;init(),k&#61;init(),p&#61;init();for(lon i&#61;1;i<&#61;n;i&#43;&#43;)for(lon j&#61;1;j<&#61;m;j&#43;&#43;)a[i][j]&#61;init();for(lon i&#61;1;i<&#61;n;i&#43;&#43;){lon sum&#61;0;for(lon j&#61;1;j<&#61;m;j&#43;&#43;)sum&#43;&#61;a[i][j];q.push(sum);}for(lon i&#61;1;i<&#61;k;i&#43;&#43;){lon sum&#61;q.top();q.pop();h[i]&#61;h[i-1]&#43;sum;q.push(sum-p*m);}while(!q.empty()) q.pop();for(lon j&#61;1;j<&#61;m;j&#43;&#43;){lon sum&#61;0;for(lon i&#61;1;i<&#61;n;i&#43;&#43;)sum&#43;&#61;a[i][j];q.push(sum);}for(lon i&#61;1;i<&#61;k;i&#43;&#43;){lon sum&#61;q.top();q.pop();l[i]&#61;l[i-1]&#43;sum;q.push(sum-p*n);}lon ans&#61;inf;for(lon i&#61;0;i<&#61;k;i&#43;&#43;)ans&#61;max(ans,h[i]&#43;l[k-i]-i*(k-i)*p);cout<return 0;
}


推荐阅读
  • poj 3352 Road Construction ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • 本文介绍如何使用线段树解决洛谷 P1531 我讨厌它问题,重点在于单点更新和区间查询最大值。 ... [详细]
  • 本报告对2018年湘潭大学程序设计竞赛在牛客网上的时间数据进行了详细分析。通过统计参赛者在各个时间段的活跃情况,揭示了比赛期间的编程频率和时间分布特点。此外,报告还探讨了选手在准备过程中面临的挑战,如保持编程手感、学习逆向工程和PWN技术,以及熟悉Linux环境等。这些发现为未来的竞赛组织和培训提供了 valuable 的参考。 ... [详细]
  • Codeforces竞赛解析:Educational Round 84(Div. 2评级),题目A:奇数和问题
    Codeforces竞赛解析:Educational Round 84(Div. 2评级),题目A:奇数和问题 ... [详细]
  • 题目解析给定 n 个人和 n 种书籍,每个人都有一个包含自己喜好的书籍列表。目标是计算出满足以下条件的分配方案数量:1. 每个人都必须获得他们喜欢的书籍;2. 每本书只能分配给一个人。通过使用深度优先搜索算法,可以系统地探索所有可能的分配组合,确保每个分配方案都符合上述条件。该方法能够有效地处理这类组合优化问题,找到所有可行的解。 ... [详细]
  • 本文介绍了 NOI Open Judge 6049 购书问题的详细解法,代码简洁易懂,并附有详细的注释和解释。 ... [详细]
  • T15483.【清华集训2017模拟11.26】简单路径T25484.【清华集训2017模拟11.26】快乐树T35485.【清华集训2017模拟11.26】字符串T1结论题,结论很 ... [详细]
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 检查在所有可能的“?”替换中,给定的二进制字符串中是否出现子字符串“10”带 1 或 0 ... [详细]
  • 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4277。作者:Bob Lee,日期:2012年9月15日。题目描述:给定n个木棍,求可以组成的不同三角形的数量,最多15根木棍。 ... [详细]
  • 本文提出了一种基于栈结构的高效四则运算表达式求值方法。该方法能够处理包含加、减、乘、除运算符以及十进制整数和小括号的算术表达式。通过定义和实现栈的基本操作,如入栈、出栈和判空等,算法能够准确地解析并计算输入的表达式,最终输出其计算结果。此方法不仅提高了计算效率,还增强了对复杂表达式的处理能力。 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
author-avatar
手机用户2502892641
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有