【2019牛客暑期多校训练营(第二场)- F】Partition problem(dfs,均摊时间优化)

题干:

链接:https://ac.nowcoder.com/acm/contest/882/F
来源:牛客网
 

Given 2N people, you need to assign each of them into either red team or white team such that each team consists of exactly N people and the total competitive value is maximized.
 

Total competitive value is the summation of competitive value of each pair of people in different team.

 

The equivalent equation is ∑i=12N∑j=i+12N(vij if i-th person is not in the same team as j-th person else 0)\sum_{i=1}^{2N} \sum_{j=i+1}^{2N} (v_{ij} \text{ if i-th person is not in the same team as j-th person else } 0 )∑i=12N​∑j=i+12N​(vij​ if i-th person is not in the same team as j-th person else 0)

输入描述:

The first line of input contains an integers N.Following 2N lines each contains 2N space-separated integers vijv_{ij}vij​ is the j-th value of the i-th line which indicates the competitive value of person i and person j.* 1≤N≤141 \leq N \leq 141≤N≤14
* 0≤vij≤1090 \leq v_{ij} \leq 10^{9}0≤vij​≤109
* vij=vjiv_{ij} = v_{ji}vij​=vji​

输出描述:

Output one line containing an integer representing the maximum possible total competitive value.

示例1

输入

复制

1
0 3
3 0

输出

复制

3

题目大意:

时限4秒。

将2*n个人分到两个team,每个team必须恰好有n个人,如果i,j两个人位于不同的team,那么收益增加 a[i][j],求分配的最大收益

第一行输入n

第二行输入一个(2*n)*(2*n)的矩阵。

求最大收益。

解题报告:

  最暴力的方法是C(2*n,n)枚举,但是最后对于每一种情况算答案的时候需要n^2处理,这样总复杂度就是O( C(2*n,n) * n^2 ),在n=14的情况下是会T的。想办法优化掉一个N。(  C(28,14) = 40116600)

可以这么转化一下问题,其实可以看成本来2*n个人都在一个team中,现在要拽其中一些人去另一个team,所以每当拽一个人去另一个team的时候,就减去对应的贡献。这样的好处就是,把最后统计需要On^2的时间均摊到每一次的dfs中线性完成,这样总复杂度就是O( C(2*n,n) * n ),可以接受。这题时限4秒。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define FF first
#define SS second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX = 2e5 + 5;
const ll mod = 1e9 + 7;
ll ma;
vector<int> v;
int n;
ll a[33][33],d[33];//d[i]代表i和其他所有点连边的权值和。
void dfs(ll x,ll ans) {if(v.size()==n) {ma = max(ma,ans); return ;}if(v.size()>n || x>=2*n) return ;ll now=d[x];for(auto s:v) now -= a[x][s]*2;//选 v.push_back(x);dfs(x+1,ans+now);//不选 v.pop_back();dfs(x+1,ans);
}
int main() 
{scanf("%d",&n);for(int i=0; i<2*n; i++)for(int j=0; j<2*n; j++) {scanf("%lld",&a[i][j]);d[i]+=a[i][j];}dfs(0,0);cout << ma <<endl;return 0 ; 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apollo进阶课程 ⑮丨Apollo自动定位技术详解—百度无人车定位技术

目录 1.百度无人车定位进化历程 2.百度自动驾驶应用的定位技术 2.1GNSS定位技术 2.2载波定位技术 2.3激光点云定位技术 2.4视觉定位技术 原文链接&#xff1a;进阶课程 ⑮丨Apollo自动定位技术详解—百度无人车定位技术 定位的目的是让自动驾驶汽车找到自身确切位置的方法…

一步步编写操作系统 10 cpu的实模式

cpu的实模式 由于mbr在实模式下工作……什么&#xff1f;什么是实模式&#xff1f;这时候有同学打断了我。我心想&#xff0c;这下好办了……哈哈&#xff0c;没有啦&#xff0c;开个玩笑而已。我们这里所说的实模式其实就是8086 cpu的工作环境、工作方式、工作状态&#xff0…

Ubuntu系统中使用搜狗输入法

今天介绍如何在Ubuntu中使用搜狗输入法。&#xff08;Ubuntu版本为16.04&#xff09; 1&#xff09;登陆搜狗官网选择对应系统的搜狗输入法&#xff1a;http://pinyin.sogou.com/linux。 2&#xff09;打开下载目录&#xff0c;命令行输入以下命令&#xff1a; sudo dpkg -i …

2.1)深度学习笔记:深度学习的实践层面

目录 1&#xff09;Train/Dev/Test sets 2&#xff09;Bias/Variance 3&#xff09;Regularization&#xff08;重点&#xff09; 4&#xff09;Why regularization reduces overfitting&#xff08;理解&#xff09; 5&#xff09;Dropout Regularization&#xff08;重点…

一步步编写操作系统 12 代码段、数据段、栈和cpu寄存器的关系

先说下什么是寄存器。 寄存器是一种物理存储元件&#xff0c;只不过它是比一般的存储介质要快&#xff0c;能够跟上cpu的步伐&#xff0c;所以在cpu内部有好多这样的寄存器用来给cpu存取数据。 先简短说这一两句&#xff0c;暂时离开一下主题&#xff0c;咱们先看看相对熟悉一…

【2019牛客暑期多校训练营(第三场)- F】Planting Trees(单调队列,尺取)

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/883/F 来源&#xff1a;牛客网 The semester is finally over and the summer holiday is coming. However, as part of your universitys graduation requirement, you have to take part in some …

Apollo进阶课程⑯丨Apollo感知之旅——感知概貌

