博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
湖南大学ACM程序设计新生杯大赛(同步赛)H - Yuanyuan Long and His Ballons
阅读量:6425 次
发布时间:2019-06-23

本文共 1849 字,大约阅读时间需要 6 分钟。

题目描述

Yuanyuan Long is a dragon like this picture?

                                   
I don’t know, maybe you can ask him. But I’m sure Yuanyuan Long likes ballons, he has a lot of ballons.          

One day, he gets n white ballons and k kinds of pigment, and he thought a problem:

1.      Number these ballons b1, b2,  … , bi, …,  to bn.

2.      Link these ballons to a circle in order, and color these ballons.

3.      He need to make sure that any neighbor ballons have different colors.

He wants to know how many solutions to solve this problem. Can you get the answer to him? The answer maybe very large, get the answer MOD 100000007.

For Example: with 3 ballons and 3 kinds of pigment

Your answer is 3*2*1 MOD 100000007 = 6. 
The answer maybe large, you can use integer type long long.

输入描述:

The first line is the cases T. ( T <= 100) For next T lines, each line contains n and k. (2<= n <= 10000,  2<= k <=100)

输出描述:

For each test case, output the answer on each line.
示例1

输入

33 34 25 3

输出

6230

题解

$dp$。

$dp[i][j]$表示在第$1$个人涂第一种颜色,涂完$i$个人,且第$i$个人涂第$j$种颜色的方案数。

$sum = dp[n][2]+...+dp[n][k]$,答案就是$sum*k$。

有很多优化可以搞,什么优化都没做就过了......

#include
using namespace std; long long mod = 100000007LL;long long dp[10010][110]; int main() { int T, n, k; scanf("%d", &T); while(T --) { scanf("%d%d", &n, &k); for(int i = 1; i <= n; i ++) { for(int j = 1; j <= k; j ++) { dp[i][j] = 0; } } dp[1][1] = 1; for(int i = 2; i <= n; i ++) { long long sum = 0; for(int j = 1; j <= k; j ++) { sum = (sum + dp[i - 1][j]) % mod; } for(int j = 1; j <= k; j ++) { dp[i][j] = (sum - dp[i - 1][j] + mod) % mod; } } long long sum = 0; for(int j = 2; j <= k; j ++) { sum = (sum + dp[n][j]) % mod; } sum = sum * k % mod; printf("%lld\n", sum); } return 0;}

  

转载于:https://www.cnblogs.com/zufezzt/p/8099017.html

你可能感兴趣的文章
Linux运维基础命令
查看>>
使用PowerShell配置IP地址
查看>>
第十一章 MySQL运算符
查看>>
JAVA常见算法题(十七)
查看>>
GUI鼠标相关设置
查看>>
使用 <Iframe>实现跨域通信
查看>>
闭包--循序学习
查看>>
项目实战之集成邮件开发
查看>>
解决C3P0在Linux下Failed to get local InetAddress for VMID问题
查看>>
1531 山峰 【栈的应用】
查看>>
巧用美女照做微信吸粉,你会做吗?
查看>>
wcf学习总结《上》
查看>>
ERROR (ClientException)
查看>>
Load Balance 产品横向比较
查看>>
Java代理程序实现web方式管理邮件组成员
查看>>
【编译打包】tengine 1.5.1 SRPM
查看>>
看图说话:手动清除病毒文件流程
查看>>
一句话下拖库
查看>>
Deploy Office Communications Server 2007R2 Group Chat Server(二)
查看>>
在Cacti上实现MSN报警机制
查看>>