51nod 1625 贪心/思维
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1625


第一行为n, m, x, k四个整数。 1 <= n <= 10, 1 <= m <= 200
1 <= x <= 10^9,0 <= k <= n + m 接下来为一个n * m的矩阵,代表每个观众获得的普通红包的金额。普通红包的金额取值范围为1 <= y <= 10^9
输出一个整数,代表现场观众能获得的最大红包总金额
3 4 1 5
10 5 7 2
10 5 10 8
3 9 5 4
78
还有这种操作,贪心半天发现会有后效性,后来看题解说枚举行状态我才明白过来= =,将行状态固定之后再去贪心的更新列状态找到最大值就方便多了。
万恶的bug竟是因为我用s1记录已经发过了几行红包,更新列的时候直接 (int j=s1;j<=k;++j) ,特喵的相当于赠送了一个红包,检查了半天我也是服气!
#include<bits/stdc++.h>
using namespace std;
#define LL long long
LL e[][];
LL r[];
LL o[];
int main()
{
LL n,m,x,k,i,j;
cin>>n>>m>>x>>k;
for(i=;i<=n;++i)
{
for(j=;j<=m;++j)
{
scanf("%lld",&e[i][j]);
r[i]+=e[i][j];
}
}
for(i=;i<=m;++i)
for(j=;j<=n;++j)
o[i]+=e[j][i];
LL ans=;
for(i=;i<(<<(n));++i)
{
LL s1=,s2=;
for(j=;j<=n;++j)
{
if(i&(<<(j-))){
s1++;
s2+=x*m;
}
else s2+=r[j];
}
if(s1>k) continue;
priority_queue<LL,vector<LL>,greater<LL> >q; for(j=;j<=m;++j)
{
LL fro=o[j];
for(LL c=;c<=n;++c)
if(i&(<<(c-))) {fro+=(x-e[c][j]);}
q.push(fro);
}
for(j=s1+;j<=k;++j)
{
LL t=q.top();
if(t>x*n||q.empty()) break;
else{
s2+=(x*n-t);
q.pop();
} }
ans=max(ans,s2); }
cout<<ans<<endl;
return ;
}
/*
附上一组数据
3 3 30 2
10 10 10
1 1 99
20 20 99
388
*/
51nod 1625 贪心/思维的更多相关文章
- 51nod 1099 贪心/思维
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1099 1099 任务执行顺序 基准时间限制:1 秒 空间限制:13107 ...
- Mike and distribution CodeForces - 798D (贪心+思维)
题目链接 TAG: 这是我近期做过最棒的一道贪心思维题,不容易想到,想到就出乎意料. 题意:给定两个含有N个正整数的数组a和b,让你输出一个数字k ,要求k不大于n/2+1,并且输出k个整数,范围为1 ...
- Codeforces Round #546 (Div. 2) D 贪心 + 思维
https://codeforces.com/contest/1136/problem/D 贪心 + 思维 题意 你面前有一个队列,加上你有n个人(n<=3e5),有m(m<=个交换法则, ...
- 贪心/思维题 Codeforces Round #310 (Div. 2) C. Case of Matryoshkas
题目传送门 /* 题意:套娃娃,可以套一个单独的娃娃,或者把最后面的娃娃取出,最后使得0-1-2-...-(n-1),问最少要几步 贪心/思维题:娃娃的状态:取出+套上(2),套上(1), 已套上(0 ...
- 贪心/思维题 UVA 11292 The Dragon of Loowater
题目传送门 /* 题意:n个头,m个士兵,问能否砍掉n个头 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 */ #include <cstdio> #include <c ...
- T - Posterized(贪心思维)
Description Professor Ibrahim has prepared the final homework for his algorithm’s class. He asked hi ...
- 51nod 1563 坐标轴上的最大团(今日gg模拟第一题) | 线段覆盖 贪心 思维题
51nod 1563 坐标轴上的最大团 坐标轴上有n个点,每个点有一个权值.第i个点的坐标是 xi ,权值是 wi .现在对这些点建图.对于点对 (i,j) ,如果 |xi−xj|≥wi+wj ,那么 ...
- 51nod 1163贪心
用优先队列来贪心,是一个很好地想法.优先队列在很多时候可以维护最值,同时可以考虑到一些其他情况. http://www.51nod.com/onlineJudge/questionCode.html# ...
- 51nod 1428 贪心
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 1428 活动安排问题 基准时间限制:1 秒 空间限制:13107 ...
随机推荐
- 微信开发模板--easywechat
链接地址:https://easywechat.org/zh-cn/docs/installation.html
- MySQL中的SQL流程分析简述
分析MySQL中这条语句的整个流程 update table_a set c1=xx where c2=xxx 朋友考我的一个问题在此处列出个人见解 1 客户端连接进来首先进行权限验证 2 验证通过后 ...
- java中参数传递的问题
public class Test { public static void main(String[] args) { StringBuffer a = new StringBuffer(" ...
- Linux中权限管理之sudo权限
1.suodo的操作对象是系统命令 2.root把本来只能是超级用户执行的命令赋予普通用户执行 3.设置sudo权限 命令:visudo 找到: ## Allow root to run any co ...
- boost之时间timer
C++一直缺乏对时间和日期的处理能力,一般借助于C的struct tm和time():timer包含三个类其中timer,progress_timer是计时器类,进度指示类是progress_disp ...
- SMARTFORM 传值的4种方法
*& 20161019 160300 smartform传值的方法 1.通过结构 传值: 最通常的用法是通过SE11中建立STRUCTURE XXX(表则没用),在REPORT中申明此结构的数 ...
- SQL模糊查找
编辑器加载中... /*********************实现模糊查找**************************/ SELECT [UserId] ,[UserName] ,[User ...
- C# 获取MD5值
class CommonHelper { /// <summary> /// 通过字符串获取MD5值,返回32位字符串. /// </summary> /// <para ...
- 在freescale mx6q平台上添加spi资源
1:配置管脚为SPI功能 在board-mx6q_sabresd.h的最后添加,复制被重定义 (以添加SPI2为例) <span style="font-size:18px;" ...
- imx6q 添加intel PCIE网卡
TQ_IMX6Q开发板移植rtl8168-PCIE转千兆网卡 一.配置内核选项PCIE总线驱动支持 默认的内核配置可能没有把PCIE的总线驱动编入内核,所以需要确认是否把驱动编译到了内核里面. 配置好 ...