hdu 5464(dp)
2015-09-28 18:29
155 查看
题意:
给你n个数,要求选一些数(可以不选),把它们加起来,使得和恰好是p的倍数(0也是p的倍数),求方案数。
- - 心好痛,又没想到动规
给你n个数,要求选一些数(可以不选),把它们加起来,使得和恰好是p的倍数(0也是p的倍数),求方案数。
- - 心好痛,又没想到动规
#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <math.h> #include <stdlib.h> #include <time.h> using namespace std; typedef long long ll; #define mod 1000000007 int p[1005]; int dp[1005][1005]; const int inf = 0x3f3f3f3f; int main() { int T,n,t; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&t); memset(p,0,sizeof(p)); for(int i = 1; i <= n; i++) { scanf("%d",&p[i]); p[i]=p[i]%t; if(p[i] < 0) p[i]=(p[i]+t)%t; } memset(dp,0,sizeof(dp)); dp[1][0] = 1; dp[1][p[1]] += 1; for(int i = 2; i <= n; i++) { for(int j = 0; j < t; j++) { dp[i][j] += dp[i-1][j]; dp[i][j] %= mod; dp[i][(j+p[i]) % t] += dp[i-1][j]; dp[i][(j+p[i]) % t] %= mod; } } printf("%d\n",dp [0] % mod); } return 0; }
相关文章推荐
- Android 三种方式播放视频
- hdu 5464(dp)
- Cocos2d-x之MenuItem
- 主从DNS服务器的搭建
- JBOD (just a bunch of disks or just a bunch of drives)
- 实现将HashMap转换成为ArrayList,并将map的Key 、Value分别存放到两个ArrayList当中
- emberjs学习二(ember-data和localstorage_adapter)
- 【OpenCV人脸识别入门教程之二】人脸检测
- CentOS安装Redis记录
- SVN服务器搭建和使用(五)
- EventBus使用详解
- AngularJS 用 $http.jsonp 方法跨域请求数据错误的问题
- Java集合的小抄 Java初学者必备
- 基于注解的字段脱敏处理
- poj1942 Paths on a Grid(组合数)
- [bug修复方案分享]Android4.0以上弹出Notification时图标显示不正常
- WPF中文字体问题
- hdu 5465 (树状数组 + 博弈)
- ANR log 日志的抓取
- 10个顶级的CSS UI开源框架