Codeforces Round #319 (Div. 2)——B. Modulo Sum(01背包)
来源:互联网 发布:今日头条刷评论软件 编辑:程序博客网 时间:2024/06/10 18:05
题意:
现在你有一个长度为n的数组,然后问你能否在这个数组中找一个非空的子序列,然后使得它们的和%m==0.
思路:
一开始想了想dfs,但是明显不可行,因为数据范围太大。
但是又有什么可以找子序列呢?(非连续),于是类比到了01背包,用了dp。
但是还是挺巧妙的方法。
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;#define maxn 1000100#define inf 99999999typedef __int64 ll;int dp[1010],tmp[1010];ll a[maxn];int main(){int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%I64d",&a[i]);//这里定义tmp的作用是暂时保存当前和的真假性。//如果不临时存下来的话,会错,因为它会在这一回更改后面的值 for(int i=1;i<=n;i++){if(dp[0]) break;for(int j=0;j<m;j++){if(dp[j]){tmp[(j+a[i])%m]=1;}}tmp[a[i]%m]=1;for(int j=0;j<m;j++){dp[j]=tmp[j];}}if(dp[0]) printf("YES\n");else printf("NO\n");}/*4 51 1 1 1*/
0 0
- Codeforces Round #319 (Div. 2)——B. Modulo Sum(01背包)
- Codeforces Round #319 (Div. 2) B Modulo Sum (背包)
- Codeforces Round #319 (Div. 2) 577B Modulo Sum(dp)
- Codeforces Round #319 (Div. 2) B. Modulo Sum
- Codeforces Round #319 (Div. 2) B Modulo Sum
- Codeforces Round #319 (Div. 2) B. Modulo Sum
- Codeforces Round #319 (Div. 2)B. Modulo Sum(数学,DP)
- Codeforces #319(Div.2) B. Modulo Sum (动态规划)
- CodeForce #319 div 2 B Modulo sum
- Codeforces 577B Modulo Sum 【多重背包】
- codeforces 577B B. Modulo Sum(背包+dp)
- codeforces 577B B. Modulo Sum(背包+dp)
- cf B. Modulo Sum (01背包)
- codeforces #319 DIV2 577B Modulo Sum
- codeforces 577B Modulo Sum
- codeforces 577B Modulo Sum
- Codeforces Round #151 (Div. 2)——B
- Codeforces Round #336 (Div. 2)B. Hamming Distance Sum
- Hi~ o(* ̄▽ ̄*)ブ我们交往吧!记TCP的三次握手
- 如何挂载虚拟机的NFS
- Web——DOM 不同浏览器差异
- COMS
- 【Developer Log】web的版本管理
- Codeforces Round #319 (Div. 2)——B. Modulo Sum(01背包)
- 初识intent
- html5 audio实现歌词同步
- javascript html DOM 改变html
- 树状数组解析
- C# GroupBox与里面的控件
- c++模板类学习
- NSDate , DateTime 相互转化 ,根据本机显示时间
- phonegap 2.9.1生成cordova.jar文件