hdu4658(广义五边形&分割函数2)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4658
题意:f(x) 为将 x 分成其他数和的形式的方案数.对于 t 组输入,输出 f(xi, k), 其中 k 表示 xi 分解的数出现的次数不超过 k 次.
思路:在 hdu4651(http://www.cnblogs.com/geloutingyu/p/7599415.html) 的基础上加个限制 k.
感觉公式好难推,直接当模板用好了.
代码:
#include <iostream>
#include <stdio.h>
using namespace std; const int mod = 1e9 + ;
const int MAXN = 1e5 + ;
int f[MAXN]; void get_f(void){
f[] = ;
for(int i = ; i < MAXN; i++){
for(int j = , cnt = ; i - ( * j * j - j) / >= ; j++, cnt *= -){
int cc = * j * j;
f[i] += f[i - (cc - j) / ] * cnt;
f[i] %= mod;
f[i] = (f[i] + mod) % mod;
if(i >= (cc + j) / ){
f[i] += f[i - (cc + j) / ] * cnt;
f[i] %= mod;
f[i] = (f[i] + mod) % mod;
}
}
}
} int solve(int n, int k){
int ans = f[n];
for(int i = , cnt = -; n - k * ( * i * i - i) / >= ; i++, cnt *= -){
ans += f[n - k * ( * i * i - i) / ] * cnt;
ans %= mod;
ans = (ans + mod) % mod;
if(n - k * ( * i * i + i) / >= ){
ans += f[n - k * ( * i * i + i) / ] * cnt;
ans %= mod;
ans = (ans + mod) % mod;
}
}
return ans;
} int main(void){
get_f();
int t, x, k;
scanf("%d", &t);
while(t--){
scanf("%d%d", &x, &k);
printf("%d\n", solve(x, k));
}
return ;
}
hdu4658(广义五边形&分割函数2)的更多相关文章
- hdu4651(广义五边形数 & 分割函数1)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:f(x) 为将 x 分成其他数和的形式的方案数.对于 t 组输入,输出 f(xi). 思路 ...
- C++常见问题: 字符串分割函数 split
C++标准库里面没有字符分割函数split ,这可太不方便了,我已经遇到>3次如何对字符串快速分割这个问题了.列几个常用方法以备不时之需. 方法一: 利用STL自己实现split 函数(常用,简 ...
- 【C++实现python字符串函数库】一:分割函数:split、rsplit
[C++实现python字符串函数库]split()与rsplit()方法 前言 本系列文章将介绍python提供的字符串函数,并尝试使用C++来实现这些函数.这些C++函数在这里做单独的分析,最后我 ...
- hive函数 -- split 字符串分割函数
hive字符串分割函数 split(str, regex) - Splits str around occurances that match regexTime taken: 0.769 secon ...
- Split字符串分割函数
非常非常常用的一个函数Split字符串分割函数. Dim myTest myTest = "aaa/bbb/ccc/ddd/eee/fff/ggg" Dim arrTest arr ...
- ASP.NET中常用的字符串分割函数
asp.net字符串分割函数用法 先来看个简单的实例 但是其数组长度却是25,而不是3.下面这种方法是先将“[111cn.net]”替换成一个特殊字符,比如$,在根据这个字符执行Split 例如下面我 ...
- MSSQLSERVER数据库- 字符串分割函数返回类型表
遇到这样一个问题,存储在数据库的数据是一串字符串如:1,2,3,4,5,6.想把这串字符串进行转变成一个表格,如下: 1 2 3 4 5 6 就是这样一个问题,有人同事,写了一个这样的封装函数,这样就 ...
- Oracle字符串分割函数
今天在创建视图的时候,碰到一个问题,问题如下: 将字符格式为“XXX,YYY”分割出来,并且分割后作为两个字段放入视图中. 考虑使用字符分割函数,但是查找资料Oracle没有字符分割的函数(我对Ora ...
- SQL点滴3—一个简单的字符串分割函数
原文:SQL点滴3-一个简单的字符串分割函数 偶然在电脑里看到以前保存的这个函数,是将一个单独字符串切分成一组字符串,这里分隔符是英文逗号“,” 遇到其他情况只要稍加修改就好了 CREATE FUN ...
随机推荐
- Java-API:javax.servlet.http.HttpServletResponse
ylbtech-Java-API:javax.servlet.http.HttpServletResponse 1.返回顶部 1. javax.servlet.http Interface HttpS ...
- 使用cython把python编译so
1.需求 为了保证线上代码安全和效率,使用python编写代码,pyc可直接反编译,于是把重要代码编译so文件 2.工作 2.1 安装相关库: pip install cython yum insta ...
- delphi 面向对象实用技能教学二(封装)
面向对象编程手法,是一项综合技能,单独把谁拿出来说都不合适.本次重写 TSimpleThread ,使其能在 D7 下运行. 基于 TSimpleThread ,重磅推出 TSimpleUI.ExeP ...
- gridcontrol 添加行号
private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndic ...
- Activity的显式跳转和隐式挑战
安卓中Activity的跳转几乎是每一个APP都会用到的技术点.而且他的使用时十分简单的. 这里我们先说一下主要的技术要点: 1.在清单文件中注册新的Activity 2.通过意图跳转 这里我们看一下 ...
- IE双边距bug
标准参考 根据 W3C CSS2.1 规范中的描述,对于非替换的浮动元素,若 'margin-left' 或 'margin-right' 特性的计算值为 'auto',则它们的实际使用值为 '0'. ...
- fragment界面交互实操(步骤)
首先,新建一个继承了fragment类的类,在oncreateview方法中,使用方法的参数inflater,用其inflater.inflate(R.layout.fragment1,contain ...
- 文科妹学 GitHub 简易教程(转)
文科妹学 GitHub 简易教程 #什么是 Github ?必须要放这张图了!!! Git 是由 Linux 之父 Linus Tovalds 为了更好地管理linux内核开发而创立的分布式版 ...
- ubuntu16配置Mask-RCNN
一.安装Anaconda3 1.下载 下载地址:https://www.continuum.io/downloads 2.安装 在文件目录下执行:bash Anaconda3-4.2.0-Linux- ...
- Blender 工具使用——模式切换
Blender 工具使用--模式切换 制作骨架时 在物件模式(Object Mode)下使用鼠标右键选中一个骨架,按Tab键,可以切换为编辑模式(Edit Mode),按Ctrl + Tab可以进入骨 ...