POJ:http://poj.org/problem?id=1745

A完这题去买福鼎肉片,和舍友去买滴~舍友感慨“这一天可以卖好几百份,每份就算赚一块钱。。那么一个月。。一年。。。”

我说“那我们以后去卖这个吧,饿了还能自己煮着吃”

哈哈,一群天真的少年呀~~~~

说正事~

------------------------------------------------华丽的分割线-------------------------------------------------

题目大意:

给一串数列,在其中间插入+或者-可以得到不同的结果,你需要判断的是对于n个这样的数经过一系列运算后最终是否能得到k。(每个数都要用,按题目给的顺序)

思路:

DP,本题的精华在于用位向量来表示是否出现过mod k的余数,最后判断0那个位置是否出现即可。

还可以直接用两个一维数组来优化空间复杂度,不过时间略长一些。(世界是公平的,有舍才有得)

1.未优化空间复杂度 141ms

#include<cstdio>
#include<cstring>
const int MAXN=10000+10;
bool dp[MAXN][110];
int main()
{
int n,k;
while(~scanf("%d%d",&n,&k))
{
int temp;
scanf("%d",&temp);
memset(dp,0,sizeof(dp));
dp[0][( temp +k*10000) %k]=1; for(int i=1;i<n;i++)
{
scanf("%d",&temp);
for(int j=0;j<k;j++)
{
if(!dp[i-1][j])
continue; dp[ i ][ (j + temp +k*10000) %k ]=1;
dp[ i ][ (j - temp +k*10000) %k ]=1;
}
} if(dp[n-1][0])
printf("Divisible\n");
else
printf("Not divisible\n");
}
}

2.优化了的版本 157MS

#include<cstdio>
#include<cstring>
bool dp[101];
int main()
{
int n,k;
while(~scanf("%d%d",&n,&k))
{
int value;
scanf("%d",&value);
memset(dp,0,sizeof(dp));
dp[( value +k*10000) %k]=1; for(int i=1;i<n;i++)
{
bool temp[101]={0};
scanf("%d",&value);
for(int j=0;j<k;j++)
{
if(!dp[j])
continue; temp[ (j + value +k*10000) %k ]=1;
temp[ (j - value +k*10000) %k ]=1;
}
memcpy(dp,temp,sizeof(temp));
} if(dp[0])
printf("Divisible\n");
else
printf("Not divisible\n");
}
}

最新文章

  1. Android中AsyncTask分析--你所不注意的坑
  2. SQL的OPENROWSET开启和使用方法
  3. HDU 5792---2016暑假多校联合---World is Exploding
  4. 【python】RGB图片到灰度图的转换
  5. gulp.spritesmith修改px为rem单位
  6. Leetcode#61 Rotate List
  7. 下载的时候如果文件名是中文就变成zip.zip
  8. CF160D
  9. windows phone 之笔势
  10. vue 简单实现父组件向子组件传值,简单来说就是子组件肆意妄为的调用父组件里后台返回的值
  11. Android 开发 蓝牙开发
  12. LVS DR模式搭建 keepalived lvs
  13. 3月23 格式布局及relative
  14. 洛谷P2480 古代猪文
  15. springcloud与dubbo对比:
  16. iOS增加pch预加载文件
  17. Apache Commons工具集简介
  18. NYOJ 133 子序列 (离散化)
  19. SpringBoot入门学习(二)
  20. 如何用vs查看框架函数管道模型

热门文章

  1. Java_Learn
  2. Oracle新建表字段,如何使字段自增
  3. HDU 4696 Answers 水题
  4. [C#防止反编译].NET 产品版权保护方案 (.NET源码加密保护)
  5. 思科模拟器之路由器-RIP-DNS解析server
  6. 运行 CMD 时,參数加引號常见问题
  7. BZOJ 1507 NOI2003 Editor Splay
  8. less中混合
  9. Android车载导航的一些困境
  10. AlertDialog的onCreateDialog与onPrepareDialog用法