题目大意:
    在一个二维平面上有N个点,散落在这个平面上。现在要清理这些点。有一个刷子刷子的宽度是w. 刷子上连着一根绳子,刷子可以水平的移动(在X轴方向上)。他可以把刷子放在任何一个地方然后开始移动(只能是水平的)。 他可以把在宽度为w的这个水平方向上的所有点都擦除掉。问最多移动k次,最多可以擦除多少个点?
题目解析:
    根据题意,其实我们只需要考虑y坐标就OK了。 然后排序,把数据处理一下。
    dp[i][k] = dp[第i个位置][移动的是第k次] = 最大数量
    我们把数据预处理一下。 把每个位置以这个为起点,最大能包住多少个点。
 
=======================================================================================
 
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
#include<map>
using namespace std;
typedef long long LL;
#define Max(a,b) (a>b?a:b)
const int INF = 1e9+;
const int maxn = ;
const int MOD = ;
int a[maxn], dp[maxn][maxn];///dp[以第i个点为起点][粉刷了k次] = 最大数量
int main()
{
int n, w, K, T, cas = ;
scanf("%d", &T); while(T --)
{
memset(dp, , sizeof(dp));
scanf("%d %d %d", &n, &w, &K); for(int i=; i<n; i++)
scanf("%*d%d", &a[i]);
sort(a, a+n);
int ans = ;
for(int i=; i<n; i++)
{
for(int j=i; j<n; j++)
{
if(a[j] - a[i] <= w)
dp[i][] ++;
else
break;
}
ans = max(ans, dp[i][]);
}
for(int i=; i<n; i++)///第i个位置
{
for(int k=; k<=i+ && k<=K; k++)///第i个位置,总共选择k次
{
for(int j=; j < i; j++)
{
if(a[i] - a[j] > w)
dp[i][k] = max(dp[i][k],dp[j][k-] + dp[i][]);
else
break;
}
ans = max(ans, dp[i][k]);
}
}
printf("Case %d: %d\n",cas++, ans); }
return ;
}

代码君

Light OJ 1017 - Brush (III)的更多相关文章

  1. Lightoj 1017 - Brush (III)

    1017 - Brush (III)    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Sam ...

  2. 1017 - Brush (III)

    1017 - Brush (III)   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Sami ...

  3. lightOJ 1017 Brush (III) DP

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1017 搞了一个下午才弄出来,,,,, 还是线性DP做的不够啊 看过数据量就知道 ...

  4. LightOJ 1017 - Brush (III) 记忆化搜索+细节

    http://www.lightoj.com/volume_showproblem.php?problem=1017 题意:给出刷子的宽和最多横扫次数,问被扫除最多的点是多少个. 思路:状态设计DP[ ...

  5. Light OJ 1019 - Brush (V)(图论-dijkstra)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1019 题目大意:Tanvir想从节点1的位置走到节点n的位置, 输出最短距离, ...

  6. Light OJ 1018 - Brush (IV)

    题目大意:     一个二维平面上有N个点,一把刷子,刷一次可以把一条线上的所有点都刷掉.问最少刷多少次,可以把全部的点都刷完 状态压缩DP, 用记忆化搜索来写, 需要有个优化不然会超时. ===== ...

  7. Light oj 1018 - Brush (IV) 状态压缩

    题目大意: 给出n个点的坐标,求至少画多少掉直线才能连接所有点. 题目思路:状态压缩 首先经行预处理,求出所有状态下,那些点不在该状态内 以任意两点为端点求出这条直线的状态 枚举所有状态,找出不在当前 ...

  8. Brush (III) LightOJ - 1017

    Brush (III) LightOJ - 1017 题意:有一些点,每刷一次可以将纵坐标在区间(y1,y1+w)范围内的所有点刷光,y1为任何实数.最多能刷k次,求最多共能刷掉几个点. 先将点按照纵 ...

  9. Light OJ 1114 Easily Readable 字典树

    题目来源:Light OJ 1114 Easily Readable 题意:求一个句子有多少种组成方案 仅仅要满足每一个单词的首尾字符一样 中间顺序能够变化 思路:每一个单词除了首尾 中间的字符排序 ...

随机推荐

  1. iBatis 的条件查询

    之类以传入ID进行举例 Student.xml 在里面设置一个ID的标志位,设置类型 <select id="selectAllStudentByid" parameterC ...

  2. 关于XML(一)。

    关于XML 什么是XML? XML是可扩展标记语言.类似于HTML,XML的宗旨是旨在传输数据,而非显示数据.其标签没有预定义,您需要自行定义标签.XML具有自我描述性,是W3C的推荐标准. XML与 ...

  3. SQL server 使用触发器跨数据库备份数据

    create database TriggerTest create table transInfo2 --交易信息表 ( cardID ) not null, --卡号 transType ) no ...

  4. Content Providers

    Content providers manage access to a structured set of data. They encapsulate the data, and provide ...

  5. mysql数据库优化日志(更)-howyue

    1)记一次首页查询优化 优化前: 优化后: 主要优化: 1.select查询只查询需要字段: 2.where条件字段添加索引:

  6. Datatables+Bootstrap

    http://sandbox.runjs.cn/show/thwac3ec 运行效果 <!DOCTYPE html> <html lang="en"> &l ...

  7. OC - 23.核心动画基础

    概述 简介 核心动画提供了一组非常强大的动画API,通过该组API可以高效的实现绝大部分绚丽的动画效果 注意事项 核心动画的操作在子线程中执行,不会阻塞主线程 核心动画直接作用与CALayer对象上, ...

  8. 添加Appicon的方法

    1.将设计好的图片,拖拽到Groups&Files的Resources目录下: 2.修改Resources目录下的“工程名-info.plist”文件 3.修改该文件的Iconfile属性,填 ...

  9. Moving a Subversion Repository to Another Server

    Moving a subversion repository from one server to another, while still preserving all your version h ...

  10. SetTimer 和 OnTimer 的使用

    最近在公司做一个MFC项目,因为是MFC新手,所以在这里记录一些最近用到和学到的东西留着以后查阅. 今天遇到的一个问题是要在窗口刚刚初始化完成时自动检测一个配置文件是否存在(实际上就是检测是不是首次登 ...