热门标签 | 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;
}


推荐阅读
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 洛谷 P4009 汽车加油行驶问题 解析
    探讨了经典算法题目——汽车加油行驶问题,通过网络流和费用流的视角,深入解析了该问题的解决方案。本文将详细阐述如何利用最短路径算法解决这一问题,并提供详细的代码实现。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 在Qt框架中,信号与槽机制是一种独特的组件间通信方式。本文探讨了这一机制相较于传统的C风格回调函数所具有的优势,并分析了其潜在的不足之处。 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 本文通过C++语言实现了一个递归算法,用于解析并计算数学表达式的值。该算法能够处理加法、减法、乘法和除法操作。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 本题要求计算一组正整数的最小公倍数(LCM)。输入包括多组测试数据,每组数据首先给出一个正整数n,随后是n个正整数。 ... [详细]
  • linux网络子系统分析(二)—— 协议栈分层框架的建立
    目录一、综述二、INET的初始化2.1INET接口注册2.2抽象实体的建立2.3代码细节分析2.3.1socket参数三、其他协议3.1PF_PACKET3.2P ... [详细]
  • Logging all MySQL queries into the Slow Log
    MySQLoptionallylogsslowqueriesintotheSlowQueryLog–orjustSlowLog,asfriendscallit.However,Thereareseveralreasonstologallqueries.Thislistisnotexhaustive:Belowyoucanfindthevariablestochange,astheyshouldbewritteninth ... [详细]
  • c语言二元插值,二维线性插值c语言
    c语言二元插值,二维线性插值c语言 ... [详细]
  • Beetl是一款先进的Java模板引擎,以其丰富的功能、直观的语法、卓越的性能和易于维护的特点著称。它不仅适用于高响应需求的大型网站,也适合功能复杂的CMS管理系统,提供了一种全新的模板开发体验。 ... [详细]
  • 本文通过一个具体的实例,介绍如何利用TensorFlow框架来计算神经网络模型在多分类任务中的Top-K准确率。代码中包含了随机种子设置、模拟预测结果生成、真实标签生成以及准确率计算等步骤。 ... [详细]
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社区 版权所有