首页 > 其他 > 详细

Planar Reflections

时间:2021-04-06 23:21:48      阅读:37      评论:0      收藏:0      [点我收藏+]

Planar Reflections

推了半天公式一看题解发现是DP(倒_(:з」∠)_

 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 #define db double
 4 using namespace std;
 5 ll mod=1e9+7;
 6 const int qs=1e3+7;
 7 ll t,n,k,f[qs][qs];
 8 //f[i][j] 表示前面还有i块墙,当前能量为j 产生的粒子数 
 9 //f[i-1][j]:粒子向前走,能量不变
10 //f[n-i][j-1]:分裂出的粒子向相反方向走,能量-1 
11 int main(){
12     std::ios::sync_with_stdio(false);
13     cin>>t;
14     while(t--){
15         cin>>n>>k;
16         for(int i=1;i<=n;++i)  f[i][1]=1; //能量为1结果恒为1 
17         for(int j=1;j<=k;++j)  f[0][j]=1; //没有墙粒子数为1
18         for(int j=1;j<=k;++j){
19             for(int i=1;i<=n;++i){
20                 f[i][j]=(f[i-1][j]+f[n-i][j-1])%mod;
21             }
22         }
23         cout<<f[n][k]<<"\n";    
24     }
25     
26     
27     return 0;
28 }

 

Planar Reflections

原文:https://www.cnblogs.com/Suki-Sugar/p/14623760.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!