- 浏览: 203638 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (137)
- c++ (74)
- c++,算法,回溯 (2)
- DP问题。 (9)
- DP问题,0/1背包问题 (3)
- 数学问题 (6)
- 贪心算法 (10)
- 排序 (16)
- 数据结构 (7)
- 容器 (2)
- 模拟问题 (2)
- 水题 (8)
- 并查集 (3)
- 非技术 (2)
- 素数问题 (1)
- DFS (3)
- 二叉树 (1)
- 递归 (1)
- 图论 (5)
- 最小生成树 (5)
- 最短路径 (6)
- bell_flaod算法 (2)
- hash (3)
- 二分查找 (1)
- 搜索 (5)
- BFS (5)
- STL (3)
- 字符串hash (1)
- 拓扑排序 (1)
- 字典树 (4)
- 哈弗曼树 (1)
- KMP (7)
- 线段树 (9)
- 树状数组 (6)
- 全排列 (2)
- DP问题 (2)
- LCS (1)
- 最长不下降子序列 (2)
- 面试经验 (3)
题意:给你n个整数,和一个k值(2<=k<=100),问在这n个数之间的n-1的位置任意放加减号,问有没有一种情况使结果整除k。
思路: dp[i][j]=dp[i-1][j-a[i]]||dp[i-1][j+a[i]];这里用到了数论里的一点知识,sum(a[i])%k = sum(a[i]%k)%k,假设dp[i][j]为取前i个数求和时余数为j的情况。只要dp[4][0]=1就表示能够整除。
代码如下:
#include <iostream>
using namespace std;
int a[10001];
int dp[10001][101];
int main()
{
int n,m,s,t,i,j;
cin>>n>>m;
for(i=1;i<=n;i++)
cin>>a[i];
s=a[1];
while(s<0)
s+=m;
dp[1][s%m]=1;
for (i=2;i<=n;i++)
{
for (j=0;j<m;j++)
{
s=j-a[i];
while(s<0)
s+=m;
t=j+a[i];
while(t<0)
t+=m;
dp[i][j]=dp[i-1][s%m]||dp[i-1][t%m];//状态转移方程
}
}
if (dp[n][0])
cout<<"Divisible"<<endl;
else
cout<<"Not Divisible"<<endl;
return 0;
}
发表评论
-
虚函数、纯虚函数、虚基类、抽象类、虚函数继承、虚继承
2013-08-29 14:34 851虚函数:虚函数是C++中用于实现多态(polymorphis ... -
排序算法总结
2013-05-17 11:00 852选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, ... -
poj 3122
2012-12-11 19:51 880题意:作者要开一个生日party,他现在拥有n块高度都为1 ... -
poj 3273
2012-12-11 16:49 997题意:给你天数n,和每天需要花的钱,让你把这些天分成m份(每份 ... -
字典树学习材料
2012-05-30 14:29 978字典树,又称单词查找树,Trie树,是一种树形结构,典型应 ... -
poj 1159
2012-05-28 19:08 1456题目大意:给你一段字符串,让你求出在中间最少加入几个字符 ... -
poj 3176
2012-05-28 14:47 1033大致题意: 输入一个n层的三角形,第i层有i个数,求从第 ... -
poj 1260
2012-05-28 09:54 1623题意解释: 有n个等级的珠宝,等级依次升高,等级越高价钱越高 ... -
poj 1836
2012-05-28 09:22 2727是POJ2533的扩展题。题意不难,令到原队列 ... -
poj 2533
2012-05-26 15:36 1286在做这道题目之前,首先让我们了解一下什么是LIS算法,LIS俗 ... -
poj 3267
2012-05-26 09:43 817从程序可以看出,第i个位置到L所删除的字符数,总是先取最坏情况 ... -
poj 1276
2012-05-25 16:20 2415题意: 这道题的意思是给你一堆钱,各种面值的都有,比 ... -
poj 1094
2012-05-25 13:54 1120题意:给出字母个数,和有限个有序对(a<b)求出能确定字 ... -
poj 3393
2012-05-23 17:00 1268大致题意: 科普文一篇,文章80%都是无用信息,因为 ... -
poj 3007
2012-05-14 10:21 1000大致题意: 给定一个字符串,从任意位置把它切为两半, ... -
poj 3096
2012-05-10 21:09 1026题意: 定义D-pairs表示取字符串s中相距为D的两个字母 ... -
poj 1426
2012-04-26 20:11 2179大致题意: 给出一个整数n,(1 <= n <= ... -
poj 1797
2012-04-24 15:05 1634题目大意是就是何处一个图,n个顶点和m条边,每个边都有最大承载 ... -
poj 1338
2012-04-23 10:20 1268题意:题目意思是求由2,3,5的乘积组成的数从大到小排列,从1 ... -
poj 2021
2012-04-19 15:00 961题意:Ted今年100岁,给出n对他家族的关系:“父 ...
相关推荐
"POJ1321棋盘问题" POJ1321棋盘问题是一种经典的回溯法问题,目的是在一个给定的棋盘形状上摆放k个棋子,使得任意两个棋子不能放在同一行或者同一列。该问题可以通过回溯法来解决。 问题描述: 在一个给定的棋盘...
【标题】"POJ.rar_poj java_poj1048" 涉及的知识点主要围绕编程竞赛中的“约瑟夫环”问题,这里是一个加强版,使用Java语言进行解决。 【描述】"POJ1048,加强版的约瑟夫问题 难度中等" 提示我们,这个问题是编程...
* 模拟法:模拟法是指通过模拟问题的过程来解决问题的方法,如 poj1068、poj2632、poj1573、poj2993、poj2996。 二、图算法 图算法是指解决图相关问题的算法,包括图的深度优先遍历和广度优先遍历、最短路径算法...
【描述】"解题报告+AC代码"意味着这个压缩包包含了对POJ1837问题的解决方案的详细分析以及通过了所有测试用例的正确代码。解题报告通常会涵盖问题理解、算法思路、时间复杂度分析以及可能的优化策略。AC代码代表...
在"POJ2002-Squares"这个问题中,参赛者可能需要编写一个程序来处理与正方形相关的数学问题。这可能涉及到计算和处理大量正方形,例如找出一个范围内的所有完全平方数,或者计算不同大小正方形覆盖区域的重叠部分。...
标题中的"jihe.rar_2289_POJ 3714_poj3714_poj3714 Ra_visual c" 提到了一个压缩文件,可能包含有关编程竞赛或算法解决的资源,特别是与POJ(Problem On Judge)平台上的问题3714相关的。"Ra_visual c"可能指的是...
【描述】"北大POJ1159-Palindrome 解题报告+AC代码" 暗示了解决这道问题的方法和通过验证的源代码。解题报告通常会包含问题分析、算法设计、代码实现以及可能的优化策略。AC(Accepted)代码意味着提交的代码已经...
标题“POJ 1045.rar”表明这是一个与编程竞赛相关的压缩文件,可能是为了解决POJ(Programming Online Judge)平台上的问题1045。POJ是一个在线的编程练习平台,它提供了各种算法问题供用户解决并提交代码进行评测。...
标签“POJ3253 POJ3253-Fence Repair STL 优先队列”进一步强调了这个编程问题与POJ3253编号相关,问题核心在于修复栅栏,而解决方法采用了C++的STL库中的优先队列。 压缩包子文件的文件名列表包含以下几个文件: 1...
在解决此类问题时,通常会使用C++等编程语言,因此`POJ1004-Financial Management.cpp`文件很可能包含了用C++编写的源代码。代码可能包含了读取输入、处理数据、计算结果和输出答案等核心功能。同时,`POJ1004-...
- **例题**:poj1860, poj3259, poj1062, poj2253, poj1125, poj2240 - **解释**:最短路径算法包括Dijkstra算法、Bellman-Ford算法、Floyd算法以及堆优化的Dijkstra算法等。 ##### (3) 最小生成树算法 - **例题**...
4. **动态规划**:通过分解问题为更小的子问题来解决复杂问题,如斐波那契数列(poj1068, poj2632, poj1573, poj2993, poj2996)。 ### 二、图论算法 1. **最短路径**:Dijkstra算法、Bellman-Ford算法、Floyd算法...
【标签】"POJ 1010 STAMPS"是问题的标识符,POJ系统中的每个题目都有一个唯一的编号,1010是这个问题在系统中的ID,"STAMPS"可能是题目涉及的主题或关键词,可能与邮票、收集或组合优化有关。 【压缩包子文件的文件...
【描述】"解题报告+AC代码"意味着这个压缩包包含了对POJ3041问题的解决方案的详细解题报告,以及已经通过所有测试用例(Accepted,简称AC)的源代码。解题报告通常会包括问题分析、算法设计、时间复杂度计算等内容,...
* 模拟法:通过模拟问题的过程来解决问题,例如 poj1068、poj2632、poj1573、poj2993、poj2996。 2. 图算法: * 图的深度优先遍历和广度优先遍历:例如 poj1860、poj3259、poj1062、poj2253、poj1125、poj2240。 ...
- 分治法:将一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,如`poj3295`。 - 递推:利用已知的基础条件和递推关系式来求解问题,通常用于解决序列问题。 - 模拟法:按照...
例如,poj1328和poj2109就是典型的贪心问题。贪心算法的关键在于正确性证明,确保每一步的局部最优能够导向全局最优。 #### 分治法与递归 分治法是将大问题分解成若干个子问题,递归地求解这些子问题,然后将子问题...
16. POJ——2703 骑车与走路:可能是一个动态规划或图论问题,解决最短路径或最优决策问题。 17. POJ——2707 求一元二次方程的根:涉及到基础的代数知识,如使用求根公式解决一元二次方程。 18. POJ——2714 求...
【描述】"北大POJ1201-Intervals 解题报告+AC代码" 暗示了解决此问题的策略已经记录在解题报告中,并且通过了POJ的自动测试系统(AC即Accepted),意味着提供的代码是正确且高效的。通常,这样的解题报告会包含对...