CF 1529D Kavi on Pairing Duty

CF 1529D Kavi on Pairing Duty

题意:

有2 * n个点,现在要求两个点连成线段,每个连法都可以得到n个线段,合法的连接方式为:连接的n个线段,任意两个线段要么长度相等,要么有包含关系
n<=1e6

题解:

思维题+推公式
我们设dp[n]:表示2 * n点时合法的线段个数
题目有两个限制条件,我们先考虑第一个:
如果有包含关系的话:
如图

  1. 连接点1和点2n,得到线段(1,2n),此时剩下2n-2个点都在这个线段之下,而中2n-2个点的组合与外面这个线段无关,不正是dp[n-1]吗,所以方案数就是 1 * dp[n-1]
  2. 连接线段(1,2n-1),(2,2n),此时剩下2n-4个点在这两个线段之下,同上,方案数为dp[n-2],
  3. 以此类推可以得到:存在线段包含的情况下有Σi=0n-1dp[i]
    在这里插入图片描述
    我们考虑所有线段都相等的情况(此时不存在线段包含):
    如图,图中为n=4的线段都相等不存在包含的情况:
    在这里插入图片描述

第一个为长度为1,第二个为长度为2,第三个为长度为3,第四个为长度为4,如果再长就超出去了,我们发现第三个是不合法的,通过举例观察就会发现,只有当长度为n的因子时,才是合法的,因为只有因子才能够分配均匀。所以这种情况答案就是n的因子个数,但是这样并不完全对,我们看第二个图的最后一个情况,和第一个图的最后一个情况竟然是一样的,出现了重复,为了去重,所以我们定义第二个情况的答案为n的因子个数-1
约数个数可以用线性筛求,直接求会超时(n最大到1e6)
最终答案为两者相加:
在这里插入图片描述
dp[0]=1

代码:

