首页 > 其他分享 >1127noip模拟赛(命运fate)

1127noip模拟赛(命运fate)

时间:2024-11-27 19:11:00浏览次数:10  
标签:le fate int len 1127noip 序列 模拟 mod

智慧t2,我不智慧,赛时想到了一点点。。

题意:

给一个单调不降的序列 \(a_1,a_2,...,a_n\) 。 给定一个整数 \(x\)。求一个 \(b\) 序列使得 任意 \(\forall i(1<i\le n) \ a_i-b_i<a_{i+1}-b_{i+1}\) 且 \(\forall i<j<x\ \ b_i\le b_j.\forall x<j<i\ \ b_i\le b_j\)。

做法:

整理一下 设最后的 \(a_i-b_i\) 序列为 \(c\) .

当 \(1\le i<x:\)

\[a_i\le a_{i+1}\\ b_i\le b_{i+1}\\ c_i\le c_{i+1}\\ \\ a_i-c_i\le a_{i+1}-c_{i+1}\\ c_i-a_i\ge c_{i+1}-a_{i+1}\\ c_i+a_{i+1}-a_{i}\ge c_{i+1}\\ c_i\le c_{i+1}\le c_i+a_{i+1}-a_{i} \]

所以 取值范围有 \(a_{i+1}-a_i+1\) 种。直接 prod 起来就好。

当 \(x<i\le n\) :

也就是要求 \(x\) 右侧的不降序列,再减去一个不增序列,仍然是一个不降序列,且要求最终序列第一个元素不小于 \(a_x\)。

不难发现,在这种情况下,如果最终序列第一个元素不小于 \(a_x\) 的要求被满足,后面的元素依然还是不降的(后面更大的元素,减去了一个更小的数,显然还是不会比你小)。 令 \(len=n-x\) \(y=a_{x+1}-a_x\) ,那么问题变成了数长度为 \(len\),值域在 \([0,d]\) 的序列个数。

插板法一下 ,答案就是 \(\binom{y+len}{len}\).

然后两边乘起来。

最终答案就是

\[\binom{a_{x+1}-a_x+n-x}{n-x}\prod_{i=1}^{x-1}(a_{i}-a_{i-1}+1) \]

妙妙妙妙米奇妙妙屋

代码:

直接放std了。懒得写。对不起。

#include<bits/stdc++.h>
using namespace std;
const int mod=998244353;
int n,a[300005],x;
int qpow(int a,int b)
{
	if(b==0) return 1;
	int g=qpow(a,b/2);
	g=1ll*g*g%mod;
	if(b&1) g=1ll*g*a%mod;
	return g;
}
int solvel()
{
	int ans=1;
	for(int i=1;i<x;i++)
	{
		ans=1ll*ans*(a[i]-a[i-1]+1)%mod;
	}
	return ans;
}
int solver()
{
	if(x==n) return 1;
	int d=a[x+1]-a[x],ans=1,len=n-x;
	//C(d+len,len)
	for(int i=len,j=d+len;i>=1;i--,j--)
	{
		ans=1ll*ans*qpow(i,mod-2)%mod*j%mod;
	}
	return ans;
}
int main()
{
	freopen("fate.in","r",stdin);
	freopen("fate.out","w",stdout);
	assert(cin>>n);
	for(int i=1;i<=n;i++)
	{
		assert(cin>>a[i]);
	}
	assert(cin>>x);
	cout<<1ll*solvel()*solver()%mod;
	assert(!(cin>>x));
}

这个马蜂i dont like

标签:le,fate,int,len,1127noip,序列,模拟,mod
From: https://www.cnblogs.com/slayer-wt/p/18572917

