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


推荐阅读
  • 题目描述Takuru是一名情报强者,所以他想利用他强大的情报搜集能力来当中间商赚差价。Takuru的计划是让Hinae帮他去市场上买一个商品,然后再以另一个价格卖掉它。Takur ... [详细]
  • DescriptionclickmeSolution套路的状压期望DP题。。。考虑倒退期望:设fi,jrolepresentationstyleposi ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 796.[APIO2012]派遣在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。在这个帮派里,有一名忍者被称之为Master。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • C++ STL复习(13)容器适配器
    STL提供了3种容器适配器,分别为stack栈适配器、queue队列适配器以及priority_queue优先权队列适配器。不同场景下,由于不同的序列式 ... [详细]
  • P2765魔术球问题这道题的思路实在是太罕见了,所以发一篇blog从某一新放入的球开始看起1.放入原来的柱子上2.放入新的柱子并将每个点进行拆点࿰ ... [详细]
  • JZOJ 1266. 玉米田
    1266.玉米田(cowfood.pasccpp)(FileIO):input:cowfood.inoutput:cowfood.outTimeLimits:1000msMemor ... [详细]
  • 最大子序列和(maxsum)【问题描述】输入一个长度为n的整数序列(A1,A2,……,An),从中找出一段连续的长度不超过M的子序列,使得这个序列的和最大。例如:序列1,-3,5 ... [详细]
  • 刚开始crousera上学习<algorithmspart1>但对JAVA实在是不熟。******************************************** ... [详细]
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社区 版权所有