原文链接&#xff1a;进阶课程⑯丨Apollo感知之旅——感知概貌 上周阿波君为大家详细介绍了「进阶课程⑮| Apollo无人车自定位技术入门」。 我们人类天生就配备多种传感器&#xff0c;眼睛可以看到周围的环境&#xff0c;耳朵可以用来听&#xff0c;鼻子可以用来嗅&#xff0c;…

一步步编写操作系统 13 栈

栈到底是什么玩意 cpu中有栈段SS寄存器和栈指针SP寄存器&#xff0c;它们是用来指定当前使用的栈的物理地址。换句话说&#xff0c;要想让cpu运行&#xff0c;必须得有栈。栈是什么?干吗用的&#xff1f;本节将给大家一个交待。 还记得数据结构中的栈吗&#xff1f;那是逻辑…

【2019牛客暑期多校训练营(第二场)- E】MAZE(线段树优化dp,dp转矩阵乘法,线段树维护矩阵乘法)

题干&#xff1a; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/882/E?&headNavacm 来源&#xff1a;牛客网 Given a maze with N rows and M columns, where bijb_{ij}bij​ represents the cell on the i-row, j-th column. If bi,j"1"b_{i, j} …

Apollo进阶课程⑰丨Apollo感知之旅——传感器选择和安装

目录 1.激光雷达 2.相机 3.Radar毫米波 4.安装传感器 原文链接&#xff1a;进阶课程⑰丨Apollo感知之旅——传感器选择和安装 上周阿波君为大家详细介绍了「进阶课程⑯ Apollo感知之旅——感知概况」。 传感器是一种检测装置&#xff0c;能感受到被测量的信息&#xff0c;…

2.2)深度学习笔记:优化算法

目录 1&#xff09;Mini-batch gradient descent&#xff08;重点&#xff09; 2&#xff09;Understanding mini-batch gradient descent 3&#xff09;Exponentially weighted averages 4&#xff09;Understanding exponetially weighted averages 5&#xff09;Bias c…

Apollo进阶课程⑱丨Apollo感知之旅——传感器标定

目录 传感器标定 标定的目的 传感器标定算法 标定案例解析 3D标定间制作 Cmaera-to-Camera外参标定 Lidar-to-Camera外参标定 Lidar-to-Lidar外参标定 Lidar内参标定 Lidar-to-GPS外参标定 自然场景的Lidar-to-Camera外参标定 自然场景的Bifocal Camera外参标定 C…

一步步编写操作系统 15 CPU与外设通信——IO接口,下

既然都说到IO接口了&#xff0c;不知道各位有没有疑问&#xff0c;cpu是怎样访问到IO接口呢&#xff1f;肯定得有个链路吧&#xff1f;什么&#xff1f;有隐约听到有同学开玩笑说&#xff1a;cpu用无线访问其它设备。哈哈&#xff0c;不知道各位听说过没有&#xff0c;无线的终…

Telnet端口连接Linux服务器失败

在ubuntu写了个服务器端口号是666 &#xff0c;ip地址是192.168.96.129 在windows用telnet无法连接上 首先检查windows telnet服务是否打开 Windows 10操作系统上使用telnet命令&#xff08;图文&#xff09;_时间-CSDN博客_windows使用telnet命令 测试网络是否通&#xff1a;…

重磅 | 完备的 AI 学习路线,最详细的资源整理!

本文转自微信公众号&#xff1a;Datawhale&#xff08;强烈推荐&#xff09; 原创&#xff1a; AIUnion Datawhale 今天 【导读】 本文由知名开源平台&#xff0c;AI技术平台以及领域专家&#xff1a;Datawhale&#xff0c;ApacheCN&#xff0c;AI有道和黄海广博士联合整理贡献…

Windows/Linux 下使用telnet发送消息

Windows下使用telnet 1.首先打开cmd命令行连接上服务器端口 连不上可以参考这篇 Telnet端口连接Linux服务器失败_m0_46480482的博客-CSDN博客 telnnt <ip地址> <端口号> 2. 连接成功后&#xff0c;会发现是一片黑的 按住 ctrl ] 可以招出提示 输入 &#x…

Apollo进阶课程⑲丨Apollo感知之旅——感知算法

目录 点云感知 启发式方法&#xff1a;NCut 深度学习方法&#xff1a;CNNSeg 视觉感知 CNN检测 CNN分割 后处理 红绿灯感知 基于深度学习的红绿灯感知模块 Radar感知 超声波感知 原文链接&#xff1a;进阶课程⑲丨Apollo感知之旅——感知算法 感知是自动驾驶的第一环…

动手学PaddlePaddle(0):新版本PaddlePaddle安装

目录 0.引言 1.环境 2.Windows下安装 安装Python 安装PaddlePaddle 0.引言 今天介绍如何安装新版本的PaddlePaddle&#xff0c;现在最新版的PaddlePaddle是指Fluid版&#xff0c;Fluid可以让用户像Pytorch和TensorFlow Eager Execution一样执行程序&#xff0c;也就是说P…

一步步编写操作系统 18 操作显卡,显存,显示器 下

接上回&#xff0c;大家看下显卡各种模式的内存分布。 各外部设备都是通过软件指令的形式与上层接口通信的&#xff0c;显卡&#xff08;显示适配器&#xff09;也不例外&#xff0c;所以它也有自己的bios。位置是0xC0000到0xC7FFF。显卡支持三种模式&#xff0c;文本模式、黑白…

VMware 安装VMware Tools

想要在linux和windows之间复制粘贴&#xff0c;把之前一直没有下的vmwaretools的下载过程记录一下。 1.左上角菜单 ->虚拟机 ->安装 vmware tools (我已经点过了所以是取消安装) 2.桌面多了一个VMware tools &#xff0c;点进去看一下位置&#xff0c;复制一下tar.gz的文…