HDU5000 (DP + 规律)
题意:举例子好说点,告诉你4个数字,8,6,4,2四个数字,组成一个四位数,如果两个数字分别是1111,2222,则2222会吧1111杀掉,就是组成的四位数不能每一位都小于或等于一个数,然后让你求出最大能够存活的数目。
分析:场上的时候自己一直在找规律,推公式,以为是四个数字递增递减交替的规律,没想到是和是一定的规律,即num/2,和一定了那就是DP了;
PS: 我其实对DP是很发怵的,但是我觉得最起码还是要DP入门!感觉找到规律后这个题目就挺简单的!本来我对DP有个固定看法,那就是贪心能做的题,DP都能做,但是DP能做的,
贪心有可能做不了,也感觉DP,贪心,推公式,三者联系很密切,有时候找不到规律或者贪不下去就找DP。
#include <cstdio>
#include <iostream>
#include <sstream>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
#define ll long long
#define _cle(m, a) memset(m, a, sizeof(m))
#define repu(i, a, b) for(int i = a; i < b; i++)
#define repd(i, a, b) for(int i = b; i >= a; i--)
#define sfi(n) scanf("%d", &n)
#define sfl(n) scanf("%lld", &n)
#define pfi(n) printf("%d\n", n)
#define pfl(n) printf("%lld\n", n)
#define N 6005
#define MOD 1000000007
int t[N],d[N][N]; int main()
{
int n,T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
memset(t,,sizeof(t));
int sum = ;
repu(i,,n)
{
scanf("%d",&t[i+]);
sum += t[i+];
}
sum /= ;
repu(i,,)///初始化
repu(j,,)
d[i][j] = ; repu(i,,t[]+)///当只有一个人的时候,和是i,只有一种方案
d[][i] = ; repu(i,,+n)///属性数目
{
repu(j,,sum+)///和
{
repu(k,,t[i]+)
{
if(j < k)
break;
d[i][j] = (d[i-][j-k] + d[i][j]) % MOD;
///只需要在前一个的基础上加k,因为和是一定的
///举例说明,t分别是8 6 4 2
///目前d[3][10],k等于4,则等于 += d[2][6],则在第四位上+4
///而且完全可以在第四位上加到满为止
}
}
}
printf("%d\n",d[n][sum]);
}
return ;
}
DP
看别人代码能明白啥意思,自己写就不知道该怎么分状态。。。
HDU5000 (DP + 规律)的更多相关文章
- 【BZOJ】1002: [FJOI2007]轮状病毒(DP+规律+高精度)
http://www.lydsy.com/JudgeOnline/problem.php?id=1002 其实我还是看题解的,而且看了题解也没明白那公式怎么来的T_T,先水过了先把....以后研究一下 ...
- 【BZOJ】1677: [Usaco2005 Jan]Sumsets 求和(dp/规律)
http://www.lydsy.com/JudgeOnline/problem.php?id=1677 完全背包很容易想到,将1,2,4...等作为物品容量即可. 然后这题还有一个递推式 f[i]= ...
- HDU2041 简单DP+规律
超级楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 拦截导弹(CDQ分治,DP)
很好的题,值得细细说,(果然又是个假期望)....... 首先我们提取信息,显然这是个三维偏序问题 用简单的DP式子表示需要满足 f[i]=max(f[1--j]+1)(v[j]<v[i],h[ ...
- 2016_ThinkinG of everyDay
2016-2-15:新年的第一篇心情,慢慢更新. 1.以后的文章当然都会是ACM竞赛的题解,但会多写写自己的思考以及总结,因为感觉自己缺少思考这个习惯,有些东西在脑子里也只是一带而过,最后也不会停留多 ...
- 2014 ACM/ICPC 鞍山赛区网络赛(清华命题)
为迎接10月17号清华命题的鞍山现场赛 杭电上的题目 Biconnected(hdu4997) 状态压缩DP Rotate(hdu4998) 相对任一点的旋转 Overt(hdu4999 ...
- ACM/ICPC 之 DP解有规律的最短路问题(POJ3377)
//POJ3377 //DP解法-解有规律的最短路问题 //Time:1157Ms Memory:12440K #include<iostream> #include<cstring ...
- 找规律/数位DP HDOJ 4722 Good Numbers
题目传送门 /* 找规律/数位DP:我做的时候差一点做出来了,只是不知道最后的 is_one () http://www.cnblogs.com/crazyapple/p/3315436.html 数 ...
- Codeforces Round #260 (Div. 2) A B C 水 找规律(大数对小数取模) dp
A. Laptops time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
随机推荐
- C# 4.0中dynamic的作用
internal sealed class Coffee { public string GetName() { return "You selected Maxwell coffee.&q ...
- 从零开始学iPhone开发(1)——工具的使用
前提:已经具备了苹果电脑或者iMac,或者安装好了x86苹果而且已经联网. 苹果系统版本要求是:Max OS X Lion,或者 Mountain Lion 我们对iPhone进行使用的工具是XCod ...
- 替换 data.frame 中的特殊的值
替换空值: foo <- data.frame("day"= c(1, 3, 5, 7), "od" = c(0.1, "#N/A", ...
- Java开发中经典的小实例-(能被3整除,并且十个数换一行)
import java.util.Scanner;public class Test15 { public static void main(String[] args) { // ...
- 12.NFS搭建配置
参考博客:http://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html 1.关闭防火墙和SELINUX $ service iptable ...
- ERROR 1018 (HY000): Can't read dir of './test/' (errno: 13)
不能查看mysql中数据库的表. 一.查看 mysql> desc test; ERROR 1046 (3D000): No database selected mysql> use te ...
- redis 数据导出
一.导出所有的keys echo "keys 201*" |./redis-cli -h localhost -p 6379 -a password >> 1.txt ...
- Pycharm使用问题# 快捷键设置
Pycharm内部设置也已经变得非常复杂,此处说明我改变字体大小的快捷键设置. 在Settings中找到Keymap一项,默认显示会展开Editor Actions一项: 在里面分别找到Decreas ...
- Samba Linux 和windows 共享
1.安装Samba (yum install Samba) 2.配置Samba (Samba的配置文件为/etc/samba/smb.conf) 1)打开smb.conf vim /etc/s ...
- c-free