相关文章

  • 多校A层冲刺NOIP2024模拟赛26 && G
    多校A层冲刺NOIP2024模拟赛26&&GT1随机游走考虑到达一个点后,我们该往他的那个儿子走,简单膜一下只有两个儿子的样例后发现条件是$\frac{w_i}{v_i}$越小越优先,其中$w_i$表示他到父亲的边权,$v_i$表示他的点权,然后尝试推广,膜个稍微大点的样例发现完全是通用的,此时......
  • CudaSPONGE高性能GPU分子模拟
    技术背景CudaSPONGE是基于CUDAC开发的一款纯GPU分子动力学模拟软件,具有模块化和高性能的特点。官方基本介绍内容如下:分子动力学(MolecularDynamics,MD)模拟是化学、物理学、生物学、材料科学和许多其他领域的有用工具。在过去40年中,人们开发了各种高效的计算算法和MD程序,用......
  • 11.27 模拟赛
    复盘T1一眼不会。模拟样例的时候好像得到了一个对于每次询问\(\mathcalO(n)\)做的暴力算法。不太清楚。画了点图。差不多得到一点想法。发现用set维护连通块,总复杂度\(\mathcalO(n\log^2n)\),1e6肯定过不去。但应该能过80。写写试试。然后写了一坨。实际上这个时候......
  • “量子跃迁” 式网络攻击模拟矩阵
    importthreadingimportargparseimporttimefromscapy.layers.inetimportIP,ICMP,TCPfromscapy.allimport*#全局变量,用于统计发送失败的数据包数量,初始化为0send_failure_count=0#新增全局变量,记录当前的发送延迟时间,初始值设为0.01秒,用于控制发送SYN数据......
  • noip模拟21
    A打印一眼题。首先一个很简单的思路就是维护一个打印机的优先队列,按照打印机的时间排序。但是如果现在可用的打印机有很多,你需要找到一个id最小的,这样维护就得把所有时间戳小于当前\(t_i\)的打印机全部弹出,统计,再加回来。有60分。然后就能想到把时间戳小于等于当前的......
  • NOIP2024 前集训:多校A层冲刺NOIP2024模拟赛26
    前言点击查看代码《看得最远的地方》你是第一个发现我越面无表情越是心里难过所以当我不肯落泪地颤抖你会心疼的抱我在胸口你比谁都还了解我内心的渴望比表面来得多所以当我跌断翅膀的时候你不扶我但陪我学忍痛我要去看得最远的地方和你手舞足蹈聊梦想像......
  • 每日OJ_牛客_MT2棋子翻转_模拟_C++_Java
    目录牛客_MT2棋子翻转_模拟题目解析C++代码Java代码牛客_MT2棋子翻转_模拟棋子翻转_牛客题霸_牛客网描述:在4x4的棋盘上摆满了黑白棋子,黑白两色棋子的位置和数目随机,其中0代表白色,1代表黑色;左上角坐标为(1,1),右下角坐标为(4,4)。现在依次有一些翻转操作,要对以......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛26
    Rank有点唐A.随机游走签。重要的就后两句话。题意由此转化成:到每一个节点时,先后遍历其所有子节点的子树,使得\(\sumt_i\timesw_i\)最小。提前dfs一遍处理出便利完某棵子树所需要的总时间和子树总价值,容易发现对于两个子节点的子树来说,全部遍历完所需总时间是一样的,......
  • 2024届新题型数学模拟选题
    目录#12024九省联考#2浙江省L16联盟2024年高三返校适应性测试#12024九省联考题型题号代数10,11,14几何8,18#2浙江省L16联盟2024年高三返校适应性测试题型题号代数8,9,11,19(1)几何16(1)(ii)......
  • 多校A层冲刺NOIP2024模拟赛26
    多校A层冲刺NOIP2024模拟赛26\(T1\)A.随机游走\(100pts/100pts\)在树上做临项交换即可。点击查看代码structnode{llnxt,to,w;}e[500010];llhead[500010],v[500010],siz[500010],sum[500010],cnt=0,ans=0,tim=0;structquality{llsumt,siz,to,w;};......