#include<bits/stdc++.h>
#define debug(a,b) printf("%s = %d\n",a,b);
typedef long long ll;
using namespace std;inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}
const int maxn=1e6+9;
const int mod=998244353;
ll siz[maxn];
ll dp[maxn];
ll sum[maxn];
int main()
{int n;cin>>n;for(int i=1;i<=n;i++){//fac[i]表示i的因子的个数 for(int j=i;j<=n;j+=i){siz[j]=(siz[j]+1)%mod;}}dp[0]=1; sum[0]=1;//sum[i]=a[0]+...+a[i]for(int i=1;i<=n;i++){dp[i]=(sum[i-1]+siz[i]-1)%mod;sum[i]=(sum[i-1]+dp[i])%mod;}cout<<dp[n];
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P5363 [SDOI2019]移动金币(博弈论、dp)

解析 阶梯dp&#xff0c;感觉挺妙的。 有想过按奇偶考虑&#xff0c;但是没搞出来… 本题关键肯定就是确定必胜的等价条件。 题意可以转化为&#xff1a;有 m1 个节点&#xff0c;上面一共有 n-m 个棋子&#xff0c;每次可以把一堆的若干个棋子放到前一堆。 这就是经典的阶梯…

东莞.NET技术线下沙龙活动资料分享

今天天气虽然很不好&#xff0c;但不减广大.NET开发者的热情&#xff0c;仍然到场率很高。因图片还在整理中&#xff0c;暂时只发出个简单的活动资料整理分享&#xff0c;后续摄影师图片修图好后&#xff0c;再一并给到场者发送图片&#xff0c;和对活动的现场报道作更详细的图…

F. It‘s a bird! No, it‘s a plane! No, it‘s AaParsa!

F. It’s a bird! No, it’s a plane! No, it’s AaParsa! 题意&#xff1a; 有n个城市&#xff0c;每个城市都有一个传送大炮指向另一个城市&#xff0c;每个大炮都有发送时间&#xff0c;每过1s&#xff0c;大炮就会从原本指向b&#xff0c;指向(b1)%n,问任意两点之间的最短…

【无码专区6】球与盒子(数学线性筛)

因为只有std&#xff0c;没有自我实现&#xff0c;所以是无码专区 主要是为了训练思维能力 solution才是dls正解&#xff0c;但是因为只有潦草几句&#xff0c;所以大部分会有我自己基于正解上面的算法实现过程&#xff0c;可能选择的算法跟std中dls的实现不太一样。 std可能…

P4279 [SHOI2008]小约翰的游戏(博弈论)(Anti-SG)

解析 我的做法&#xff1a;打表&#xff0c;哦…过了。 打表观察的结论&#xff1a;只要不全是1&#xff0c;答案和正常Nim游戏相同&#xff0c;全是1简单讨论奇偶性即可。 证明&#xff1a; 全是1的正确性显然&#xff0c;现在考虑不全是1的时候为什么直接看异或和就行。 关键…

【ASP.NET Core 沉思录】CreateWebHostBuilder 是一个 Convension

失踪人口回归。去年六月份开始&#xff0c;我开始翻译一千多页的《CSharp 7 in a Nutshell》到现在为止终于告一段落。我又回归了表世界。从这次开始我希望展开一个全新的主题。我叫它 ASP.NET Core 沉思录&#xff08;多么高大上的名字&#xff0c;自我陶醉~&#xff09;。今天…

对弈(nim-k游戏博弈)

problem AliceAliceAlice 和 BobBobBob 又在玩游戏。 AliceAliceAlice 和 BobBobBob 在一个 1n1\times n1n 的网格图上玩游戏&#xff0c;网格图的 nnn 个格子中&#xff0c;有 kkk 个格子内被各放了一个棋子&#xff0c;其中 kkk 是一个偶数。 从左到右&#xff0c;这 kkk 个…

Codeforces Round #722 (Div. 2)

Codeforces Round #722 (Div. 2) 题号题目知识点AEshag Loves Big Arrays&#xff08;题解略&#xff09;贪心BSifid and Strange Subsequences思维CParsa’s Humongous Tree树形dpDKavi on Pairing Duty思维推公式ETrees of Tranquillity思维线段树FIt’s a bird! No, it’s …

P3226 [HNOI2012]集合选数(状压、构造)

解析 做法闻所未闻的神仙题。 题目可以看成求这张特殊图的合法独立集数目。 这张图有一个特点&#xff1a;链长是 O(log⁡n)O(\log n)O(logn) 级别的&#xff0c;且每个点的度数比较少。 考虑构造如下矩阵&#xff1a; 1 3 9 12 ... 2 6 18 54 ... 4 ... 8 ...这个矩阵其实…

.Netcore 2.0 Ocelot Api网关教程(6)- 配置管理

本文介绍Ocelot中的配置管理&#xff0c;配置管理允许在Api网关运行时动态通过Http Api查看/修改当前配置。由于该功能权限很高&#xff0c;所以需要授权才能进行相关操作。有两种方式来认证&#xff0c;外部Identity Server或内部Identity Server。1、外部Identity Server修改…

CF 1529B. Sifid and Strange Subsequences

CF 1529B. Sifid and Strange Subsequences 题意&#xff1a; 给你n个数&#xff0c;让你从这n个数中找m个数&#xff0c;保证这m个数中任意两个数的差的绝对值大于等于这m个数中最大值。求一个最大的m。 题解&#xff1a; 这个m个数中最多只能有一个正数。因为任意两个正数…

最短路径(虚树+期望)

problem 给定一棵 nnn 个结点的无根树&#xff0c;每条边的边权均为 111 。 树上标记有 mmm 个互不相同的关键点&#xff0c;小 A 会在这 mmm 个点中等概率随机地选择 kkk 个不同的点放上小饼干。 你想知道&#xff0c;经过有小饼干的 kkk 个点的最短路径长度的期望是多少。…

AT2000 [AGC002F] Leftmost Ball(dp、组合数学)

解析 如果之前有些卡住的题可以说是奇淫技巧的话&#xff0c;这道题的思路只能说太经典了。 感觉其实也就是紫的难度吧&#xff0c;没做出来有些可惜。 还是有写畏黑情绪&#xff0c;见到黑题本能的感觉做不出来。 首先是一个比较自然的题意转化&#xff1a;有 k-1 个 1-n 的…

CF 1529E. Trees of Tranquillity

CF 1529E. Trees of Tranquillity 文章目录题意&#xff1a;题解&#xff1a;代码&#xff1a;线段树代码&#xff1a;利用set实现题意&#xff1a; 有A1&#xff0c;A2两棵树&#xff0c;根是1&#xff0c;编号都是1~n&#xff0c;先制作图A3&#xff0c;如果两个点的x和y同时…

【学习笔记】最大权闭合子图和最大密度子图(最小割的模型应用)

最大权闭合子图和最大密度子图最大权闭合子图contentexercise最大密度子图contentexerciseUpd&#xff1a;最大权闭合子图易懂证明最大权闭合子图 content 先作出以下声明&#xff1a; c(u,v):c(u,v):c(u,v): 边 (u,v)(u,v)(u,v) 的容量。 f(u,v):f(u,v):f(u,v): 边 (u,v)(u,…

Docker最全教程之使用Docker搭建Java开发环境(十八)

前言Java是一门面向对象的优秀编程语言&#xff0c;市场占有率极高&#xff0c;但是在容器化实践过程中&#xff0c;发现官方支持并不友好&#xff0c;同时与其他编程语言的基础镜像相比&#xff08;具体见各语言镜像比较&#xff09;&#xff0c;确实是非常臃肿。本篇仅作探索…

AT2705 [AGC019F] Yes or No(组合数学)

解析 Atcoder的题超小的码量总让人做不出来的时候感到很不甘心… 但这题确实挺难的&#xff0c;主要还是魔术一样的奇淫技巧。 大力推式子那个阴间方法我直接选择弃疗。 一个很显然的结论是&#xff1a;肯定回答当前剩的比较多的选项。 pia一张洛谷的图&#xff1a; &#…

Coding Contest HDU - 5988

Coding Contest HDU - 5988 题意&#xff1a; 有n个点&#xff0c;m个边&#xff0c;每个点有人数和食物数&#xff0c;每个人都要吃一份食物&#xff0c;如果该点的食物不够&#xff0c;他们就要去其他点&#xff0c;每个边最多只能走c次&#xff0c;每次有人走一条路&#…

ASP.NET Core 项目简单实现身份验证及鉴权

环境VS 2017ASP.NET Core 2.2目标以相对简单优雅的方式实现用户身份验证和鉴权&#xff0c;解决以下两个问题&#xff1a;无状态的身份验证服务&#xff0c;使用请求头附加访问令牌&#xff0c;几乎适用于手机、网页、桌面应用等所有客户端基于功能点的权限访问控制&#xff0c…

AT4352 [ARC101C] Ribbons on Tree

解析 其实想到了断边按连通块容斥的做法。 但不知道为啥觉得没前途弃了… 悲。 考虑容斥&#xff0c;设 f[x][i] 表示 x 子树内与 x 所连的联通块有 i 个节点的方案数&#xff0c;第三维朴素是记录连通块个数&#xff0c;但其实只需要记一个 0/1 表示奇偶性即可。 然后题解奥…