Hrbust 1837 Dream【dp】
来源:互联网 发布:java switch string 编辑:程序博客网 时间:2024/05/17 23:11
DreamTime Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 13(8 users)Total Accepted: 3(3 users)Rating: Special Judge: NoDescription
Dream是一个很好玩的学姐。虽然外表看起来有点伪学长,但是实际上还是个很爱玩很可爱的女生。有一次她的小学妹问了她一个问题:“学姐,这里有一些数,17,5,-21,16。如果往里面放入加号或减号后,结果能不能被7整除吖~?” 在可爱的小学妹面前,Dream的小宇宙瞬间爆发~Dream:“行~等一下,我帮你算一算。”
聪明的Dream很快就算出来,17 + 5 + -21 - 15 = -14。这样就可以被7整除了!
“那这些数呢,能不能被k整除吖?” 小学妹递给Dream一本写满数字的本子。
Dream瞬间头大,你能帮助喜欢小学妹的Dream解决这个问题吗~?
Input本子上有很多组数。
每组数的第一行有两个数:n和k。(1 <= n <= 10000, 2 <= k <= 100)表示有n个数,问能否被k整除。
第二行有n个数,每个数的绝对值都不大于10000.
Output如果能够被n个数的最终计算结果整除就输出”DreamV5”,否则输出”Orz..”Sample Input4 7
17 5 -21 15
Sample OutputDreamV5Source2013 Summer Holiday Summarize题目大意:
给你N个数,和一个mod值K.
让你给这N个数前边加上+或者是-.求最终的和是否能被k整除。
思路:
1、观察到K并不是很大,那么设定dp【i】【j】表示dp到第i个数,%k的值为j的方案是否存在。
2、那么有状态转移方程:
注意和可能为负数,负数取模变成正数的方法就是先对和取模,然后+mod,再%mod.
Ac代码:
#include<stdio.h>#include<iostream>#include<string.h>using namespace std;int a[10500];int dp[10500][550];int main(){ int n,mod; while(~scanf("%d%d",&n,&mod)) { for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } memset(dp,0,sizeof(dp)); dp[0][0]=1; for(int i=1;i<=n;i++) { for(int j=0;j<mod;j++) { if(dp[i-1][j]>0) { dp[i][((j+a[i])%mod+mod)%mod]=max(dp[i][((j+a[i])%mod+mod)%mod],dp[i-1][j]); dp[i][((j-a[i])%mod+mod)%mod]=max(dp[i][((j-a[i])%mod+mod)%mod],dp[i-1][j]); } } } if(dp[n][0]>0)printf("DreamV5\n"); else printf("Orz..\n"); }}
0 0
- Hrbust 1837 Dream【dp】
- hrbust 1186 简单DP
- hrbust 1705 最高分【Dp】
- Hrbust 1327 合唱【dp】
- Hrbust 1788 Chocolate【Dp】
- hrbust 1186 青蛙过河【Dp】
- Hrbust 2143 积分大小【dp】
- Hrbust 2095 奶牛家谱【Dp】
- ZOJ 3211 Dream City(DP)
- ZOJ 3211Dream City(dp)
- Mondriaan's Dream----状压DP
- ZOJ 3211 Dream City【dp】
- 状压dp Mondriaan's Dream
- Hrbust 1242 Alphacode【dp】好水啊这个dp
- dp(状态压缩、树形dp)poj3254、HRBUST 1473、HRBUST 1477、HRBUST 1475、ZOJ 3662
- 哈理工oj/hrbust 1790 武林【DP】
- hrbust 1426 集训队的晚饭【dp】
- hrbust 1843 方格取数【状压dp】
- 集合
- File类和时间类的两道综合练习
- jdbc和odbc区别
- struts中include需要注意的问题
- codves动态规划 最长上升子序列
- Hrbust 1837 Dream【dp】
- Proteus仿真AT89C52——计数器
- Docker 修改已有镜像(commit )
- if __name__ == "__main__":如何用
- yzx 英文金曲大赛
- 蓝桥杯题 五星填数(dfs)
- 双链表的插入的实现
- java标识符
- 对hashMap和hashtable的理解