CF1498C Planar Reflections

2023-10-14 05:40
文章标签 planar reflections cf1498c

本文主要是介绍CF1498C Planar Reflections,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接
明明没那么难,也不知道为什么做了这么长时间,吐了

题目大意:在这里插入图片描述
如上图所示:一个能量为 k k k的粒子,射入有 n n n个反射板的空间,粒子每经过一个反射板,会有一个 k − 1 k-1 k1能量的粒子被反射,当然 k = 1 k=1 k=1的时候,就不会反射出粒子。问最后可以有多少个粒子,答案对 1 e 9 + 7 1e9+7 1e9+7取模。

题目分析:这个是不能在多组输入前预处理出来的,因为 n n n k k k都相互牵制。题目给出的范围正好是可以让我们进行 O ( n ∗ k ) O(n*k) O(nk) d p dp dp的。用 d p [ k ] [ n ] dp[k][n] dp[k][n]来表示能量为 k k k并且面前有 n n n个挡板的粒子个数。首先,面前有 n n n个挡板能量为k的粒子个数会有一部分是由 k + 1 k+1 k+1能量,面前有 N − n N-n Nn个面板反射的(因为是反方向,所以要有是 N − n N - n Nn N N N为总挡板,这个一画图就可以看出来),另外一部分是由 k + 1 k+1 k+1能量,面前大于 N − n N - n Nn个挡板的粒子反射的,而这部分就是反射能量为 k k k并且面前有 n − 1 n - 1 n1个挡板的粒子的总粒子。所以就有: d p [ k ] [ n ] = d p [ k ] [ n − 1 ] + d p [ k + 1 ] [ N − n ] dp[k][n] = dp[k][n - 1] + dp[k + 1][N - n] dp[k][n]=dp[k][n1]+dp[k+1][Nn]
特别的: d p [ K ] [ N ] = 1 dp[K][N] = 1 dp[K][N]=1 d p [ K − 1 ] [ 0 ] = 1 dp[K - 1][0] = 1 dp[K1][0]=1,其他初始化都为0, d p [ K ] [ N ] = 1 dp[K][N] = 1 dp[K][N]=1不用多说,初始就射入一个粒子。对于 d p [ K − 1 ] [ 0 ] = 1 dp[K - 1][0] = 1 dp[K1][0]=1,因为射入的时候,会在第一个挡板的外部反射出一个粒子,所以 K − 1 K - 1 K1能量的粒子就会有一个面前没有挡板,其余情况,当第一个粒子穿过所有挡板后,其他的粒子就会在挡板之间反射,不会再出现像第一个粒子那样反射出面前有0个挡板的情况了。
最终答案就是把所有可能出现的粒子加和。

code:

#include <bits/stdc++.h>using namespace std;
#define fast                      \ios_base::sync_with_stdio(0); \cin.tie(NULL);
typedef long long ll;
const int N = 1010;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;int dp[N][N];
void done(int K, int NN) {dp[K][NN] = 1;dp[K - 1][0] = 1;for (int k = K - 1; k >= 1; k--) {for (int n = 1; n <= NN - 1; n++) {dp[k][n] = dp[k][n - 1] + dp[k + 1][NN - n];dp[k][n] = dp[k][n] % mod;}}
}void solve() {int n, k;scanf("%d%d", &n, &k);for (int i = 0; i <= k; i++) {dp[i][0] = 0;dp[i][n] = 0;}for (int i = 0; i <= n; i++) {dp[k][i] = 0;}done(k, n);int ans = 0;for (int i = 1; i <= k; i++) {for (int j = 0; j <= n; j++) {ans = (ans + dp[i][j]) % mod;}}printf("%d\n", ans % mod);
}int main() {int T;scanf("%d", &T);while (T--) {solve();}return 0;
}

这篇关于CF1498C Planar Reflections的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/208539

相关文章

自定义类加载器加载加密jar包,使用Reflections扫描自定义加载器加载的Class,RSA加密解密签名AES密文,AES加密解密文件

