首页 > 其他分享 >[Luogu] P1114 “非常男女”计划

[Luogu] P1114 “非常男女”计划

时间:2023-11-24 20:36:57浏览次数:49  
标签:P1114 int Luogu 男女 ans maxn const

https://www.luogu.com.cn/problem/P1114

暴力,前缀和,稍加优化可以拿100,但是#1加强过后就AC不了了

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e6;
int a[maxn],n,f[maxn],ans,boy;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",a+i);
		boy+=a[i];
		f[i]=a[i]+f[i-1];
	}
	if(boy==n)
	{
		cout<<0;
		return 0;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=i+ans;j<=n;j++)
		{
			if((j-i+1)==(f[j]-f[i-1])*2) ans=max(ans,(j-i+1)); 
		} 
	}
	cout<<ans<<endl;
	return 0;
}

打开题解,看到点赞第一的大佬

引入相对差的概念。即a[i]表示第i个位置男生人数-女生人数的差值。

那么差值相等的两个位置之间的人数是满足男女相等的。

从此统计l[a[i]]和r[a[i]]。

特别要注意的是a[0]=0 统计的时候要把0的位置当做差为0的起点。

所以写出如下代码(当时困得要死,借鉴了一下二楼 逃)

#include<bits/stdc++.h>
using namespace std;
const int maxn=3e5;
int l[maxn],r[maxn],a[maxn],n,ans,boy,girl;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int t;
		scanf("%d",&t);
		boy+=t;girl+=!t;
		a[i]=boy-girl+n;
		if(l[a[i]]==0 && a[i]!=n) l[a[i]]=i;
		else r[a[i]]=i;
	}
	for(int i=0;i<=2*n;i++) ans=max(ans,r[i]-l[i]);
	cout<<ans<<endl;
	return 0;
}

标签:P1114,int,Luogu,男女,ans,maxn,const
From: https://www.cnblogs.com/lyk2010/p/17854694.html

相关文章

  • 【luogu题解】P9749 [CSP-J 2023] 公路
    \(Meaning\)\(Solution\)这道题我来讲一个不一样的解法:\(dp\)在写\(dp\)之前,我们需要明确以下几个东西:状态的表示,状态转移方程,边界条件和答案的表示。状态的表示\(dp[i]\)表示到达第\(i\)个站点所需要的最少钱数,\(w[i]\)表示在使用最少钱数到达第\(i\)个站点时多余......
  • luoguP3287 [SCOI2014] 方伯伯的玉米田
    题目描述方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美。这排玉米一共有NN株,它们的高度参差不齐。方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感的玉米拔除掉,使得剩下的玉米的高度构成一个单调不下降序列。方伯伯可以选择一个区间,把这......
  • CF/AT/LUOGU 日常做题合集
    标签格式思路算法特殊CF1155F标签分析性质图论,状压DP,枚举记录方案,思路做的时候想了几个错误做法,还看错题了。因为边双的形态必然是由一个点加多条链组成的(耳分解)(一个环=一个点+一条链),即糖葫芦型。又因为\(n\le14\)考虑暴力。先预处理出\(path_{i,j,S}\)......
  • luoguP7302 [NOI1998] 免费的馅饼
    题目描述SERKOI最新推出了一种叫做“免费馅饼”的游戏:游戏在一个舞台上进行。舞台的宽度为ww格(从左到右依次用11到ww编号),游戏者占一格。开始时游戏者可以站在舞台的任意位置,手里拿着一个托盘。下图为天幕的高度为44格时某一个时刻游戏者接馅饼的情景。游戏开始后,从舞......
  • [Luogu NOIP 2023 模拟] Solution
    这篇blog在我的博客后台躺了好几天了,只不过今天才记起来发。种树(plant)首先看到因数个数,想到在质因数分解后的序列上考虑问题。进一步观察,每个不同质因子的贡献是独立的。也就是说,我们单独考虑某一个质因子对答案的贡献,是这样的问题:给长度为\(n\)的序列\(a\)和一个数......
  • Luogu8330 解题报告
    有一个显然的贪心,选了一个区间\([l,r]\),贡献为这个区间的众数加上区间外的众数。考虑根号分治,阈值为\(B\)。我们称出现次数\(>B\)的数称为大数,反之成为小数。答案有需要分\(4\)类讨论:\([l,r]\)内是大数/小数,区间外是大数/小数比较简单的是\([l,r]\)内是大数/小数,区......
  • Luogu P3862 数圈 题解
    看数据范围——题记传送门考虑记\(f_i\)表示有\(i\)个点的完全图的圈数\(g_i\)表示有\(i\)个点的完全图中一个点到另一个点不同路径的方案数\(ans\)表示答案容易知道递推式\[f_i=g_{i-1}\timesC_{i-1}^2+f_{i-1}\]\[g_i=g_{i-1}\times(i-2)+1\]\[ans=f_{n-......
  • Luogu P8518 [IOI2021] 分糖果
    题目链接 做这道题本意是为了补CCPC秦皇岛热身赛C,也就是2022CCPC华为云计算挑战赛 机器人那题先考虑一个盒子怎么做,并且不考虑限制那样的话可以得到时刻和盒子内球的数量的图像,考虑由这个不加限制的图像推出加上限制的实际答案完整的图像一定是极大值极小值交错,考虑两个相......
  • Luogu P4168 [Violet] 蒲公英 题解
    题目链接[Violet]蒲公英分析可以先将\(a[i]\)离散化然后考虑分块对于询问\(x,y\),\(x\)属于\(p\),\(y\)属于\(q\)当\(q-p<=1\)时直接暴力枚举即可,时间复杂度为\(O(\sqrt{n})\)\(else\)如图中间为分好块的地方我们发现,\(ans\)只可能为中间的众数或两边的......
  • USACO 图论题 - from Luogu
    题单记录:P2984[USACO10FEB]ChocolateGivingS这题直接按题意只有50pts,复杂度\(O(B~\cdotM\logN)\),显然超时,然后我就想啊想,发现从s->1->t跑两遍dij和1->s(t)跑一遍dij是等效的,没啥用......我居然还想了好久,才发现根本不需要每次都跑,跑一次预处理就行了..........