题意:

k次操作  每次选择一行或一列  得到所选数字的和  并将所选数字同一时候减去p  问最多得到多少

思路:

重点在消除行列间的相互影响

因为每选一行全部列所相应的和都会-p  那么假设选了i次行  则列会-i*p  同理选列

那么影响就能够这样表示 -p*i*(k-i)  把影响提出来  这样行列就不影响了

对于行或列  单独处理时相当于一维的东西  贪心就可以

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define N 1010
#define M 1000010
typedef __int64 ll; ll sum[2][N];
ll res[2][M];
ll ans,p;
int n,m,k;
struct node
{
ll val;
int x;
bool operator<(const node fa) const
{
return val<fa.val;
}
}u;
priority_queue<node> q; int main()
{
int i,j;
ll w;
scanf("%d%d%d%I64d",&n,&m,&k,&p);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
scanf("%I64d",&w);
sum[0][i]+=w;
sum[1][j]+=w;
}
}
while(!q.empty()) q.pop();
for(i=1;i<=n;i++)
{
u.x=i;
u.val=sum[0][i];
q.push(u);
}
for(i=1;i<=k;i++)
{
u=q.top();
q.pop();
res[0][i]=res[0][i-1]+u.val;
u.val-=p*m;
q.push(u);
}
while(!q.empty()) q.pop();
for(i=1;i<=m;i++)
{
u.x=i;
u.val=sum[1][i];
q.push(u);
}
for(i=1;i<=k;i++)
{
u=q.top();
q.pop();
res[1][i]=res[1][i-1]+u.val;
u.val-=p*n;
q.push(u);
}
ans=max(res[0][0]+res[1][k],res[0][k]+res[1][0]); // hang or lie
for(i=1;i<k;i++) ans=max(ans,res[0][i]+res[1][k-i]-p*i*(k-i));
printf("%I64d\n",ans);
return 0;
}

CodeForces 446B DZY Loves Modification的更多相关文章

  1. Codeforces 447D - DZY Loves Modification

    447D - DZY Loves Modification 思路:将行和列分开考虑.用优先队列,计算出行操作i次的幸福值r[i],再计算出列操作i次的幸福值c[i].然后将行取i次操作和列取k-i次操 ...

  2. Codeforces Round #FF (Div. 1) B. DZY Loves Modification 优先队列

    B. DZY Loves Modification 题目连接: http://www.codeforces.com/contest/446/problem/B Description As we kn ...

  3. Codeforces Round #FF (Div. 2) D. DZY Loves Modification 优先队列

    D. DZY Loves Modification time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  4. [CodeForces - 447D] D - DZY Loves Modification

    D - DZY Loves Modification As we know, DZY loves playing games. One day DZY decided to play with a n ...

  5. Codeforces Round #FF (Div. 1) B. DZY Loves Modification

    枚举行取了多少次,如行取了i次,列就取了k-i次,假设行列单独贪心考虑然后相加,那么有i*(k-i)个交点是多出来的:dpr[i]+dpc[k-i]-i*(k-i)*p 枚举i取最大值.... B. ...

  6. Codeforces 444C DZY Loves Colors(线段树)

    题目大意:Codeforces 444C DZY Loves Colors 题目大意:两种操作,1是改动区间上l到r上面德值为x,2是询问l到r区间总的改动值. 解题思路:线段树模板题. #inclu ...

  7. D. DZY Loves Modification

    D. DZY Loves Modification time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  8. B. DZY Loves Modification

    B. DZY Loves Modification time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  9. Codeforces 444A DZY Loves Physics(图论)

    题目链接:Codeforces 444A DZY Loves Physics 题目大意:给出一张图,图中的每一个节点,每条边都有一个权值.如今有从中挑出一张子图,要求子图联通,而且被选中的随意两点.假 ...

随机推荐

  1. QT绘制半透明窗体(改写paintEvent,超级简单)

    在派生类中重载QDialog的void paintEvent(QPaintEvent *)事件,在这个函数中加入以下代码 QPainter painter(this);    QLinearGradi ...

  2. 返回hash 类型的json

    else{ $hash{$phone}="没有找到需要的验证码信息"; $c->render(json =>  \%hash );

  3. Android最新源码4.3下载-教程 2013-11

    Android最新源码4.3下载-教程 有的下载会出现问题: 需要 修改manifest.xml中的fetch: "git://Android.git.linaro.org/"  ...

  4. __autoload函数

    ./index.php----------------------------------------------------------------------------------<?ph ...

  5. win32下利用python操作printer

    在win32下操作printer:   1)import win32print   2) 获得默认打印机名:          >>> win32print.GetDefaultPr ...

  6. 用python解析html

    python中,有三个库可以解析html文本,HTMLParser,sgmllib,htmllib.他们的实现方法不通,但功能差不多.这三个库中 提供解析html的类都是基类,本身并不做具体的工作.他 ...

  7. hdu2243之AC自动机+矩阵乘法

    考研路茫茫——单词情结 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  8. python idle 错误 subprocess didn&#39;t make connection

    今天打开python idle不反应.然后通过网上搜索让我在安装文件夹下点击idle.py 弹出如图所看到的的错误,进行了非常多尝试.任然没有得到解决.可是在尝试过程中发现了大家所说问题所在都是由于新 ...

  9. 关于Cocos2d-x 3.0正式版 粒子问题在IOS上正常显示,在Android下有问题的解决方式

    前几个在Cocos2d-x论坛上,有人提到粒子系统的问题..这里列举一下解决的方法: 或许到时候大家用粒子效果的时候也会发现这个问题,如今把这个问题的解决办法说出来.至于原因我也不知道是引擎的问题还是 ...

  10. (十六)JQuery Ready和angularJS controller的运行顺序问题

    项目中使用了JQuery和AngularJS框架,近期定位一个问题,原因就是JQuery Ready写在了angularJS controller之前,导致JQuery选择器无法选中须要的元素(由于a ...