51nod 1625 夹克爷发红包
题意是有一个赋有非负数的矩阵,每次可以将某一行or某一列替换成某个数值,可以替换<=k次,问如何替换能使得矩阵总和最大,输出最大值。
一开始想的是简单的贪心:比如找当前收益最大的行或者列来替换。这样的问题在于:替换行必然影响列,同理列影响行,就是说当前的贪心会影响之后的决策,不可行。
因为行最多10行,所以用dfs枚举行替换与否,然后再贪心地找收益最大的列来替换。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
const ll maxN=2e2+5;
ll G[maxN][maxN], T[maxN][maxN], C[maxN];
bool used[maxN];
ll n, m, x, k, ans;
void calc() {
ll us = 0;
memcpy(T, G, sizeof G);
FOR(i, 1, n) if (used[i]) {
++us;
FOR(j, 1, m) T[i][j] = x;
}
ll sy = k - us;
memset(C, 0, sizeof C);
FOR(j, 1, m) FOR(i, 1, n) C[j] += T[i][j];
ll aft = n * x;
FOR(s, 1, sy) {
ll idx = min_element(C + 1, C + 1 + m) - C;
if (C[idx] >= aft) break;
C[idx] = aft;
FOR(i, 1, n) T[i][idx] = x;
}
ll t = 0;
FOR(i, 1, n) FOR(j, 1, m) t += T[i][j];
ans = max(ans, t);
}
void dfs(ll r, ll tk) {
if (tk > k) return;
if (r > n) calc();
else {
used[r] = 1;
dfs(r + 1, tk + 1);
used[r] = 0;
dfs(r + 1, tk);
}
}
int main () {
cin >> n >> m >> x >> k;
memset(used, 0, sizeof used);
FOR(i, 1, n)
FOR(j, 1, m) cin >> G[i][j];
ans = 0;
dfs(1, 0);
cout << ans << '\n';
return 0;
}
51nod 1625 夹克爷发红包的更多相关文章
- 51nod 1625 贪心/思维
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1625 1625 夹克爷发红包 基准时间限制:1 秒 空间限制:13107 ...
- PHP实现发红包程序
我们先来分析下规律. 设定总金额为10元,有N个人随机领取: N=1 第一个 则红包金额=X元: N=2 第二个 为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数. 第 ...
- PHP实现发红包程序(helloweba网站经典小案例)
我们先来分析下规律. 设定总金额为10元,有N个人随机领取: N=1 第一个 则红包金额=X元: N=2 第二个 为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数. 第 ...
- 使用PHP编写发红包程序
使用PHP编写发红包程序 http://www.jb51.net/article/69815.htm 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2015-07-22 微信发红 ...
- js 发红包
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- 发红包android
立即春节,写个应景的控件 思路分析 1.红包沿着不同的轨迹由上往下运动 2.当手指捕获到一个红包,红包停止原先的运动,能够随着手指的滑动做跟手操作 3.当手指动作停止后,红包放大 4. ...
- 微信小程序红包开发 小程序发红包 开发过程中遇到的坑 微信小程序红包接口的
最近公司在开发一个小程序红包系统,客户抢到红包需要提现.也就是通过小程序来给用户发红包. 小程序如何来发红包呢?于是我想到两个方法. 之前公众号开发一直用了的.一个是红包接口,一个是企业支付接口.一开 ...
- 微信小程序发红包
背景: 近期一个朋友公司要做活动,活动放在小程序上.小程序开发倒是不难,不过要使用小程序给微信用户发红包,这个就有点麻烦 确定模式: 小程序目前没有发红包接口,要实现的话,只能是模拟红包,即小程序上做 ...
- JAVA发红包案例
模拟拼手气红包* 对于指定总金额以及红包个数,可以生成不同金额的红包,*,每个红包金额随机生成. * 分析这个题目:* 1.首先需要一个分发红包的方法.输入的参数是 总金额 以及 红包个数.* 按照这 ...
随机推荐
- (转)mybatis-plus入门
目前正在维护的公司的一个项目是一个ssm架构的java项目,dao层的接口有大量数据库查询的方法,一个条件变化就要对应一个方法,再加上一些通用的curd方法,对应一张表的dao层方法有时候多达近20个 ...
- (转)Spring常见注解总结
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文 ...
- Spark2.1.0——深入理解事件总线
Spark2.1.0——深入理解事件总线 概览 Spark程序在运行的过程中,Driver端的很多功能都依赖于事件的传递和处理,而事件总线在这中间发挥着至关重要的纽带作用.事件总线通过异步线程,提高了 ...
- 开启Centos网卡失败的解决办法
虚拟机安装了Centos,使用ip addr命令查看网卡,但是ens33没有ip地址,按照网上说的,修改ens33网卡的配置文件: vi /etc/sysconfig/network-scripts/ ...
- 【SpringBoot系列3】SpringBoot使用事务和AOP
前言: 因为SpringBoot操作两者实在太简单了,我就放一起来写了. 正文(事务): /** * springboot中运用事务 * 真的超级方便,直接加上注解就ok了,连配置都省了 * @ret ...
- smarty 模板标签
smarty 模板标签 变量标签 数组变量标签 变量调节器 条件标签 循环标签 数组变量标签 模板加载标签 预定义变量标签 常量标签
- C# 在webapi项目中配置Swagger(最新版2017)
这篇文章已经过时了: http://www.cnblogs.com/alunchen/p/6888002.html 不用那么繁琐的配置了,直接导入一个包就行了: Install-Package Swa ...
- [转]Microsoft SQL SERVER 2008 R2 REPORT SERVICE 匿名登录
本文转自:https://www.cnblogs.com/Zouzhe/p/5736070.html SQL SERVER 2008 R2 是微软目前最新的数据库版本,在之前的SQL SERVER 2 ...
- [android] 看博客学习Android常见的几种RuntimeException
异常分为两种: 1.编译时异常 当编译时异常抛出时,需要对其进行处理声明,否则编译不通过 2.运行时异常 编译时不检测,运行时 如果抛出,程序会立刻停止 NullPointerException 空指 ...
- 一:MyBatis知识整理(1)
一:MyBatis的架构 1.mybatis配置SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文 ...