[多状态动态规划] 表达式整除
2017-07-31 10:53
246 查看
NOIP模拟 表达式整除
2017年7月31日
DP
描述 Description
24点这个游戏好多人都玩过,就是给你4个数,添加相应的运算符,是否可以得到结果是24.
小x在玩了很多遍这个游戏之后,想把这个游戏给改变一下。 给你n个整数,在n个整数间,只能添加+和- 两种运算符。
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
现在的问题是:给你n个数,能够构成一个表达式,让这个表达式的值能被某个给定的数整除。 上面的例子中:可以被7整除,但是不能被5整除。
输入格式 Input Format
第一行一个整数,表示有k组测试数据。 接下来对于每组测试数据有两行:
第一行是两个整数n和x(1<=n<=10000, 2<=x<=100), n 表示数列中整数的个数;x就是需要你判断的这个数列是否能被x整除。
输出格式 Output Format
包含k行,每行表示一组数据的结果。 如果能被x整除,输出”Divisible”,如果不能,则输出 “Not divisible”
2017年7月31日
DP
描述 Description
24点这个游戏好多人都玩过,就是给你4个数,添加相应的运算符,是否可以得到结果是24.
小x在玩了很多遍这个游戏之后,想把这个游戏给改变一下。 给你n个整数,在n个整数间,只能添加+和- 两种运算符。
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
现在的问题是:给你n个数,能够构成一个表达式,让这个表达式的值能被某个给定的数整除。 上面的例子中:可以被7整除,但是不能被5整除。
输入格式 Input Format
第一行一个整数,表示有k组测试数据。 接下来对于每组测试数据有两行:
第一行是两个整数n和x(1<=n<=10000, 2<=x<=100), n 表示数列中整数的个数;x就是需要你判断的这个数列是否能被x整除。
输出格式 Output Format
包含k行,每行表示一组数据的结果。 如果能被x整除,输出”Divisible”,如果不能,则输出 “Not divisible”
#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> using namespace std; int K; int F[11000]; bool E[11000][300];//1-100:负余数 inline int Reminder(int a, int mod) { if(abs(a) < mod) return (a + 100); return ((a - (a / mod) * mod) + 100); } void RunFunction() { int N, x; cin >> N >> x; memset(E, false, sizeof(E)); for(int i = 1; i <= N; i++) cin >> F[i]; E[1][Reminder(F[1], x)] = true; for(int i = 2; i <= N; i++) for(int k = 1; k <= 210; k++) if(E[i - 1][k] == true){ E[i][Reminder((k - 100 + F[i]), x)] = true; E[i][Reminder((k - 100 - F[i]), x)] = true; } if(E [100] == true) cout << "Divisible" << endl; else cout << "Not divisible" << endl; } int main() { cin >> K; for(int i = 1; i <= K; i++) RunFunction(); return 0; }
相关文章推荐
- 状态压缩动态规划入门篇
- 动态规划的状态表示(二)
- 基于连通性状态压缩的动态规划问题
- BZOJ 2064 浅谈状态压缩动态规划基础及lowbit枚举子集和
- 动态规划的状态表示分析
- UVa 11795 Mega Man's Mission(动态规划-状态压缩DP)
- 复杂状态的动态规划
- HDU 3091(动态规划-状态压缩)
- [ACM_动态规划] 轮廓线动态规划——铺放骨牌(状态压缩1)
- 【jzoj4787】【数格子】【 状态压缩动态规划】【矩阵快速幂】
- 动态规划的状态表示(三)
- 动态规划之状态压缩dp入门
- 100道动态规划——5 UVA 10118 Free Candies 记忆化搜索 以及 证明状态
- uva10003 Cutting Sticks 经典dP,表达式上的动态规划
- 100道动态规划——19 UVA 12105 Bigger is Better 状态的定义以及转移方程
- 动态规划的状态表示(一)
- hdu1074(集合上的动态规划 状态压缩)
- 动态规划____装配线 两行并行,区分状态转移方向
- 动态规划 表达式最大值
- 动态规划状态压缩题解