首页 > 其他分享 >2024.09.19短时训练赛总结

2024.09.19短时训练赛总结

时间:2024-09-19 12:13:26浏览次数:10  
标签:return 19 res s1 s0 2024.09 int 训练赛 MOD

$ T1 $

感觉没有蓝,只有中绿左右。
赛时写了正解,漏了个 $ + $ 号,寄了,然后逆元处理了 $ inv $,但是不知道为什么写的是快速幂,于是就 T 了。
考虑枚举两端改变,中间随便的区间 $ [i,j] $,然后乱搞即可。
$ \color{black}{zzzcr} $ 有一个 $ O(n) $ 的做法是考虑双指针,然后对于有交的区间减去中间重叠的部分。
实际上赛时这题一眼是想到双指针的,但是没有仔细想,因为看到 $ 1\le n \le 5000 $,觉得正解大概是 $ O(n^2) $ 的,就没有继续调。
不过 $ O(n) $ 的算法框架,大体是想到了的,差不多到减去中间重叠的部分。
唉,太菜了。

//AsahinaMafuyu
#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 5010, MOD = 998244353;

int n, k;
char a[N];
int res, f[N][N];
int C[N][N];
//设f[i][j]表示区间[i, j]改变的方案数(i, j改变,其他随便)
int fac[N], inv[N];

int qp(int a, int b)
{
    int res = 1;
    while (b)
    {
        if (b & 1) (res *= a) %= MOD;
        (a *= a) %= MOD;
        b >>= 1;
    }

    return res;
}

int C_(int n, int m)
{
    if (n < 0 || m < 0) return 0;
    return C[n][m];
}

signed main()
{
    cin >> n >> k;
    for (int i = 1; i <= n; i ++ ) cin >> a[i];

    C[0][0] = 1;
	for (int i = 1; i <= n; i ++ )
    {
		C[i][0] = 1;
		for (int j = 1; j <= i; j ++ )
			(C[i][j] = C[i - 1][j - 1] + C[i - 1][j]) %= MOD;
	}
    fac[0] = 1, a[0] = '0';
    for (int i = 1; i <= n; i ++ ) (fac[i] = fac[i - 1] * i) %= MOD;
    inv[n] = qp(fac[n], MOD - 2);
    for (int i = n - 1; ~i; i -- ) inv[i] = inv[i + 1] * (i + 1) % MOD;
    int sum = 0;
    for (int i = 1; i <= n; i ++ )
    {
        int j, s = 0, s0 = 0, s1 = 0;
        if (a[i] == '1') s ++ ;
        sum += s;
        if (a[i] == '1') s1 ++ , s0 -- ;
        else s0 ++ , s1 -- ;
        for (j = i + 1; j <= n; j ++ )
        {
            s += a[j] - '0';
            if (s > k) break;
            s0 += '1' - a[j], s1 += a[j] - '0';
            if (a[j] == '1') s0 -- ;
            else s1 -- ;
            (f[i][j] += C_(s0 + s1, s1)) %= MOD;
            if (a[j] == '1') s0 ++ ;
            else s1 ++ ;
        }
        if (s < k && j <= n) 
            for (int j = i + 1; j <= n; j ++ ) 
                f[i][j] = 0;
    }

    int res = 0;
    for (int i = 1; i <= n; i ++ )
        for (int j = i + 1; j <= n; j ++ )
            (res += f[i][j]) %= MOD;
    if (sum < k) res = 0;

    cout << (res + 1) % MOD << '\n';

    return 0;
}

$ T2, T3 $ 再说吧。

标签:return,19,res,s1,s0,2024.09,int,训练赛,MOD
From: https://www.cnblogs.com/MafuyuQWQ/p/18420337

