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 ...
随机推荐
- JUC 一 ReentrantLock 可重入锁
java.util.concurrent.locks ReentrantLock即可重入锁,实现了Lock和Serializable接口 ReentrantLock和synchronized都是可重入 ...
- IDEA 注解开发流程
IDEA 注解开发流程 分为以下四步 分别是 1 导入依赖 2 配置文件 applicationContext.xml 3 在需要创建对象的类上添加注解 4 测试 详细步骤和代码如下 1 导入依 ...
- thinkphp 性能调试
开发过程中,有些时候为了测试性能,经常需要调试某段代码的运行时间或者内存占用开销,系统提供了G方法可以很方便的获取某个区间的运行时间和内存占用情况. 例如: 富瑞联华大理石平台大理石平台检定规程 G( ...
- 开发中运行mysql脚本,发现提示mysql提示Column count doesn't match value count at row 1错误
开发中运行mysql脚本,发现提示mysql提示Column count doesn't match value count at row 1错误, 调试后发现是由于写的SQL语句里列的数目和后面的值 ...
- Win7+Ubuntu11.10(EasyBCD硬盘安装)----转载
Win7+Ubuntu11.10(EasyBCD硬盘安装) ubuntu 下载地址:http://mirrors.163.com/ubuntu-releases/12.04/ 1)首先还是分区,在计算 ...
- 为什么 TCP 建立连接是三次握手,关闭连接确是四次挥手呢?
Java技术栈 www.javastack.cn 优秀的Java技术公众号 作者:小书go https://blog.csdn.net/qzcsu/article/details/72861891 背 ...
- 使用SDK方式进行微信授权
1.在pom.xml中添加依赖 <dependency> <groupId>com.github.binarywang</groupId> <artifact ...
- centos yum install 找不到软件包
yum install epel-release 然后再试试yum install 其他安装包
- 科普帖:深度学习中GPU和显存分析
知乎的一篇文章: https://zhuanlan.zhihu.com/p/31558973 关于如何使用nvidia-smi查看显存与GPU使用情况,参考如下链接: https://blog.csd ...
- 21-1字符串相关api
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...