http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1043

1043 幸运号码

基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
收藏
关注
1个长度为2N的数,如果左边N个数的和 = 右边N个数的和,那么就是一个幸运号码。
例如:99、1230、123312是幸运号码。
给出一个N,求长度为2N的幸运号码的数量。由于数量很大,输出数量 Mod 10^9 + 7的结果即可。
Input
输入N(1<= N <= 1000)
Output
输出幸运号码的数量 Mod 10^9 + 7
Input示例
1
Output示例
9
dp[i][j]表示位数为j各位数字和为i的方案个数,一开始我去除了前导零的影响,统计时的复杂度就会高,导致一直有几个点过不去。
后来发现其实可以算上有前导零的最后能在O(1)内减去他,降低了复杂度而且空间也能降维了,因为只需要最后两组数据,皆大欢喜。
dp[i][j]=SUM{ dp[i-x][j-1] | i>=x }
ans=SUM{ dp[i][n]*(dp[i][n]-dp[i][n-1]) | 0<=i<=9*n }
前i位数字和为j里面具有前导零的方案<==>前i-1位数字和为j的方案 很巧妙
 #include<iostream>
#include<cstring>
#include<cstdio>
#include<stdio.h>
using namespace std;
#define LL long long
const LL mod = 1e9 + ;
LL dp[][];
int main()
{
register int i, j, k ;
int len, m, cur = ;
for (i = ;i <= ;++i) dp[i][cur] = ;
scanf("%d", &len);
m = * len;
for (j = ;j <=len;++j)
{
cur ^= ;
for (i = ;i <= m;++i)
{
LL sum = ;
for (int x = ;x <= ;++x) {
if (i >=x) {
sum =( sum + dp[i-x][cur^]) ;
if (sum > mod) sum %= mod;
}
else break;
}
dp[i][cur] = sum;
}
}
if (len == ) { puts("");return ; }
LL ans = ;
for (i = ;i <= m;++i)
ans = (ans + dp[i][cur] * (dp[i][cur] - dp[i][cur^])) % mod;
printf("%lld\n", ans);
//system("pause");
return ;
}

最新文章

  1. [小北De编程手记] : Lesson 08 - Selenium For C# 之 PageFactory &amp; 团队构建
  2. 开发Android 范的错误
  3. CDH中flume是已经启动着了…
  4. 【转】3 Essential Sublime Text Plugins for Node &amp; JavaScript Developers
  5. [USACO08JAN]电话线Telephone Lines
  6. Codeforces 427D Match &amp;amp; Catch(后缀自动机)
  7. Loadrunner之脚本编写
  8. 项目总结四:神经风格迁移项目(Art generation with Neural Style Transfer)
  9. Chapter 5 Blood Type——17
  10. Linux定时任务调用sh文件
  11. oldboys21day03
  12. oracle_18c新建用户用normal登陆失败
  13. 项目- Vue全家桶实战去哪网App
  14. caffe实现多任务学习
  15. unity物理检测的几种方式
  16. 尺取法拓展——POJ3320
  17. linux互传文件nc命令
  18. WinForm中获取Listbox、DataGridView等控件某行对应的数据
  19. luoguP4172 [WC2006]水管局长
  20. March 7 2017 Week 10 Tuesday

热门文章

  1. Python WSGI v1.0 中文版(转)
  2. Windows Server 2016 下执行定时任务(英文系统)
  3. 关于\r和\n的区别
  4. boost atomic
  5. Appium的Java封装
  6. php源码安装,并配置apache支持php
  7. day3-python的函数及参数
  8. T25健身视频全集+课表
  9. CentOS中nginx负载均衡和反向代理的搭建
  10. 正则表达式和python的re模块