为什么要做这个工作:     游戏私服是游戏人最讨厌的一件事,而游戏私服基本上都是内部人员把内部的自启服务器泄露出去,我们现在做的就是,内部发行的服务器版本是加密后的二进制文件,必须用给定的RSA秘钥才能解密二进制文件,然后 再使用自定义类加载器进行加载,在整个过程中都是流操作,不会生成class文件,就能防止内部发行的服务器被拷贝。这样并不能完全防止服务器泄露,如果有心人拿到秘钥,拿到加密后的

meshlab: pymeshlab保存物体的横截面(compute planar section)

一、关于环境  请参考:pymeshlab遍历文件夹中模型、缩放并导出指定格式-CSDN博客 二、关于代码 本文所给出代码仅为参考,禁止转载和引用,仅供个人学习。 # pymeshlab需要导入,其一般被命名为mlimport pymeshlab as ml# 本案例所使用的3D模型为压缩包中的obj_000001.ply,请将其与本脚本放置在同一文件夹内。input_file

Reflections类实现接口和注解的扫描

pom.xml <dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId><version>0.9.10</version></dependency> 加了某个注解和实现某类接口的扫描 package org.example;import org.reflections.Refl

P6技巧:ORACLE Primavera P6 反馈项目Reflections的使用

前言 反馈是一个有趣的概念,就目前的了解而言,他是 Primavera P6 所独有的。 你可以将反馈视为项目的特殊假设副本。 然而,与直接拷贝副本不同的是,反馈保留了返回源项目的链接。 这意味着如果反馈发生更改,你可以将部分或全部更改合并回源项目中。 这是一个非常巧妙的假设能力。 更重要的是,它很容易执行,您只需要知道两个菜单选项即可完成。 功能说明 右键单击要创建反馈的项目,然

关于yuv 格式-Semi Planar和Planar

转载:http://www.cnblogs.com/soniclq/archive/2012/02/02/2335974.html 关于yuv 格式 YUV 格式通常有两大类:打包(packed)格式和平面(planar)格式。前者将 YUV 分量存放在同一个数组中, 通常是几个相邻的像素组成一个宏像素(macro-pixel);而后者使用三个数组分开存放 YUV 三个分量,就像 是一

Mirrors and reflections for VR

专为虚拟现实而建,但也非常适合非虚拟现实桌面和移动项目 这是URP管道,从Unity2019.4.16一直测试到2023年。 完全工作场景预览,轻松修改着色器材质。着色器支持折射,可以制作很酷的效果。 镜子/反射可以互相反射,而不仅仅是2...想象一下一个电梯,3面镜子都互相反射,直到你的内存和性能预算能达到的深度。 反射摄像机的递归遮挡剔除。 许多选项来调整性能。改变分辨率,修改图层蒙版,限

一文看懂图像格式 RAW、RGB、YUV、Packed/Unpacked、Bayer、MIPI、Planar、Semi-Planar、Interleaved

目录 一、通用属性 1. Packed/Unpacked 2. 压缩/非压缩 二、RAW 1. Bayer格式 2. 分类 3. MIPI RAW 三、RGB 分类 四、YUV 1. YUV与RGB转换 2. 分类 3. 内存计算 五、压缩格式 有的人,错过了,一生再也找寻不到。 本文详细分析各种图像格式(RAW、RGB、YUV)的分类、内存分布。一篇文章让你看

1498C — Planar Reflections

C. Planar Reflections 具体代码如下 #include<iostream>#include<cstring>using namespace std;const int N = 1010, mod = 1e9 + 7;int n, k;int dp[N][N][2];int solve(int cur, int k, int dir){if(k == 1) retur

(三)平面碰撞分析(Planar Impact Mechanics)

文章目录 1 n-t坐标系2 物理量定义3 碰撞分析3.1 动量守恒3.2 角动量定理3.3 恢复系数(COR)3.4 冲量比(Impulse Ratio)3.5 碰撞分析求解3.6 动能损失和 Δ v \Delta v Δv   在质点碰撞分析中,没有考虑角动量。所以这篇在前面的基础上添加角动量的分析。这个理论有时候也叫做rigid-body impact theory。