糖糖别胡说,我真的不是签到题目(前缀和)

2023-11-13

题目

题目描述:
从前,有 n 只萌萌的糖糖,他们分成了两组一起玩游戏。他们会排成一排,第 i 只糖糖会随机得到一个能力值 b i b_i bi 。从第 i 秒的时候,第 i 只糖糖就可以消灭掉所有排在他前面的和他不是同一组的且能力值小于他的糖糖。
为了使游戏更加有趣,糖糖的爸爸,娇姐,会发功 m 次,第i次发功的时间为 c i c_i ci,则在第 c i c_i ci 秒结束后, b 1 , b 2 , . . . . . , b c i b_1,b_2,.....,b_{ci} b1,b2,.....,bci 都会增加 1.
现在,娇姐想知道在第 n 秒后,会有多少只糖糖存活下来。
输入描述:
第一行只有一个整数 T(T < 6),表示测试数据的组数。
第二行有两个整数n,m。表示糖糖的个数以及娇姐发功的次数。 ( 1 ≤ n ≤ 50000 , 1 ≤ m ≤ 1000000 ) (1 \leq n \leq 50000,1 \leq m \leq 1000000) 1n50000,1m1000000
第三行到 n+2 行,每行有两个整数 a i , b i a_i,b_i ai,bi,表示第 i 只糖糖属于哪一组以及他的能力值。 ( 0 ≤ a i ≤ 1 , 1 ≤ b i ≤ 1000000 ) (0 \leq a_i \leq 1,1 \leq b_i \leq1000000) 0ai1,1bi1000000
第 n+3 行到第 n+m+2 行,每行有一个整数 c i c_i ci,表示GTW第i次发功的时间。 ( 1 ≤ c i ≤ n ) (1 \leq c_i \leq n) (1cin)
输出描述:
总共 T 行,第 i 行表示第 i 组数据中,糖糖存活的个数。

样例1

输入

1 
4 3 
0 3 
1 2 
0 3 
1 1 
1 
3 
4

输出

3

提交链接

https://ac.nowcoder.com/acm/problem/14583

解析

最开始想的,外层循环从 1 到 n 枚举每一个糖糖,碰到发功的时刻 i,对于小于 i 的糖糖战斗力++,时间复杂度 n 2 n^2 n2,超时。
优化:
对于每一个发功的时刻,其前面的糖糖的战斗力都要加 1,可以前缀和维护第 i 秒时一共发功了多少次。

假设:j<i
编号为j的糖糖的战斗力增加了sum[i]-sum[j-1]
编号为i的糖糖的战斗力增加了sum[i]-sum[i-1]

若 j 位置的糖糖被i位置的糖糖消去的条件是:
j<i && group[j]!=group[i] && fight[j]<fight[i]

fight[j]=fight[j]+sum[i]-sum[j-1]
fight[i]=fight[i]+sum[i]-sum[i-1]

fight[j]<fight[i]可以转化为:fight[j]-sum[j-1]<fight[i]-sum[i-1]

细节条件:所有的糖糖要么是0组的,要么是1组的。

s[0],s[1]分别记录所在组的最大的fight[i]-sum[i-1]
倒着扫描,更新最大值

        int s[2];
        s[0]=s[1]=-2e7;  //初始化为最小值
        int res=n;
        for(int i=n; i>=1; i--)
        {
            if(fight[i]<s[group[i]^1])///group[i]^1记录不同组,因为是倒序的,s[group[i]^1]记录的是比此时的i大的战斗力
                res--;
            s[group[i]]=max(s[group[i]],fight[i]);
        }

完整代码:

#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=5*1e4+10;
int group[N];
int fight[N];
int sum[N];
int n,m;
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&m);
        for(int i=1; i<=n; i++)
        {
            scanf("%d%d",&group[i],&fight[i]);
            sum[i]=0;
        }
        while(m--)
        {
            int x;
            scanf("%d",&x);
            sum[x]+=1;
        }
        for(int i=1; i<=n; i++)
        {
            sum[i]+=sum[i-1];///前缀和 第i秒时一共加了sum[i]
            fight[i]-=sum[i-1];
        }
        int s[2];
        s[0]=s[1]=-2e7;///初值一定要大
        int res=n;
        for(int i=n; i>=1; i--)
        {
            if(fight[i]<s[group[i]^1])
                res--;
            s[group[i]]=max(s[group[i]],fight[i]);
        }
        printf("%d\n",res);
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

