CodeForces 446B
DZY Loves Modification
2 seconds
256 megabytes
standard input
standard output
As we know, DZY loves playing games. One day DZY decided to play with a n × m matrix. To be more precise, he decided to modify the matrix with exactly k operations.
Each modification is one of the following:
- Pick some row of the matrix and decrease each element of the row by p. This operation brings to DZY the value of pleasure equal to the sum of elements of the row before the decreasing.
- Pick some column of the matrix and decrease each element of the column by p. This operation brings to DZY the value of pleasure equal to the sum of elements of the column before the decreasing.
DZY wants to know: what is the largest total value of pleasure he could get after performing exactly k modifications? Please, help him to calculate this value.
Input
The first line contains four space-separated integers n, m, k and p (1 ≤ n, m ≤ 103; 1 ≤ k ≤ 106; 1 ≤ p ≤ 100).
Then n lines follow. Each of them contains m integers representing aij (1 ≤ aij ≤ 103) — the elements of the current row of the matrix.
Output
Output a single integer — the maximum possible total pleasure value DZY could get.
Examples
2 2 2 2
1 3
2 4
11
2 2 5 2
1 3
2 4
11
Note
For the first sample test, we can modify: column 2, row 2. After that the matrix becomes:
1 1
0 0
For the second sample test, we can modify: column 2, row 2, row 1, column 1, column 2. After that the matrix becomes:
-3 -3
-2 -2
题意:
给定n行m列的矩阵 k次操作,一个常数p,ans = 0;对于每次操作,可以任选一行或一列, 则ans += 这行(列)的数字和,然后这行(列)上的每个数字都-=p
//2016.8.19
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define ll __int64
#define inf 999999999 using namespace std; ll rsum[], csum[], rres[], cres[];
priority_queue<ll> pq1;
priority_queue<ll> pq2; int main()
{
ll n, m, k, p;//被数据恶心到了,这行类型改成ll才过
ll tmp, val;
while(cin>>n>>m>>k>>p)
{
memset(rsum, , sizeof(rsum));
memset(csum, , sizeof(csum));
memset(rres, , sizeof(rres));
memset(cres, , sizeof(cres));
for(int i =; i < n; i++)
{
for(int j = ; j < m; j++)
{
scanf("%I64d", &val);
rsum[i] += val;//rsum[i]表示第i行之和
csum[j] += val;//csum[i]表示第i列之和
}
}
while(!pq1.empty())pq1.pop();
for(int i = ; i < n; i++)
{
pq1.push(rsum[i]);
}
for(int i = ; i <= k; i++)
{
tmp = pq1.top();
pq1.pop();
rres[i] = rres[i-]+tmp;//rres[i]表示选了i行的值
tmp-=p*m;
pq1.push(tmp);
}
while(!pq2.empty())pq2.pop();
for(int i = ; i < m; i++)
{
pq2.push(csum[i]);
}
for(int i = ; i <= k; i++)
{
tmp = pq2.top();
pq2.pop();
cres[i] = cres[i-]+tmp;//cres[i]表示选了i列的值
tmp-=p*n;
pq2.push(tmp);
}
ll happy = inf;
happy = -happy*happy;
for(int i = ; i <= k; i++)
happy = max(happy, rres[i]+cres[k-i]-p*i*(k-i));
cout<<happy<<endl;
} return ;
}
CodeForces 446B的更多相关文章
- codeforces 446B(优先队列)
题目链接:http://codeforces.com/problemset/problem/446/B #include<bits/stdc++.h> using namespace st ...
- CodeForces 446B DZY Loves Modification
题意: k次操作 每次选择一行或一列 得到所选数字的和 并将所选数字同一时候减去p 问最多得到多少 思路: 重点在消除行列间的相互影响 因为每选一行全部列所相应的和都会-p 那么假设选了i次 ...
- 11.1 正睿停课训练 Day14
目录 2018.11.1 正睿停课训练 Day14 A 字符串 B 取数游戏(贪心) C 魔方(模拟) 考试代码 B C 2018.11.1 正睿停课训练 Day14 时间:3.5h 期望得分:100 ...
- 【组队赛三】-D 优先队列 cf446B
DZY Loves Modification Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Sub ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
随机推荐
- Git 常用命令汇总
#安装git yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum install -y g ...
- jQuery中的attr()和prop()使用
总结:除了checked.seleted这样的属性推荐用prop()外,其他的随意都可以. 原因如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML ...
- javascript 基础系列(一)
闭包: function 内部访问外部的variables function f(){ alert(ysr); } 报错了. Certain language constructs block the ...
- 笔记:利用 Cocos2dx 3.2 与 Box2D制作一个跑酷游戏(上)
最近写lua写得没有力气了,所以想让脑袋放松一下,刚好看到有人在用swift做游戏: Swift游戏实战-跑酷熊猫 于是脑子一短路,就想到了利用这些素材来做一个游戏. 本来不想记笔记的,但是由于选择物 ...
- 在windos 环境下安装
在windows 环境下安装node 和 StrongLoop需要一些几个步骤. 本人使用的安装软件,文章最后的分享. 1,安装Git: 2,安装Node.js: 3,安装npm: 4,安装Stron ...
- AppServ设置虚拟主机 及域名连接
1: 安装好AppServ2.5.9软件,官网是:http://www.appservnetwork.com/ ,2.59下载地址是:http://nchc.dl.sourceforge.net/so ...
- Cookie的格式及组成
转自:http://blog.csdn.net/talking12391239/article/details/9665185 Cookie由变量名和值组成,类似JavaScript变量.其属性里既有 ...
- 修改maven本地仓库的位置
- mysql表明保存不了,多了空格都不行啊
mysql表明保存不了,多了空格都不行啊
- php中DateTime的format格式以及 TtoDatetime函数
Definition and Usage The date() function formats a local time/date. Syntaxdate(format,timestamp)Para ...