命运的X
命运的X
cjx 生成函数强。
思路
首先,设 \(f_i\) 为添加第 \(i\) 项后满足条件的概率,\(g_i\) 任意添加至第 \(i\) 项的概率。
我们要求的答案:
\]
我们把 \(f\) 放入生成函数中:
\]
显然有 \(F(1)=1\)。
对 \(F\) 进行取导。
\]
发现有 \(ans=F'(1)\)。
把 \(g\) 也用生成函数 \(G\) 表示出来。
考虑加入一个字符,那么有 \(xG=G+F\),即可能匹配,也可能不匹配。
移项得,\((x-1)G=F\)。
导一下,\(G+(x-1)G'=F'\)。
令 \(x=1\),得 \(G(1)=F'(1)\)。
考虑对 \(G\) 做转移,每次向后添加一段 \(b\)。当然可能添加中途已经存在最后一段等于 \(b\) 的情况,我们也要考虑,那就有:
\]
其中 \(i\) 满足,\(b[1,i]=b[n-i+1,n]\)。
移项得:
\]
令 \(x=1\),对下式求和即可。
\]
CODE
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N 200000
#define pll pair<ll,ll>
const int maxn=2e5+5;
const ll mod=998244353,base=20090327,mod1=1e9+7,mod2=1e9+9;
int n,m;
int b[maxn];
ll pw1[maxn],pw2[maxn],sum1[maxn],sum2[maxn];
inline void init()
{
pw1[0]=pw2[0]=1;
for(int i=1;i<=N;i++)
pw1[i]=pw1[i-1]*base%mod1,
pw2[i]=pw2[i-1]*base%mod2;
}
inline pll calc(int l,int r){return {(sum1[r]-sum1[l-1]*pw1[r-l+1]%mod1+mod1)%mod1,(sum2[r]-sum2[l-1]*pw2[r-l+1]%mod2+mod2)%mod2};}
inline void solve()
{
ll tmp=1,ans=0;
for(int i=1;i<=n;i++)
{
tmp=tmp*m%mod;
if(calc(1,i)==calc(n-i+1,n)) ans=(ans+tmp)%mod;
}
printf("%lld\n",ans);
}
int main()
{
freopen("x.in","r",stdin);
freopen("x.out","w",stdout);
int _;
init();
scanf("%d",&_);
while(_--)
{
memset(sum1,0,sizeof(sum1));
memset(sum2,0,sizeof(sum2));
scanf("%d%d",&m,&n);
for(int i=1;i<=n;i++) scanf("%d",&b[i]);
for(int i=1;i<=n;i++)
sum1[i]=(sum1[i-1]*base+b[i]%mod1)%mod1,
sum2[i]=(sum2[i-1]*base+b[i]%mod2)%mod2;
solve();
}
}
命运的X的更多相关文章
- 一个页面实例化两个ueditor编辑器,同样的出生却有不同的命运
今天遇到一个比较怪异的问题,有一项目需要在同一个页面上展现两个ueditor编辑器,在展现时并不任何问题,但当点击了“保存”按钮时就出错了,有其中一个ueditor在asp.net中无法获取编辑器的值 ...
- HDU 2571 命运
命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- HDUOJ----2571(命运)(简单动态规划)
命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- HDU 2571 命运 动态规划
命运 http://acm.hdu.edu.cn/showproblem.php?pid=2571 Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到, ...
- HDU 2571 命运 (DP)
命运 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Pr ...
- hdu2571 命运 动态规划Dp
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=2571" target="_blank">http://acm. ...
- HDU-2571命运
Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机 ...
- 命运(HDU 2571 简单动态规划)
命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- hdu 2571 命运(dp)
Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个 ...
- HDU2571:命运(DP)
Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个 ...
随机推荐
- env 命令简介
env 命令在 Unix 和 Unix-like 操作系统中,是用来运行一个指定的程序/命令,在执行时可以修改环境变量的一个工具.使用 env 可以启动任何指定的指令,并在这个指令的执行过程中设置或者 ...
- mybatis-plus批量增加、批量修改样例+建表语句+postman接口
使用mybatis-plus开发中会遇到数据量多的情况下,插入和修改效率低,主要原因是"新增"和"修改"方法是对一条数据进行处理的,如果有一万条数据就会和数据库 ...
- sicp每日一题[1.43]
Exercise 1.43 If f is a numerical function and n is a positive integer, then we can form the nth rep ...
- webpack高版本抽离css样式报错[已解决]
全局安装的webpack版本是5.51.1,webpack-cli是4.9的版本; 本来想用 extract-text-webpack-plugin 的,但是报错了,查了一下文档 发现,已经不支持新版 ...
- SQL 高级语法 MERGE INTO
根据与源表相联接的结果,对目标表进行插入.更新.删除等操作. 例如,对目标表,如果源表存在的数据则更新,没有的则插入,就可以使用MEREG进行同步. 基本语法 MERGE INTO target_ta ...
- 使用 Performance API 实现前端资源监控
1. Performance API 的用处 Performance API 是浏览器中内置的一组工具,用于测量和记录页面加载和执行过程中的各类性能指标.它的主要用处包括: 监控页面资源加载:跟踪页面 ...
- CSS & JS Effect – Image 倒影框
效果 Step1: HTML 结构 <div class="image"> <img src="./images/img-2.png" /&g ...
- 实战合集 | I/O 2021 Flutter 研讨会
2021 年的 Google I/O 大会已圆满闭幕,本次大会带来了诸多关于各项谷歌开发技术产品的最新更新.在此次 I/O,Flutter 发布了 2.2 版本,包括 Web 版的增强.更多 Mate ...
- 系统编程-进程-vfork使用、浅析
1. 先贴代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int globvar = 6 ...
- Nuxt Kit 实用工具的使用示例
title: Nuxt Kit 实用工具的使用示例 date: 2024/9/25 updated: 2024/9/25 author: cmdragon excerpt: 摘要:本文介绍了Nuxt ...