糖糖别胡说,我真的不是签到题目(前缀和) 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 【C++】匿名对象

    文章目录 一 基本概念 二 使用场景 三 注意事项 一 基本概念 匿名对象 也叫作临时对象 就是创建时不用取名的对象 它的生命周期只有一行 例子 class A int main 创建匿名对象 A 生命周期只有这一行 下一行就自动调用析构函
  • 如何在 seaborn 中创建三角相关热图?

    在本教程中 我们将学习在 seaborn 中创建三角形相关热图 顾名思义 相关性是一种度量 用于显示变量的相关程度 相关热图是一种表示数值变量之间关系的图 这些图用于了解哪些变量彼此相关以及它们之间的关系强度 而热图是使用不同颜色的数据的二
  • css text-shadow

  • 喜讯

    日前 华院计算因其在AIGC领域的技术突破和创新成果入选数据猿 2023中国AIGC领域最具商业合作价值企业盘点 基于其数智人产品及解决方案 为不同细分场景 行业 领域提供交互式智能终端 虚拟直播平台和智能视频生成平台等产品及服务 凭借其在
  • 【PKMS】- Settings中应用详情页卸载还原系统应用但数据未清除

    PKMS Settings中应用详情页卸载还原系统应用但数据未清除 一 问题描述 最近工作中出现一个问题 系统应用卸载后重装还原发现应用数据还在 复现操作 1 系统预置该应用在system priv app下 手机里预置的是旧版本的该应用
  • 隐私计算 FATE - 多分类神经网络算法测试

    一 说明 本文分享基于 Fate 使用 横向联邦 神经网络算法 对 多分类 的数据进行 模型训练 并使用该模型对数据进行 多分类预测 二分类算法 是指待预测的 label 标签的取值只有两种 直白来讲就是每个实例的可能类别只有两种 0 或者
  • calico单个pod固定IP多pod固定ip池

    原理 主要利用calico组件的两个kubernetes注解 1 cni projectcalico org ipAddrs 2 cni projectcalico org ipv4pools 单个pod固定IP 利用注解cni proje
  • SpringSecurity实现OAuth2.0 - 基础版授权服务

    OAuth2 0协议 OAuth3 0概述 OAuth2 0是一个关于授权的开放网络协议 该协议在第三方应用与服务提供平台之间设置了一个授权层 第三方应用需要服务资源时 并不是直接使用用户帐号密码登录服务提供平台 而是通过服务提供平台的授权
  • Python求100以内的素数和并输出

    求100以内的素数并输出 def isPrime num for i in range 2 num if num i 0 return False return True sum 2 1不是素数 2是素数 对 3 100 内的整数逐一进行判
  • Sublime Text 3 tab快捷键失效解决办法

    快速搭建html框架快捷键 tab发现失效 查资料发现缺少Emmet插件 解决办法如下 1 Ctrl Shift P 搜索package control install 2 按下回车搜索emmet 3 安装emmet 4 安装完成后可通过P
  • 【第01题】A + B

    文章目录 零 写在前面 一 例题1 1 题目描述 2 解题思路 3 代码详解 二 例题2 1 题目描述 2 解题思路 3 代码详解 三 例题3 1 题目描述 2 解题思路 3 代码详解 四 例题4 1 题目描述 2 解题思路 3 代码详解
  • Unity 简单几句代码实现无限循环列表(Scroll View)

    先看效果 这里是Scroll View的设置 using System Collections using System Collections Generic using UnityEngine using UnityEngine UI
  • 第三章 套接字相关数据结构--基于Linux3.10

    本章是对socket通信过程中使用到的比较重要的据结构罗列和意义的阐述 在阅读其它层的代码前 先来看几个重要的数据结构 这几个数据结构贯串四层模型 3 1 socket对应的内核结构体 在用户空间使用socket 函数创建一个套接字 对应的
  • 数据中台模块介绍

    搭建一款集数据采集 存储 搜索 加工 分析为一体的海关外贸企业大数据平台 融合结构化数据 非结构化数据 实现了统一数据架构 对海量异构数据的存储归档 信息组织 搜索访问 安全控制 分析可视化 以及数据挖掘 数据治理等 如图1所示 1 数据分
  • URAL 1981. Parallel and Perpendicular 对角线的平行和垂直

    1981 Parallel and Perpendicular Time limit 0 5 second Memory limit 64 MB You are given a regular n gon Your task is to c
  • react采用forEach或map两种方式遍历数组

    之前写代码 从后台提取数据并渲染到前台 由于有多组数据 用map遍历会相对方便一点 但是 map不能遍历array数组 只能遍历object对象 所以如果遇到这样的问题可以采用forEach试一下 forEach import React
  • mfc入门基础(二)框架流程与消息机制

    里面有些类名称等承接 mfc入门基础 一 以下内容改编至以下博客 参考博客 VS2010 MFC编程入门之四 MFC应用程序框架分析 软件开发 鸡啄米 VS2010 MFC编程入门之五 MFC消息映射机制概述 软件开发 鸡啄米 一 mfc主
  • IDEA插件推荐

    工具插件 1 IDE Eval Reset 不能多说 福利插件 2 Aixcoder 代码提示 代码纠错 3 MybatisX xml跳转 添加插件后在dao层会多一只戴红色头巾的小鸟 同样在对应xml文件方法前也会对应一直戴蓝色头巾的小鸟
  • iOS(七)在线订餐系统 一:工程初建

    在寻找工作的同时练练项目 在经历了几次的项目后 比当初懂了很多东西 哈哈 想当初添加第三方框架时 一个一个添加进去 现在都用cocoa pods 确实方便 这次就说说cocoa pods吧 1 cocoa pods是什么 当我们在开发iOS
  • 糖糖别胡说,我真的不是签到题目(前缀和)

    文章目录 题目 样例1 提交链接 解析 题目 题目描述 从前 有 n 只萌萌的糖糖 他们分成了两组一起玩游戏 他们会排成一排 第 i 只糖糖会随机得到一个能力值 b i b i bi 从第 i 秒的时候 第 i 只糖糖就可以消灭掉所有排在他