NEERC 1999 Divisibility /// 同余DP oj22640
题目大意:
输入n,m; ( 1 ≤ N ≤ 10000, 2 ≤ M ≤ 100 )
接下来n个数;Each integer is not greater than 10000 by it's absolute value.
判断他们按顺序做加减法后能否整除m
若能输出“Divisible”,否则输出“Not divisible”;
Sample #1
4 7
17 5 -21 15
Sample #2
4 5
17 5 -21 15
Sample #1
Divisible
Sample #2
Not divisible
对于第一个样例解释:
17 + 5 + -21 + 15 = 16
17 + 5 + -21 - 15 = -14
17 + 5 - -21 + 15 = 58
17 + 5 - -21 - 15 = 28
17 - 5 + -21 + 15 = 6
17 - 5 + -21 - 15 = -24
17 - 5 - -21 + 15 = 48
17 - 5 - -21 - 15 = 18
-14可整除7
#include <bits/stdc++.h>
using namespace std;
bool dp[][];
/// dp[i][j]表示第i个数时余数为j的状态存不存在 1为存在 0则不存在
int main()
{
int n,m,a;
while(~scanf("%d%d%d",&n,&m,&a))
{
memset(dp,,sizeof(dp));
dp[][(a%m+m)%m]=; // 到第1个数时 a%m 存在
for(int i=;i<=n;i++)
{
scanf("%d",&a);
a=fabs(a); a%=m; /// 防止出现负数 先取绝对值 对求余没影响
for(int j=;j<m;j++)
if(dp[i-][j]) // 若上一个数时 余j 的状态存在
dp[i][(j+a)%m]=dp[i][(j-a+m)%m]=;
/// 则可由 上个数余j的状态 推出
/// 到当前数时(+a或-a) 余(j+a)%m 和 余(j-a+m)%m
/// 两个状态可存在
}
if(dp[n][]) printf("Divisible\n");
else printf("Not divisible\n");
} return ;
}
NEERC 1999 Divisibility /// 同余DP oj22640的更多相关文章
- 同余dp
		
先验知识: 余数的计算公式:c = a -⌊ a/b⌋ * b 其中,⌊ ⌋为向下取整运算符,向下取整运算称为Floor,用数学符号⌊ ⌋表示 题目: Consider an arbitrary se ...
 - 2016 ACM-ICPC NEERC F. Foreign Postcards (概率DP)
		
2016 ACM-ICPC NEERC F. Foreign Postcards 题意:有一串由C.W组成的字符串,每次截取长度为k(1<=k<=n且k随机)的前缀,如果该前缀首位为W,则 ...
 - NEERC 1999 Advertisement /// oj22646
		
题目大意: 输入k,n :k为每位慢跑者最少应看到的广告牌数 接下来n行 描述第 i 位慢跑者的途径路段 输出需要设立的广告牌数 接下来每行为设立地点 Sample Input 5 101 1020 ...
 - 1745 Divisibility
		
Divisibility Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14084 Accepted: 4989 Descrip ...
 - Poj/OpenJudge 1042 Gone Fishing
		
1.链接地址: http://bailian.openjudge.cn/practice/1042/ http://poj.org/problem?id=1042 2.题目: Gone Fishing ...
 - 《Python核心编程》第五章:数字
		
PS:[笔记+代码+图片]在GitHub上持续更新,欢迎star:https://github.com/gdouchufu/Core-Python-Programming 本章大纲 介绍Python支 ...
 - POJ 1745 Divisibility (线性dp)
		
Divisibility Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10598 Accepted: 3787 Des ...
 - ZOJ 2042 Divisibility (DP)
		
Divisibility Time Limit: 2 Seconds Memory Limit:65536 KB Consider an arbitrary sequence of inte ...
 - 算法训练 K好数  数位DP+同余定理
		
思路:d(i,j)表示以i开头,长度为j的K好数的个数,转移方程就是 for(int u = 0; u < k; ++u) { int x = abs(i - u); if(x == 1) co ...
 
随机推荐
- PHP ftp_raw() 函数
			
定义和用法 ftp_raw() 函数向 FTP 服务器发送一个 raw 命令. 语法 ftp_raw(ftp_connection,command) 参数 描述 ftp_connection 必需.规 ...
 - java之短路与&&和短路或||
			
短路的意思就是惰性计算,符号右边的就不进行计算了. ||和&&就是这样,
 - 牛客网 NOIP赛前集训营-普及组(第四场)C--部分和 (高维前缀和)
			
传送门 解题思路 高维前缀和模板题.首先,求前缀和有两种方式,比如说对于求二维前缀和来说. 第一种 : for(int i=1;i<=n;i++) for(int j=1;j<=n;j++ ...
 - NX二次开发-UFUN输入表达式TAG,得到表达式字符串UF_MODL_ask_exp_tag_string
			
NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //创建表达式 tag_t NewExpTag ...
 - NX二次开发-UFUN设置除工作层之外的所有图层的状态UF_LAYER_set_all_but_work
			
NX11+VS2013 #include <uf.h> #include <uf_ui.h> #include <uf_layer.h> UF_initialize ...
 - 使用Docker创建数据容器
			
使用Docker创建数据容器 翻译自: Data-only container madness 1.什么是数据容器? 数据容器就是本身只创建一个volume供其他容器共享,创建完后即退出,不执行任何任 ...
 - 基于Netty的RPC架构学习笔记(二):netty服务器
			
文章目录 简介 Netty服务端Hello World案例 举个
 - 好文 | MySQL 索引B+树原理,以及建索引的几大原则
			
Java技术栈 www.javastack.cn 优秀的Java技术公众号 来源:小宝鸽 blog.csdn.net/u013142781/article/details/51706790 MySQL ...
 - Reading books /// Prim+BFS oj21633
			
题目大意: 输入 N,M 接下来1-N行输入读该书的用时time[i] 接下来1-M行输入a,b 表示a和b是similar的 若a读过则读b用时为 time[b]/2 ,若b读过则读a用时为 ti ...
 - java笔试之从单向链表中删除指定值的节点
			
输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针. 链表的值不能重复 构造过程,例如 1 -> 2 3 -> 2 5 -> 1 4 ...