2019牛客暑期多校第二场题解FH
F.Partition problem
题意:有2n个人,分两组,每组n个,要求sum(vij)最大值。
题解:n并不大我们可以枚举每个人是在1组还是2组爆搜。
代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = + ;
int n,a[N],b[N];
ll v[N][N],ans = ,cnt1=,cnt2=;
void dfs(int x,ll sum) {
if (cnt1>n||cnt2>n) return;
if (cnt1==n&&cnt2==n) {
ans = max(ans,sum);
return;
}
if (cnt1 < n) {
a[++cnt1] = x;
for (int i = ; i <= cnt2; i++)
sum += v[x][b[i]];
dfs(x+,sum);
for (int i = ; i <= cnt2; i++)
sum -= v[x][b[i]];
cnt1--;
}
if (cnt2 < n) {
b[++cnt2] = x;
for (int i = ; i <= cnt1; i++)
sum += v[x][a[i]];
dfs(x+,sum);
for (int i = ; i <= cnt1; i++)
sum -= v[x][a[i]];
cnt2--;
}
}
int main() {
scanf("%d",&n);
for (int i = ; i <= *n; i++)
for (int j = ; j <= *n; j++)
scanf("%lld",&v[i][j]);
dfs(,);
printf("%lld\n", ans);
return ;
}
H.Second Large Rectangle
题意:给你一个n*m的01矩阵,问全为1的第二大的矩阵大小。
题解:这题相当于从第1行到第n行,以当前行为底求直方图的第二大面积。我们知道怎么求直方图的最大面积(不知道的点这里)。我们可以用单调栈来做。不过要注意第二大不一定是用求最大的方法找到的第二大,也可能是最大的减去一行或者一列的大小。(因为没注意到这个WA了)。
代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e3 + ;
char s[N];
int dp[N][N];
int main() {
int n,m;
scanf("%d%d",&n,&m);
int max1 = ,max2 = ,area;
for (int i = ; i <= n; i++) {
scanf("%s",s);
stack<int> v;
for (int j = ;j <= m; j++) {
if(j == m) dp[i][j] = -;
else {
dp[i][j] = s[j]==''?:;
dp[i][j] += dp[i][j]*dp[i-][j];
}
if (v.empty() || dp[i][j] > dp[i][v.top()])
v.push(j);
else {
int now = v.top();
v.pop();
if (v.empty()) area = j * dp[i][now];
else area = (j - v.top() - ) * dp[i][now];
if(area > max1) {
max2 = max1;
max1 = area;
//注意这里
if (v.empty())
max2 = max(max2,max(area - dp[i][now],area-j));
else max2 = max(max2,max(area - dp[i][now],area-(j - v.top() - )));
}else if (area > max2) max2 = area;
j--;
}
}
}
printf("%d\n", max2);
return ;
}
2019牛客暑期多校第二场题解FH的更多相关文章
- 2019 牛客暑期多校 第二场 H Second Large Rectangle (单调栈)
题目:https://ac.nowcoder.com/acm/contest/882/H 题意:一个大的01矩阵,然后现在要求第二大的全一矩阵是多少 思路:在这里我们首先学习一下另一个东西,怎么求直方 ...
- 2019牛客暑期多校第一场题解ABCEFHJ
A.Equivalent Prefixes 传送门 题意:给你两个数组,求从第一个元素开始到第p个元素 满足任意区间值最小的元素下标相同的 p的最大值. 题解:我们可以从左往右记录到i为止每个区间的最 ...
- 2019 牛客暑期多校 第一场 H XOR (线性基)
题目:https://ac.nowcoder.com/acm/contest/881/H 题意:求一个集合内所有子集异或和为0的长度之和 思路:首先集合内异或和,这是线性基的一个明显标志,然后我们不管 ...
- 【2019牛客暑期多校第一场】E题ABBA
题目链接 大致题意 有(n+m)(n + m)(n+m)个字母A和(n+m)(n + m)(n+m)个字母B,组成一个长度为 2∗(n+m)2*(n + m)2∗(n+m)的字符串,并且使得字符串中有 ...
- 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题)
layout: post title: 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题) author: "luowentaoaa" c ...
- 2019牛客暑期多校训练营(第二场)F.Partition problem
链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them ...
- 2019牛客暑期多校训练营(第八场)-A All-one Matrices (单调栈+前缀和)
题目链接:https://ac.nowcoder.com/acm/contest/888/A 题意:给n×m的01矩阵,求出其中全为1的矩阵个数(不被其它全1矩阵包括). 思路:和第二场多校的次大子矩 ...
- 2019牛客暑期多校训练营(第一场)A Equivalent Prefixes(单调栈/二分+分治)
链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 Two arrays u and v each with m distinct elements ...
- 2019牛客暑期多校训练营(第九场)A:Power of Fibonacci(斐波拉契幂次和)
题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9: 对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可. 后者mod=1e9,5才 ...
随机推荐
- SuperSocket 服务器管理器客户端
SuperSocket 服务器管理器当前有两种类型的客户端, Silverlight客户端和WPF客户端.这两种客户端的代码都在源代码中的"Management"目录,你可以自行编 ...
- laravel validate 设置为中文(验证提示为中文)
把 resources\lang 下en 的文件夹 复制在同一目录并改名为 zn 把zn 中的 validation.php文件修改为 https://laravel-china.org/articl ...
- Laravel根据Ip获取国家,城市信息
https://blog.csdn.net/zhezhebie/article/details/79097133 1.安装: composer require geoip2/geoip2:~2.0 2 ...
- 析构函数 p157
析构函数 确保对象的各部分被正确的清除,及做一些用户指定的其他清理工作. 当对象超出它的作用域时,编译器将自动调用析构函数:手动用new在堆上分配的对象空间,需要调用'delete 对象地址'进行手动 ...
- hadoop 端口总结
localhost:50030/jobtracker.jsp localhost:50060/tasktracker.jsp localhost:50070/dfshealth.jsp 1. Name ...
- 2018-8-10-C#-代码占用的空间
title author date CreateTime categories C# 代码占用的空间 lindexi 2018-08-10 19:16:52 +0800 2018-2-13 17:23 ...
- linux scull 的设计
编写驱动的第一步是定义驱动将要提供给用户程序的能力(机制).因为我们的"设备"是计算 机内存的一部分, 我们可自由做我们想做的事情. 它可以是一个顺序的或者随机存取的设 备, 一个 ...
- 用户模式 Linux 移植
用户模式 Linux (UML) 是一个有趣的概念. 它被构建为一个分开的 Linux 内核移植, 有 它自己的 arch/um 子目录. 它不在一个新的硬件类型上运行, 但是; 相反, 它运行在一 ...
- dotnet 获取程序所在路径的方法
在 dotnet 有很多方法可以获取当前程序所在的路径,但是这些方法获取到的路径有一点不相同,特别是在工作路径不是当前的程序所在的路径的时候 通过下面几个方法都可以拿到程序所在的文件夹或程序文件 Ap ...
- 网摘-获取屏幕dc并且将其画面显示在窗体中
获取屏幕dc并且将其画面显示在窗体中 HWND hWnd = ::GetDesktopWindow();//获得屏幕的HWND. HDC hScreenDC = ::GetDC(hWnd); // ...