2020icpc上海E 全排列计数

2020ICPC南京站总结 2020ICPC南京站总结 本算法蒟蒻参与的第一场icpc比赛,不出意外的打了铁。感受到了与很多算法dalao间的差距与自身巨多的不足,继续在算法这条路上摸爬滚打的前进吧,以后的日子里继续努力向牌子发起冲击。 总的来说从热身赛到正式赛,题目都出的超有意思(虽然自己很多做不出hhh),很棒的idea强求不来,不过也悄咪咪dream一个自己有一天灵光乍现,顺带出个很棒的题。(努力吧!) 顺带水一下自己在比赛过程中过的两个题: K-K Co-prime Permutation 比赛的时候深刻的感受到一个真理:看不 阅读详情

题意:

如果一个排列中,对于任意的i∈[k+1,n]i\in[k+1,n]i∈[k+1,n],都有a[i]>min(a[i−k],...,a[i−1])a[i]>min(a[i-k],...,a[i-1])a[i]>min(a[i−k],...,a[i−1])成立,那么这个排列就是一个好的排列。nnn的排列中有多少个排列是好的排列?

Solution:

要这样的排列存在,首先必须让111出现在区间[1,k][1,k][1,k]内,设dp[i]dp[i]dp[i]为用iii个不相同的数计算出的这样的排列有多少个,不妨枚举111出现的位置jjj,那么[1,j−1][1,j-1][1,j−1]位置任意放置任何数,[j+1,i][j+1,i][j+1,i]用另外的i−ji-ji−j个数重新构成一个这样的排列,于是
dp[i]=∑j=1kAi−1j−1dp[i−j] dp[i]=\sum_{j=1}^{k}A_{i-1}^{j-1}dp[i-j] dp[i]=j=1∑k​Ai−1j−1​dp[i−j]
这样的单次转移是O(k)O(k)O(k)的,但可以写成这样
dp[i]=(i−1)!∑j=1kdp[i−j](i−j)! dp[i]=(i-1)!\sum_{j=1}^{k}\frac{dp[i-j]}{(i-j)!} dp[i]=(i−1)!j=1∑k​(i−j)!dp[i−j]​
显然求和是区间和形式,维护dp[i]i!\frac{dp[i]}{i!}i!dp[i]​的前缀和就可以O(1)O(1)O(1)转移

全排列问题似乎不需要太注意全排列?用ttt组每组元素都互异的数来等价替换全排列

// #include<bits/stdc++.h>
#include<iostream>
#include<ctime>
#include<queue>
#include<complex>
#include<cstdio>
#include<bitset>
#include<stack>
#include<cmath>
#include<cstring>
#include<map>
#include<algorithm>
using namespace std;

using ll=long long;
const int N=1e7+5,inf=0x3fffffff;
const long long INF=0x3f3f3f3f3f3f,mod=998244353;

ll dp[N],fac[N],invfac[N],sum[N];
int n,k;

ll qpow(ll a,ll b)
{
	ll ret=1,base=a;
	while(b)
	{
		if(b&1) ret=ret*base%mod;
		base=base*base%mod;
		b>>=1;
	}
	return ret;
}

void initial()
{
	for(int i=fac[0]=invfac[0]=1;i<N;i++) fac[i]=fac[i-1]*i%mod;
	invfac[N-1]=qpow(fac[N-1],mod-2);
	for(int i=N-2;i>=1;i--) invfac[i]=invfac[i+1]*(i+1)%mod;
}

