首页 > 其他分享 >C2. Magnitude (Hard Version)

C2. Magnitude (Hard Version)

时间:2024-06-11 14:12:07浏览次数:13  
标签:Version exp int ll Magnitude result base C2 mod

原题链接

题解

由于使用操作二会让负数变成正数,所以我们考虑让操作二在c最小且为负数的点使用
在使用完操作二之后,之后的c肯定非负,所以在此之后两种操作都可以使用

实施

先判断存不存在c最小且为负数的点,然后再统计所有c最小且为负数的点的贡献

code

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const int MAXN = 200005;
const ll mod = 998244353;

ll a[MAXN];
ll pre[MAXN] = {0};

// 快速幂计算
ll qpow(ll base, ll exp) {
    ll result = 1;
    base %= mod; // 取模
    while (exp > 0) {
        if (exp % 2 == 1)
            result = (result * base) % mod; // 取模
        base = (base * base) % mod; // 取模
        exp /= 2;
    }
    return result;
}

int main() {
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        for (int i = 1; i <= n; i++)
        {
            cin >> a[i];
            pre[i] = pre[i-1] + a[i];
        }

        int pos = 1;
        for (int i = 2; i <= n; i++) {
            if (pre[i] < pre[pos]) pos = i;
        }

        if(pre[pos]>=0)
        {
            cout<<qpow(2,n)%mod<<endl;
            continue;
        }
        ll ans=0,tem=1;
        for(int i=1;i<=n;i++)
        {
            if(pre[i]>=0) tem<<=1;
            tem%=mod;
            if(pre[i]==pre[pos]) ans+=tem*qpow(2,n-i)%mod;
            ans%=mod;
        }

        cout << ans % mod << endl; // 结果取模
    }
    return 0;
}

标签:Version,exp,int,ll,Magnitude,result,base,C2,mod
From: https://www.cnblogs.com/pure4knowledge/p/18241952

相关文章

  • 《DX12龙书》-第一个例程出现的报错:error: 应用程序请求的操作依赖于已缺失或不匹配的
    《DX12龙书》|《Introductionto3DGameProgrammingwithDirectX12》|《DirectX123D游戏开发实践》个人电脑环境Window11;VisualStudio2022出现问题主要原因:书中代码的环境是:Windows10;VS2015,在不同环境上运行难免会出现一些错误。问题一:C2102&要求左值错......
  • 逐飞串口助手——基于tc264的示波器使用
    一、下载逐飞串口助手解压文件夹中的seekfree_assistant-master.zip;解压成功后,点击逐飞助手V1.0.0.exe即可进入程序二、将示波器使用例程导入ADS开发平台1.解压文件夹中的Oscilloscopes_demo.zip2.打开ADS开发平台,点击file-import3.选择existingprojectsintowork......
  • Aws EC2,kubeadm方式安装kubernetes(k8s)
    版本docker版本:20.10.25k8s版本(kubeadm,kubelet和kubectl):1.20.10-0初始化#禁用SELinuxsudosetenforce0sudosed-i's/^SELINUX=enforcing$/SELINUX=permissive/'/etc/selinux/config#关闭防火墙sudosystemctlstopfirewalldsudosystemctldisablefirewal......
  • 【YOLOv5进阶】——修改网络结构(以C2f模块为例)
    一、站在巨人的肩膀上这里我们借鉴YOLOv8源码:上期说到,对于网络模块定义详情在common.py这个文件,如Conv、CrossConv、C3f等。本期要修改的需要参考YOLOv8里的C2f模块,它定义在YOLOv8的module文件夹的block.py文件里(与common.py一样),源码链接如下:YOLOv8源码https://github.com/u......
  • Mac环境如何使用Flutter Version Manager (fvm)
    Mac环境如何使用FlutterVersionManager(fvm)FlutterVersionManager(fvm)是一个Flutter版本管理工具,它允许开发者在本地安装并管理多个Flutter版本。使用fvm,您可以轻松切换不同版本的FlutterSDK,进行多项目开发而无需重复安装。本文将为您提供一个全面的指南,介......
  • Windows环境如何使用Flutter Version Manager (fvm)
    Windows环境如何使用FlutterVersionManager(fvm)FlutterVersionManager(fvm)是一个用于管理多个FlutterSDK版本的命令行工具,它允许开发者在不同项目之间轻松切换Flutter版本。这对于需要维护多个使用不同Flutter版本的项目的开发人员来说非常有用。本文将为......
  • P7219 [JOISC2020] 星座 3 题解
    会发现题目的坐标其实是平面直角坐标系。我们按\(y\)坐标从小到大考虑所有的星星,假设当前考虑到了星星\(i\)。我们先计算出之前所有能够影响到\(i\)的星星的代价和为\(cost\)(可以用树状数组维护)。然后分类讨论。若\(c_i\lecost\),那么肯定直接将\(i\)直接涂黑,因为它更......
  • P10560 [ICPC2024 Xi'an I] The Last Cumulonimbus Cloud 题解
    好好玩的题。思路对于一个图上邻域问题,我们有一个很经典的做法:根号分治。考虑根号分治的本质是什么。我们把点分成两类,平衡每一种点的时间,也就是度数大的与度数小的点。所以对于这道题,我们有了更加好的做法。发现题目给的图的性质就是一个天然的划分方案。我们每次找到图中......
  • P10553 [ICPC2024 Xi'an I] Guess The Tree 题解
    挺有意思的题。思路考虑一个比较自然的做法。我们每次对于一棵树,我们将它的某一条链抽出来。这样,我们只需要知道这颗树的所有节点与链底的\(\text{lca}\),就可以知道它是属于这条链上哪一个节点的下面。然后就可以递归处理。由于交互库不是自适应的。我们可能可以想到随机......
  • Keil uVersion 4单片机开发指南
    1软件安装双击打开C51V901.exe弹出安装界面,点击Next>>点击同意协议勾选框,接着点击Next>>点击Browse...选择合适的目录,接着点击Next>>按要求填写相关信息,然后点击Next>>软件安装中,等待安装完成点击Finish完成安装2注册激活桌面右键打开KeiluVision4,弹出菜单后选......