CF 285D 285E

news/2024/11/7 18:09:33/

大家好,时隔一年,我复活了!

这两题并没有什么关系,只是一起A掉了就顺便一起写个题解吧……


CF 285D

打表

看了好久没有什么想法,猜测答案不会太大就直接打表。
发现n为偶数答案就是0。
n为13可以秒出,n为15大概等一会儿就好了,恩然后就过了。
打表代码不小心删了,反正不难写吧。


CF 285E

计数DP

第一反应记f[i][j][k][0/1][0/1]表示1~i已经填进去,且此时恰有j个位置满足good position,k表示下标大于i+1的位置有多少数,后面两个0/1表示i+1和i+2位置有没有数。因为下标大于i+1的数对i没有影响,所以每一个位置有数字的概率都是相等的,这样乘上一个分数就能知道i+2有数字的方案数。转移就是枚举i+1放哪里,这样且不论是不是对的,已经是三方的了。

发现有个k很难受,考虑优化掉它。之所以要记k,是因为不满足good position的数放在后面是有后效性的。要免去k,就干脆不放这些数,最后乘上阶乘表示随便放。那么这样就不能保证恰好j个位置满足,然而我们发现这样就能使用容斥了。观察发现对于状态中的j个good,一个实际上有m个good的方案会被算C(m,l)。那就直接容斥吧。

#include<cstdio>
#define N 1005
#define MOD 1000000007
using namespace std;
int f[N][N][2][2], F[N];
int C[N][N], fac[N];int main()
{int n, k;scanf("%d%d",&n,&k);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] + C[i-1][j-1]) % MOD;}fac[0] = 1; for(int i = 1; i <= n; i++) fac[i] = 1ll * fac[i-1] * i % MOD;f[1][0][0][0] = 1;f[1][1][0][1] = 1;for(int i = 1; i < n; i++)for(int j = 0; j <= i; j++){for(int s1 = 0; s1 <= 1; s1++) for(int s2 = 0; s2 <= 1; s2++){if(!s1) (f[i+1][j+1][s2][0] += f[i][j][s1][s2])%=MOD; // put i+1 on iif(i != n-1) (f[i+1][j+1][s2][1] += f[i][j][s1][s2])%=MOD; // put i+1 on i+2(f[i+1][j][s2][0] += f[i][j][s1][s2])%=MOD;}}for(int j = 0; j <= n; j++){F[j] = f[n][j][0][0] + f[n][j][1][0];F[j] = 1ll * F[j] * fac[n-j] % MOD;}for(int i = n; i >= 0; i--)for(int j = n; j > i; j--)(F[i] -= 1ll * F[j] * C[j][i] % MOD) %= MOD;printf("%d\n",(F[k]+MOD)%MOD);}

http://www.ppmy.cn/news/663421.html

相关文章

强化学习入门笔记 | UCL silver RL | UC Berkely cs285 DRL

学习情况&#xff1a; &#x1f331; 先后听了两门课程&#xff0c;分别是David Silver的RL和Sergey Levin的DRL。各耗时一周左右&#xff0c;后者更难一些。对RL基本概念、常用算法原理及其伪代码有了大致了解。但是因为时间有点赶&#xff0c;没有敲完整的算法代码。 &…

【LeetCode - 285】二叉搜索树中的顺序后继

文章目录 1、题目描述2、解题思路3、解题代码 1、题目描述 2、解题思路 顺序后继就是中序遍历的下一个节点。 1、如果节点 p 有右子树&#xff0c;那么&#xff0c;p 的顺序后继就在右子树的最左侧。 2、如果节点 p 没有右子树&#xff0c;那么 p 的顺序后继在它的祖宗节点当中…

UCB CS285课程笔记目录

本系列文章给自己挖坑 将会总结神课CS285强化学习课程的内容&#xff08;不想完全照抄课程原始内容&#xff0c;还会记录一些自己在学习、复习过程中的一些心得体会&#xff0c;比如看reference readings&#xff09;&#xff0c;除此之外每一节还会分析github上提供的作业答案…

python语句的输出结果_下列 Python 语句的输出结果是 。 print( 数量 {0}, 单价 {1} .format(100,285.6)) print(str.format( 数量...

【单选题】下列表达式的值为True的是( )。 【简答题】下列 Python 语句的运行结果为 。 x= True y= False z= True if not x or y:print(1) elif not x or not y and z:print(2) elif not x or y or not y and x:print(3) else:print(4) 【单选题】在 Python 中,正确的赋值语句…

完成基于ICX285和ICX205两种CCD的兼容性电路设计

设计主要实现了ICX285和ICX205两种CCD公用一块电路驱动板的问题。 众所周知&#xff0c;不同型号的CCD&#xff0c;由于其管教定义、接口时序都不同&#xff0c;因此驱动部分都不一样&#xff0c;很难做到公用一套电路板&#xff0c;但是ICX285和ICX205两款CCD有很多共性&#…

西门子1200控制V90伺服,西门子1200通过PN通讯控制V90伺服,程序控制采用FB285功能块

西门子1200控制V90伺服&#xff0c;西门子1200通过PN通讯控制V90伺服&#xff0c;程序控制采用FB285功能块&#xff0c;该项目采用中文注释&#xff0c;注释详细&#xff0c;还包括与多台G120 PN通讯控制非常适合大家学习与使用。 支持博图14及以上版本&#xff0c;实际应用案例…

【LeetCode 二叉树专项】二叉搜索树中的中序后继(285)

文章目录 1. 题目1.1 示例1.2 说明1.3 限制 2. 解法一&#xff08;递归中序遍历&#xff09;2.1 分析2.2 实现2.3 复杂度 3. 解法二&#xff08;迭代中序遍历&#xff09;3.1 分析3.2 实现3.3 复杂度 1. 题目 给定一棵二叉搜索树和其中的一个节点 p &#xff0c;找到该节点在树…

285. 二叉搜索树中的中序后继

285. 二叉搜索树中的中序后继&#xff1a; 题目链接 &#xff1a;285. 二叉搜索树中的中序后继 题目&#xff1a; 给定一棵二叉搜索树和其中的一个节点 p &#xff0c;找到该节点在树中的中序后继。如果节点没有中序后继&#xff0c;请返回 null 。 节点 p 的后继是值比 p.va…