相关文章

  • 易优eyoucms网站安装进行到第四步出错。错误提示{"msg":"u5199u5165u8868ey_ad_positi
    打包备份本地网站后上传到空间时,安装进行到第四步出错。错误提示{"msg":"u5199u5165u8868ey_ad_positionu8bb0u5f55u5931u8d25uff0cu8bf7u5c1du8bd5F5u5237u65b0!"}。遇到在打包备份本地网站并上传到空间后,在安装过程中出现错误提示“写入表 ey_ad_position 记录失败,请刷新重......
  • Oracle 19c通过cdb的service name连接后为pdb库
     Oracle19c通过cdb的servicename连接后为pdb库 现在数据库版本为19.19,库名为oemdb,有1个容器数据库pdb为empdbrepos,如下:[oracle@oem13c~]$sqlplus/assysdbaSQL*Plus:Release19.0.0.0.0-ProductiononThuSep1909:34:512024Version19.19.0.0.0......09:......
  • 敏感词 v0.19.0 新特性之敏感词单个编辑,不必重复初始化
    敏感词系列sensitive-word-admin敏感词控台v1.2.0版本开源sensitive-word-adminv1.3.0发布如何支持分布式部署?01-开源敏感词工具入门使用02-如何实现一个敏感词工具?违禁词实现思路梳理03-敏感词之StopWord停止词优化与特殊符号04-敏感词之字典瘦身05-敏感词之DFA......
  • Day 19 回溯法part01| LeetCode 77.组合,216. 组合总和 III,17. 电话号码的字母组合
    理论基础回溯法(回溯搜索法)回溯函数就是递归函数本质是穷举解决的问题组合问题(不强调元素顺序,需去重)切割问题子集问题:一个N个数的集合里有多少符合条件的子集排列问题(强调元素顺序)棋盘问题:N皇后回溯法模板(可抽象为树形结构——N叉树来解决问题)递归返回值以及......
  • 1191. K 次串联后最大子数组之和
    题目链接1191.K次串联后最大子数组之和思路前缀和/动态规划-最大子数组和-简单变体题解链接dp做法正确性的详细证明(图帮助理解)关键点分情况讨论(\(k\ge2\)):1.序列和小于02.序列和大于等于0时间复杂度\(O(n)\)空间复杂度\(O(1)\)代码实现:MOD=1......
  • 【2024潇湘夜雨】WIN11_Pro_21H2.22000.3197软件选装纯净特别版9.19
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_21H2.22000.3197.2.全程离线精简、无人值守调用优化处理制作。部分优化适配系统可能要重启几次,即使显示适配失败也不要在意,可能部分优化不适用。3.OS版本号为22000.3197。......
  • MyBatis动态SQL中的`if`标签使用【后端 19】
    MyBatis动态SQL中的if标签使用引言MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。在MyBatis中,动态SQL是一个非常强大的特性,它允许你根据不同的条件来动态构建SQL语句。if标签是动态SQL中最常用的一个标签,它类似于Java中的if语句,......
  • 当前标识(IIS APPPOOL\.NET v4.5)没有对“C:\Windows\Microsoft.NET\Framework64
    当前标识(IISAPPPOOL\.NETv4.5)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\TemporaryASP.NETFiles”的写访问权限。初学者在使用ISS创建网站时是不是也遇到过类似的问题,这可能是执行当前Web请求期间生成了未经处理的异常,主要就是设置对TemporaryASP.NE......
  • mac苹果电脑办公套件全家桶下载:Office2019 for Mac 下载
    office 2019是Microsoftoffice应用程序套件的最新版本。它包括流行的软件,例如MicrosoftWord、Excel、PowerPoint和Outlook,office2019比其前身有许多新功能和改进,包括增强的协作工具、与OneDrive和SharePoint等云服务的更好集成,以及改进的生产力工具,如语法检查器......
  • [强网杯2019]supersqli--Web安全进阶系列
    [强网杯2019]supersqli--Web安全进阶系列使用引号判断是否存在sql注入报错,可能存在sql注入,注入payload,判断列数,结果为不存在4列?inject=1'orderby4--q换2试试,正常显示,说明存在2列输出结果?inject=1'orderby2--q尝试使用联合注入失败,并且限制了select|update......