Hdu5693 D Game
D Game
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 905 Accepted Submission(s): 324
今天,它发明了一个游戏:D游戏。
度度熊的英文并不是很高明,所以这里的D,没什么高深的含义,只是代指等差数列[(等差数列百科)](http://baike.baidu.com/view/62268.htm)中的公差D。
这个游戏是这样的,首先度度熊拥有一个公差集合{D},然后它依次写下N个数字排成一行。游戏规则很简单:
1. 在当前剩下的有序数组中选择X(X≥2) 个连续数字;
2. 检查1选择的X个数字是否构成等差数列,且公差 d∈{D};
3. 如果2满足,可以在数组中删除这X个数字;
4. 重复 1−3 步,直到无法删除更多数字。
度度熊最多能删掉多少个数字,如果它足够聪明的话?
每组数据以两个整数 N,M 开始 。接着的一行包括 N 个整数,表示排成一行的有序数组 Ai。接下来的一行是 M 个整数,即给定的公差集合 Di。
1≤N,M≤300
−1 000 000 000≤Ai,Di≤1 000 000 000
3 1
1 2 3
1
3 2
1 2 4
1 2
4 2
1 3 4 3
1 2
2
4
#include <map>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; typedef long long ll;
map<ll,int> s;
ll T,n,m,can[][],f[],a[]; int main()
{
scanf("%lld",&T);
while (T--)
{
s.clear();
memset(can,,sizeof(can));
memset(f,,sizeof(f));
scanf("%lld%lld",&n,&m);
for (int i = ; i <= n; i++)
scanf("%lld",&a[i]);
for (int i = ; i <= m; i++)
{
ll x;
scanf("%lld",&x);
s[x] = ;
}
for (int len = ; len <= n; len++)
{
for (int i = ; i + len - <= n; i++)
{
int j = i + len - ;
if (len == )
{
if (s[a[j] - a[i]])
can[i][j] = ;
continue;
}
if (len == )
{
if (a[j] - a[j - ] == a[j - ] - a[i] && s[a[j] - a[j - ]])
can[i][j] = ;
continue;
}
for (int k = i + ; k < j - ; k++)
if (can[i][k] && can[k + ][j])
can[i][j] = ;
if (can[i + ][j - ] && s[a[j] - a[i]])
can[i][j] = ;
for (int k = i + ; k < j - ; k++)
if (can[i + ][k - ] && can[k + ][j - ] && a[j] - a[k] == a[k] - a[i] && s[a[j] - a[k]])
can[i][j] = ;
}
}
for (int i = ; i <= n; i++)
for (int j = ; j < i; j++)
{
f[i] = max(f[i],f[i - ]);
if (can[j][i])
f[i] = max(f[j - ] + i - j + ,f[i]);
}
printf("%lld\n",f[n]);
} return ;
}
Hdu5693 D Game的更多相关文章
- HDU-5693 D Game 动态规划 两次动规
题目链接:https://cn.vjudge.net/problem/HDU-5693 题意 中文题 这个游戏是这样的,首先度度熊拥有一个公差集合{D},然后它依次写下N个数字排成一行.游戏规则很简单 ...
- hdu5693 D game&&hdu 5712 D++ game
题目链接:5693 题目链接:5712 对于这个D game.注意消除之后两遍的序列是可以拼合到一起的!我们可以想到有区间DP的做法.我们设\(f[i][j]\)表示区间i,j可以被消除. 显然如果这 ...
- [总结-动态规划]经典DP状态设定和转移方程
马上区域赛,发现DP太弱,赶紧复习补上. #普通DP CodeForces-546D Soldier and Number Game 筛法+动态规划 待补 UVALive-8078 Bracket S ...
随机推荐
- Oracle同义词和序列
同义词:是表.索引.视图的模式对象的一个别名,通过模式对象创建同意词,可以隐藏对象的实际名称和 所有者信息,为对象提供一定的安全性,开发应用程序时:应该尽量避免直接使用表,视图 或其他对象,改用对象的 ...
- HWI的安装
一.安装的过程 hwi的安装过程: 1.解压src源码包:tar -zvxf apache-hive-1.2.2-src.tar.gz 2.进到HWI目录下:cd /home/bigdata/apac ...
- 【第七章】MySQL数据库备份-物理备份
一.数据库备份 备份的目的: 备份: 能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方. 冗余: 数据有多份冗余,但不等备份,只能防止机械故障还来的数据丢失,例如主备 ...
- Numpy入门笔记第一天
# 导入包 import numpy as np # 创建一维数组 a = np.arange(5) print "一维numpy数组", a print "数组的类型& ...
- ObjectAnimator实现菜单的弹出(扇形)
用ObjectAnimator 实现菜单的弹出 首先是菜单的图片资源和布局 布局中使用FrameLaout 将菜单唤出对应的imageView放在布局的最后面来隐藏菜单详细内容. <?xml v ...
- eclipse提示找不到dubbo.xsb报错
需要下载一个dubbo.xsb文件到本地,并在eclipse中配置 下载路径:下载链接 下载方法: a).带开链接 b).点击[Raw]按钮 c). 右键->另存为 在eclipse中配置xsb ...
- 阿里巴巴将在美国推出电子商务网站11 Main
新浪科技讯 北京时间2月11日晚间消息,阿里巴巴集团周二向路透社证实,阿里巴巴将通过旗下子公司Vendio和Auctiva在美国推出一个电子商务网站. 该网站的名称为“11 Main”(11main. ...
- Linux下的计算器(bc、expr、dc、echo、awk)知多少?
linux 其他知识目录 原文链接:http://blog.chinaunix.net/uid-24673811-id-1760837.html linux下的三个命令可以用来作计算,下面一一讲解用法 ...
- three的初步探索之表象篇
首先three.js是啥?用来干啥的?首先在谈这个之前,先说下canvas,canvas是h5新生的一个功能,可以用来画图,表达许多更绚丽的特效,然后canvas目前有个软当,就是只能2d,不支持三维 ...
- preg_replace 以及弃用的e
preg_replace (PHP 4, PHP 5) preg_replace — 执行一个正则表达式的搜索和替换 说明¶ mixed preg_replace ( mixed $pattern , ...