Brush (III) LightOJ - 1017
题意:有一些点,每刷一次可以将纵坐标在区间(y1,y1+w)范围内的所有点刷光,y1为任何实数。最多能刷k次,求最多共能刷掉几个点。
先将点按照纵坐标从小到大排序。
显然,横坐标没有任何作用。记p[i]为排序后第i个点的纵坐标。
显然,每一次以某个点的纵坐标为y1来刷,一定不会比以其他的数为y1来刷更差。
记x[i]为以第i个的纵坐标为y1来刷能刷掉的点的数量。容易预处理出来。
ans[i][j]表示以第i个的纵坐标为y1,刷j次能刷掉的点数量的最大值。那么ans[i][1]首先就可以有一个值为x[i]。其次,ans[i][j]也可以由之前的状态(ans[j1][j-1])转移过来。由于如果p[j1]+w>=p[i],那么会导致清除的点有重复,因此只有p[j1]+w<p[i]时才能转移。转移时的操作就是$ans[i][j]=max(ans[i][j],ans[j1][j-1]+x[i])$。
最后答案就是所有ans[i][j]中最大值。
修改记录:
1.原先做了离散化,后来发现没用,就去掉了
2.原先在36和37行之间多了几行
for(j=;j<=k;j++)
for(j1=;j1<i;j1++)
ans[i][j]=max(ans[i][j],ans[j1][j]);
发现没用,就去掉了。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int p[],x[],ans[][];
int T,TT,n,w,k,maxans;
int main()
{
int i,j,j1,t;
scanf("%d",&T);
for(TT=;TT<=T;TT++)
{
scanf("%d%d%d",&n,&w,&k);
for(i=;i<=n;i++)
scanf("%d%d",&t,&p[i]);
sort(p+,p+n+);
maxans=;
memset(ans,,sizeof(ans));
memset(x,,sizeof(x));
for(i=;i<=n;i++)
for(j=i;j<=n;j++)
{
if(p[j]-p[i]>w) break;
x[i]++;
}
for(i=;i<=n;i++)
{
ans[i][]=x[i];
maxans=max(maxans,ans[i][]);
for(j=;j<=k;j++)
for(j1=;j1<i;j1++)
{
if(p[i]-p[j1]<=w) break;
ans[i][j]=max(ans[i][j],ans[j1][j-]+x[i]);
maxans=max(maxans,ans[i][j]);
}
}
printf("Case %d: %d\n",TT,maxans);
}
return ;
}
Brush (III) LightOJ - 1017的更多相关文章
- Lightoj 1017 - Brush (III)
1017 - Brush (III) PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Sam ...
- LightOJ 1017 - Brush (III) 记忆化搜索+细节
http://www.lightoj.com/volume_showproblem.php?problem=1017 题意:给出刷子的宽和最多横扫次数,问被扫除最多的点是多少个. 思路:状态设计DP[ ...
- 1017 - Brush (III)
1017 - Brush (III) PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Sami ...
- lightOJ 1017 Brush (III) DP
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1017 搞了一个下午才弄出来,,,,, 还是线性DP做的不够啊 看过数据量就知道 ...
- Light OJ 1017 - Brush (III)
题目大意: 在一个二维平面上有N个点,散落在这个平面上.现在要清理这些点.有一个刷子刷子的宽度是w. 刷子上连着一根绳子,刷子可以水平的移动(在X轴方向上).他可以把刷子放在任何一个地方然后开 ...
- Trailing Zeroes (III)(lightoj 二分好题)
1138 - Trailing Zeroes (III) PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: ...
- LightOJ1017 Brush (III)(DP)
题目大概说一个平面上分布n个灰尘,现在要用一个宽w的刷子清理灰尘:选择一个起点,往水平线上扫过去这个水平线上的灰尘就消失了.问最多进行k次这样的操作能清理最多多少灰尘. 没什么的DP. 先按垂直坐标给 ...
- lightoj 1017
思路:动态规划,设dp[i][j]表示在前j个dusts中用了i刷子刷掉dusts的个数:状态转移方程就是: dp[i][j] = max(dp[i][j-1], dp[i-1][j-len[j]] ...
- Trailing Zeroes (III) LightOJ - 1138(二分)
You task is to find minimal natural number N, so that N! contains exactly Q zeroes on the trail in d ...
随机推荐
- npm WARN uninstall not installed in /Users/hrt0kmt/node_modules: "xxx"
You may meet this error on home directory. % npm uninstall appium npm WARN uninstall not installed i ...
- TC SRM 583 DIV 2
做了俩,rating涨了80.第二个题是关于身份证的模拟题,写的时间比较长,但是我认真检查了... 第三个题是最短路,今天写了写,写的很繁琐,写的很多错. #include <cstring&g ...
- python 目录下的__init__.py
1 一个目录要成为一个package必须有__init__.py文件 The __init__.py files are required to make Python treat the direc ...
- Golang 现有的哲学中,要求你尽量手工处理所有的错误返回
更优雅的 Golang 错误处理 - Go语言中文网 - Golang中文社区 https://studygolang.com/articles/9407
- SimpleHTTPServer
SimpleHTTPServer python -m SimpleHTTPServer 8989
- HDU 6113 度度熊的01世界 【DFS】(2017"百度之星"程序设计大赛 - 初赛(A))
度度熊的01世界 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- Vue中 key keep-alive
keep-alive key <!DOCTYPE html> <html> <head> <title></title> <scrip ...
- monitor.sh java脚本学习
#! /bin/bash# unset any variable which system may be using# clear the screen while getopts ivh named ...
- JavaScript实现Map、Reduce和Filter
1. [代码][JavaScript]代码 <script type="text/javascript">// 函数式编程:// 描述我们要做什么,而不是我们如 ...
- VMware Ubuntu 共享文件夹
/**************************************************************************** * VMware Ubuntu 共享文件夹 ...