int main()
{
	initial();
	cin>>n>>k;
	//有多少个n的排列,使得a[i]>min(a[i-k],a[i-k+1],...,a[i-1]);
	for(int i=1;i<=k;i++)
	{
		dp[i]=fac[i];
		sum[i]=(sum[i-1]+dp[i]*invfac[i]%mod)%mod;
	}
	for(int i=k+1;i<=n;i++)	
	{
		dp[i]=fac[i-1]*(((sum[i-1]-sum[i-k-1])%mod+mod)%mod)%mod;
		sum[i]=(sum[i-1]+dp[i]*invfac[i]%mod)%mod;
	}
	cout<<dp[n];
	return 0;
}
2020 ICPC Macau A. Accelerator(期望,计数,分治FFT)(每日一题 21.7.6) 整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2020 ICPC Macau A. Accelerator(分治FFT) Problem 给定长度为 nnn 的数组 aia_iai​ ,对于 1∼n1\sim n1∼n 的所有的排列 pip_ipi​ ,计算 ((((0+1)∗ap1+1)∗ap2+⋯ )+1)∗apn((((0 + 1) *a_{p_1} + 1) * a_{p_2} + \cdots) + 1) * a_{p_n}((((0+1 阅读详情

相关推荐

2019-2020 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)

2019-2020 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) 文章目录2019-2020 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)A Radio PrizeB Perfect FlushC Coloring ContentionD Dividing by TwoE Rainbow StringsI Error CorrectionJ Interstellar TravelK.Com

m0_49959202的博客 619

ACM/ICPC 之 DP-浅谈“排列计数” (POJ1037)

  这一题是最近在看Coursera的《算法与设计》的公开课时看到的一道较难的DP例题,之所以写下来,一方面是因为DP的状态我想了很久才想明白,所以借此记录,另一方面是看到这一题有运用到 排列计数 的方法,虽然排列计数的思路简单,但却是算法中一个数学优化的点睛之笔。      Poj1037 A decorative fence   题意:有K组数据(1~100),每组数据给...

disuo8001的博客 381

单目和多目视觉统一标定

单目和多目视觉统一标定 一.单目视觉标定 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在

吴建明wujianming_110117 2911

组合计数 ---- 2020 icpc 上海 The Journey of Geor Autumn(思维划分问题计数+预处理优化)

题目链接 题目大意: 就是你有一个nnn的全排列,现在问你去重排这个排列使得对于给定的kkk,满足对于任意的ai,i>ka_i,i>kai​,i>k的都有ai>min(ai−1,...,ai−k)a_i>min(a_{i-1},...,a_{i-k})ai​>min(ai−1​,...,ai−k​) 求排列数 解题思路: 这里很妙的一点就是我们知道对于最小的数肯定是一定要放到[1,k][1,k][1,k]里面去的,然后最小的数肯定会把数列切成两半,前面那一半是随便选,

weixin_45630722的博客 408

别再只用线性回归了!用sklearn的核岭回归搞定非线性数据(附RBF核调参实战)

本文详细介绍了如何使用sklearn的核岭回归处理非线性数据,特别是RBF核的应用与调参实战。通过网格搜索找到最佳参数组合,核岭回归能有效捕捉数据中的复杂波动,显著提升模型性能。适合需要解决非线性问题的数据科学家和机器学习工程师。

weixin_34246529的博客 336

【AWS】创建aws云服务器EC2实例

本文介绍了如何创建aws的EC2云服务器,并介绍了如何使用Xshell远程连接上云服务器

Marcos921的博客 2501

2020(ICPC)亚洲区域赛(南京)赛后总结

​ 2020年的ICPC基本结束(还剩下济南站),我们队也打完了2020年的最后一场正式比赛。从最开始的轮流做队(LLZ)(其实就是我们三个人的第一个字母组合起来的)到后面的69岁,是acmer队(Mabaoguo)(队友觉得之前的队名不吉利,每次都轮流改题,场面一度混论,真是队如其名,于是就改名了),从暑假的集训到省赛再到天梯赛最后到ICPC的南京站,我们队2020年的比赛也就全部结束了。 ​ 比赛开始前5min,三个人都不知道该选哪个题下手,随便挑了A、B、G题,看了1min。“这都是些什么题啊?”然后

Phoenix_ZengHao的博客 2925

CRC_16---ModBus 计算方法及代码实现

1、 CRC寄存器初始值为 0xFFFF;即16个字节全为1; 2、 CRC-16 / ModBus的多项式0xA001H (1010 0000 0000 0001B) ; ‘H’表示16进制数,‘B’表示二进制数。 计算步骤为: (1).预置 16 位寄存器为十六进制 0xFFFF(即全为 1) ,称此寄存器为 CRC 寄存器; (2).把第一个 8 位数据与 16 位 CRC 寄存器的低位相异或,把结果放于 CRC 寄存器; (3).检测相异或后的CRC寄存器的最低位,若最低位为1,CRC寄存器

1万+

2020ICPC上海站 E题 The Journey of Geor Autumn 组合数学 + dp

2020ICPC上海站 E题 The Journey of Geor Autumn 组合数学 + dp题意思路Code(MS) 传送门:https://ac.nowcoder.com/acm/contest/9925/E 题意 有多少个满足1...n的全排列中,i>k时,ai>minj∈[i−k,i)aj。(n≥107  k≥107)有多少个满足1...n的全排列中,i > k时,a_i>min_{j\in[i-k,i)}a_j。(n\ge10^7\;k\ge10^7)有多少个满足1

狙击美佐的博客 583

Python爬虫实战:携程旅游平台数据爬取(酒店+机票+景点),破解加密与反爬(附完整代码)

携程的反爬机制再复杂,核心逻辑都是“识别非真实用户的请求”,而爬虫的核心就是“让请求看起来像真实用户的行为”。本文的方案从登录态处理、参数加密破解、动态数据抓取,到反爬应对,都是围绕“模拟真实”展开:用Playwright模拟真实浏览器登录,用住宅代理模拟真实用户IP,用随机延迟模拟真实用户的操作频率。掌握了这个核心思路,无论平台的反爬如何升级,都能找到应对方法。当然,爬虫技术是一把双刃剑,合理使用才能发挥其价值。如果你的爬虫项目中遇到了携程的反爬问题,不妨按照本文的步骤试试,大概率能解决问题。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2605

【DexGraspNet与多指手抓取算法详解】第四章 抓取检测网络架构设计

图 $G=(V, E)$ 包含两类节点:指尖节点 $V_{tip} = \{v_{tip}^i\}_{i=1}^{N_{finger}}$ 与物体表面节点 $V_{obj} = \{v_{obj}^j\}_{j=1}^{N_{surf}}$。节点特征包含位置 $x \in \mathbb{R}^3$ 、法向 $n \in \mathbb{R}^3$ 及视觉特征 $f \in \mathbb{R}^d$。

VectorShift的博客 440

2020icpc 上海 E.The Journey of Geor Autumn dp

题目链接 思路:长度为n的序列中最小的数必须要放在1-k的位置上,然后最小的数就会把整个序列分成两半,左边可以任意 放置,右边等价于一个新的合法 序列。 那么可以得到一个O(nk)O(nk)O(nk)的dp转移: for(int i=1;i<=n;i++){ for(int j=1;j<=min(i,k);j++){ dp[i]+=dp[i-j]*C(i-1,j-1)*fac[j-1]//[1,j-1]的 位置 随意放,那么从i-1个数挑j-1个让他们全排列即可 } } 那这个数据范围

pubgoso的博客 852

model_optimizer将pi05端到端延时进一步优化到68.13ms了

目前在保持灵活性和性能之间找到一个较好的平衡。vit, llm仍然使用onnx->trt_engine的路径,量化可以通过https://github.com/NVIDIA/Model-Optimizer.git支持。同时支持通过cutedsl手写算子进行进一步优化denoise因为步数多,kernel launch多,因此完全通过手写融合算子实现,将所有steps进行一次大的cuda graph capture.

happyAnger6的专栏 59

2020 ICPC 南京站

第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京)E:EvilCoordinate\mathbf{E:Evil Coordinate}E:EvilCoordinate题目大意分析代码F:Fireworks\mathbf{F:Fireworks}F:Fireworks题目大意分析代码K:KCo−primePermutation\mathbf{K:K Co-prime Permutation}K:KCo−primePermutation题目大意分析代码L:Let′sPlayCurling\math

tlyzxc的博客 2215

32GB Jetson Orin SOM 不能刷机问题排查

拿到了一个新的Orin SOM,当用orin Devkit CVB或定制的CVB不能用Linux_For_Tegra刷机,flash日志(JetPack5.0DP和5.0.1DP都失败了) 2. 确认mb2配置中将CVB的eeprom读取大小设置是否为0 ? 已经确认是正常的 在定制的orin cvb flash上使用Orin devkit som,启动是成功的。但新得到的Orin som并不工作可以排除理由:使用Orin Devkit CVB和Orin SOM(不是Devkit SOM)仍然不能

jzwjzw19900922的博客 1499

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

2019 ICPC 网络赛(上海)D

题目链接:D. Counting Sequences I 前置技能:多重集的排列数 设 S=(n1∗a1,n2∗a2.....nk∗ak)S= (n_1*a_1,n_2*a_2.....n_k*a_k)S=(n1​∗a1​,n2​∗a2​.....nk​∗ak​)是由n1个a1,n2个a2......nk个akn_1个a_1,n_2个a_2......n_k个a_kn1​个a1​,n2​个a2​...

PL博客 340

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

2020-2021 ICPC Southeastern European Regional Programming Contest (SEERC 2020)

2020-2021 ICPC Southeastern European Regional Programming Contest (SEERC 2020) B. Reverse Game 题目描述: 给一个01串,两个人,每次操作都可以翻转字符串中的10 110 100 1010,问谁先不能进行操作就输了 思路: 因为存在01,所以最终无法进行操作的终态就是左边全是0,右边全是1,我们定义一个状态叫做p:1在0的左边,那我们要做的就是使得p的数量等于0,翻转01只能使得p减1,翻转110 100 1

Suryxin's blogs 1591

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

2019ICPC(上海) - Counting Sequences I(dfs打表)

题目链接:点击查看 题目大意:对于n>1,求的长度为n的数组个数 题目分析:因为长度为n的数组中,组成数字相同但排列组合不同的数组,不算同一种情况,所以我们在求出一种满足条件的数组后,需要考虑所有排列组合的情况,然后枚举的时候也有技巧,如果盲目枚举3000位,那得枚举到何年何月。。我们需要分析一下这个式子,可以得出一个简单地结论,就是当n很大的时候,绝大部分都是1,为什么这么说呢,现在假...

Falcon的博客 949

2020-2021 ACM-ICPC, Asia Nanjing Regional Contest E. Evil Coordinate

题目: 思路分析: 只要是对UDLR全排列,实质上就已经尽可能的避免了重复板块。如果这样都有重叠的,也就意味着再怎么打乱也不行! 代码实现: /* *@Author: GuoJinlong *@Language: C++ */ //#include <bits/stdc++.h> /* * __----~~~~~~~~~~~------___ * .

m0_57006708的博客 1979

Counting Sequences I(2019 ICPC 上海站)

题目描述: We define a sequence a1,a2,…,an{a_1, a_2, …, a_n}a1​,a2​,…,an​ of positive integer numbers, as perfect sequence if it matches following qualities:n≥2n \ge 2n≥2, anda1+a2+…+an=a1×a2×…×ana_1 + a_2...

博客 700

2020 ICPC 南京站 E(思维+暴力)

本来想的逆着走,但是发现不对,能被hack掉。情况非常多,分支判会很多。所以应该暴力,暴力枚举UDLR的顺序,然后模拟判断是否合法,也就4!起点为(0,0),终点为(x,y),给定一组上下左右的串,可以对其任意重排序,判断是否存在一个序列使得该点不会走到(x,y),若存在,输出方案.

xianqiuyigedao的博客 389

2025 ICPC Universidad Nacional de Colombia Programming Contest

2025 ICPC Universidad Nacional de Colombia Programming Contest

2401_84097724的博客 998

【ICPC-459】全排列问题

一 给定一个字符串求该字符串的第k个子串。 1 一个长度为len的字符串,它的总的子串的个数为1+2+3...+len = len*(len+1)/2; 2 利用优先队列的方法:最开始先用char数组存入1个字符,因为刚开始肯定是1个字符,然后出队再将出队的那个字符串最后一个字符的下一个字符合并后再压入队列中,出队k-1次后第k次出队的就是第k大的。 比如abc,先进a,b,c,然后a先...

藏经阁 | 玄苦 918

2018 ICPC 沈阳站

细胞色素训练3 排名:100/193 2018年ICPC沈阳站,学长在这里拿金了。听学长说开始时候很快的出了两题,排名第四,是可以进final的,然后一直没过题,直到最后封榜时候连过两题,金牌最后一名。 如果我们第三题能做出来,再少点罚时,是可以银的。结果:铜...... How Much Memory Your Code Is Using? 题意:给出每种数据类型占用的字节数,然后输入...

flyzer的博客 2035

2021上海icpc G

树形dp

stdforces的博客 306

ACM-ICPC North America Qualifier Contest 2018

文章目录ACM-ICPC North America Qualifier Contest 2018A. Bingo TiesB. Das BlinkenlightsG. Left and RightK. Run-Length Encoding, Run!L. Superdoku ACM-ICPC North America Qualifier Contest 2018 A. Bingo Ties 题意: 有一个新bing游戏,给定n个5∗55*55∗5的网格,每次玩家给定一组数列,如果这组数列包含了某2个网

m0_49959202的博客 305
上一篇: 洛谷P2158 欧拉函数
下一篇: 洛谷P1084 树上问题,思维,贪心,二分答案
stdforces
博客等级 码龄4年 9粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值