首页 > 其他分享 >#贪心#洛谷 3615 如厕计划

#贪心#洛谷 3615 如厕计划

时间:2024-07-06 19:58:39浏览次数:28  
标签:洛谷 3615 int sum mn 如厕 str ans now

题目传送门


分析

如果男生数目比女生数目多显然无解,在原队列的基础上考虑调换实际是将男生往前移

实际上不满意度就是最后一位女生后移了多少位,记女生为一,男生为负一,

运用数学归纳法证明只要后缀最小值不低于负一,那么一定存在一种方案,

实际上就是求出后缀最小值,并将其调整至不低于负一,那么每一段对于总和是否小于零分类讨论即可


代码

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
const int N=100011;
typedef long long lll;
lll SUM,now,a[N],n,m,ans=-1;
int len,sum[N],mn[N]; string str;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>n>>m;
	for (int i=1;i<=m;++i){
		cin>>str>>a[i],len=str.length();
		for (int j=len-1;~j;--j)
		if (str[j]=='M') --sum[i],mn[i]=mn[i]<sum[i]?mn[i]:sum[i];
		    else ++sum[i];
		SUM+=sum[i]*a[i];
	}
	if (SUM<0){
		cout<<-1;
		return 0;
	}
	for (int i=m;i;--i){
		if (sum[i]>=0) ans=min(ans,now+mn[i]);
		    else ans=min(ans,now+sum[i]*(a[i]-1)+mn[i]);
		now+=sum[i]*a[i];
	}
	cout<<-ans-1;
	return 0;
}

标签:洛谷,3615,int,sum,mn,如厕,str,ans,now
From: https://www.cnblogs.com/Spare-No-Effort/p/18287655

相关文章

  • C++题解(3) 信息学奥赛一本通: 1013:温度表达转化 洛谷:B2013 温度表达转化 土豆编程:M
    【题目描述】利用公式 C=5×(F−32)÷9C=5×(F−32)÷9(其中CC表示摄氏温度,FF表示华氏温度)进行计算转化,输入华氏温度FF,输出摄氏温度CC,要求精确到小数点后55位。【输入】输入一行,包含一个实数FF,表示华氏温度。(F≥−459.67)(F≥−459.67)【输出】输出一行,包含一个......
  • 洛谷 P3954 [NOIP2017 普及组] 成绩
    本文由Jzwalliser原创,发布在CSDN平台上,遵循CC4.0BY-SA协议。因此,若需转载/引用本文,请注明作者并附原文链接,且禁止删除/修改本段文字。违者必究,谢谢配合。个人主页:blog.csdn.net/jzwalliser题目洛谷P3954[NOIP2017普及组]成绩[NOIP2017普及组]成绩题目背景......
  • 洛谷P5517题解
    题目解释现有一数列:\(a_{0}=-3,a_{1}=-6,a_{2}=-12,a_{n}=3a_{n-1}+a_{n-2}-3a_{n-3}+3^n,求T组a_{n}\)modp的异或和题目思路分析抛开复杂度不谈,这道题可以用矩阵加速(矩阵的快速幂)和通项公式两种方法来做,这两种方法求一个\(a_{n}\)的时间复杂度都是\(log_2(n)\),但矩阵乘法需......
  • 洛谷 P1020 [NOIP1999 提高组] 导弹拦截
    题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所......
  • 洛谷 P1011 [NOIP1998 提高组] 车站
    题目描述火车从始发站(称为第 1 站)开出,在始发站上车的人数为 a,然后到达第 2 站,在第 2 站有人上、下车,但上、下车的人数相同,因此在第 2 站开出时(即在到达第 3 站之前)车上的人数保持为 a 人。从第 3 站起(包括第 3 站)上、下车的人数有一定规律:上车的人数都是前两......
  • 洛谷2404 自然数的拆分问题 【搜索】
    自然数的拆分问题题目描述任何一个大于111的自然数nnn,总可以拆......
  • 洛谷 P5723 【深基4.例13】质数口袋 题解
    题面传送门观察题目,我们可以看到这是一道朴素的,判断质数的一道题目。何为质数?质数就是除了111和这个本身,没有其他因数的数。特别的,......
  • C++题解(1) 信息学奥赛一本通 1003:对齐输出 洛谷 B2004:对齐输出 土豆编程 T1003:对
    【题目描述】读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们,按照格式要求依次输出三个整数,之间以一个空格分开。【输入】只有一行,包含三个整数,整数之间以一个空格分开。【输出】只有一行,按照格式要求依次输出三个整数,之间以一个空格分开。【输入样例】......
  • 洛谷 U285997 松鼠没有家
    https://www.luogu.com.cn/problem/U285997#submit题目描述星斗大森林里有一棵参天巨树,树上有 nn 个结点,我们给它们编号 11~nn。松鼠每天从树的这头窜到那头,因为它不认真写信息学作业只想划树叶子(树上没办法划水啊),被妈妈给批评了,于是回不了家。现在松鼠想要知道,它从......
  • 洛谷 P1030 [NOIP2001 普及组] 求先序排列
    因为题目求先序,意味着要不断找根。那么我们来看这道题方法:(示例)中序ACGDBHZKX,后序CDGAHXKZB,首先可找到主根B;那么我们找到中序遍历中的B,由这种遍历的性质,可将中序遍历分为ACGD和HZKX两棵子树,那么对应可找到后序遍历CDGA和HXKZ(从头找即可)从而问题就变成求1.中序遍历ACGD,后序......