hdu 2217 Visit
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2217
题目解释:起始位置在原点,给你固定的时间,让你左右跑,求在规定的时间内你最多能跑多少个点;
解决本题,一个是要统计经过的点的个数,一个是全局只有一个拐,所以枚举所有的拐点即可解决;
五个小时卡到一组数据上:
8 9
-5 -4 -3 -2 2 2 2 2
答案应该是:8
AC代码:
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int N = ;
const int M = ;
int lefT[N],righT[N];
int LL[M],RR[M];
int main()
{
int n,L,R,T,le,ri,ans,x,y;
while(scanf("%d %d",&n,&T)!=EOF)
{
L =;R=;le =;ri = ;ans = -;
memset(LL,,sizeof(LL));
memset(RR,,sizeof(RR));
for(int i =; i<=n; i++)
{
scanf("%d",&x);
if(x<)
{
x = abs(x);
lefT[L++] = x;
LL[x]++;
}
else
{
righT[R++] = x;
RR[x]++;
}
}
lefT[] = ;
righT[] = ;
sort(lefT+,lefT+L+);
sort(righT+,righT+R+);
//预处理到达当前位置时共找到的点数,仔细退一下就出来了
for(int i = ; i<=T; i++)
{
LL[i] =LL[i-]+LL[i];
RR[i] = RR[i-]+RR[i];
}
//下面是模拟首先向左跑
int xx = ;
while(*lefT[xx]<=T && xx<L)
{
ans = max(ans,LL[lefT[xx]]+RR[T - *lefT[xx]]);
xx++;
}
//下面模拟首先向右跑
xx = ;
while(*righT[xx]<=T && xx<R)
{
ans = max(ans,RR[righT[xx]]+LL[T - *righT[xx]]);
xx++;
}
printf("%d\n",ans);
}
return ;
}
hdu 2217 Visit的更多相关文章
- 【HDOJ】2217 Visit
挺好的一道DP. /* 2217 */ #include <iostream> #include <cstdio> #include <cstring> #incl ...
- HDU 2217 Data Structure?
C - Data Structure? Time Limit:5000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u ...
- hdu 4612 Warm up(缩点+树上最长链)
本来就是自己负责图论,结果水了= = 题目其实很裸,就是求桥的数量,只是要新加上一条边罢了.做法:先缩点.再在树上搜最长链(第一场多校的hdu 4607Park Visit就考了最长链,小样,套个马甲 ...
- hdu 4607 Park Visit 求树的直径
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607 题目大意:给你n个点,n-1条边,将图连成一棵生成树,问你从任意点为起点,走k(k<=n) ...
- hdu 4607 Park Visit
http://acm.hdu.edu.cn/showproblem.php?pid=4607 先求树的直径 方法:两遍bfs ,任选一点 a 求到a点最远的一点b ,然后 求到b点最远点 c 这样 ...
- hdu 4607 Park Visit (dfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607 首先如果k小于等于直径长度,那么答案为k−1.如果k大于直径长度,设直径长度为r,那么答案为r− ...
- HDU 4607 Park Visit (树的最长链)
Park Visit Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 题解报告:hdu 4607 Park Visit(最长链)
Problem Description Claire and her little friend, ykwd, are travelling in Shevchenko's Park! The par ...
- HDU 4607 Park Visit 两次DFS求树直径
两次DFS求树直径方法见 这里. 这里的直径是指最长链包含的节点个数,而上一题是指最长链的路径权值之和,注意区分. K <= R: ans = K − 1; K > R: ans = ...
随机推荐
- [BZOJ2527]Meteors
整体二分挺好玩的...学一发 这个询问显然是可以二分的,但每次都二分就会T爆,所以我们有了“整体”二分 每次处理一些询问,要求这些询问的答案一定在$[l,r]$中 先把$l$到$mid$的操作实施,那 ...
- 【kmp算法】poj2406 Power Strings
如果next[n]<n/2,一定无解. 否则,必须要满足n mod (n-next[n]) = 0 才行,此时,由于next数组的性质,0~n-next[n]-1的部分一定是最小循环节. [ab ...
- 【计算几何】【二分答案】【最大流】bzoj1822 [JSOI2010]Frozen Nova 冷冻波
用三角形面积什么的算算点到直线的距离之类……其实相切的情况是可行的……剩下的就跟某SDOI2015一样了. #include<cstdio> #include<cmath> # ...
- 使用DFS求任意两点的所有路径
先上代码: public static void findAllPaths(Integer nodeId,Integer targetNodeId, Map<Integer,ArrayList& ...
- OC语言基础之类的本质
一.类的本质 1: // 类本身也是一个对象,是个Class类型的对象,简称类对象 2: 3: /* 4: 利用Class 创建 Person类对象 5: 6: 利用 Person类对象 创建 Per ...
- java-List集合遍历,删除或增加特定的元素
1.for(int i=0; i<list.size(); i++) 2.for(Object object : list) 实质调用的 list.iterator() 3.list.iter ...
- MySQL Workbench 工具
http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html http://www.cnblogs.com/daimage/archive ...
- C#中yield return用法
转载:http://www.jb51.net/article/54810.htm http://www.cnblogs.com/HunterWei/archive/2012/06/13/csharpy ...
- gitk图形界面中文乱码情况
当打开gitk图形界面时,文件中的中文部分乱码了,这大部分是因为编码格式的问题,为了跟上时代的脚步,本人建议都是用utf-8编码. 为了方便,我将全局配置为utf-8编码: git config -- ...
- 降低web服务器压力
一.越来越多的并发连接数 现在的Web系统面对的并发连接数在近几年呈现指数增长,高并发成为了一种常态,给Web系统带来不小的挑战.以最简单粗暴的方式解决,就是增加Web系统的机器和升级硬件配置.虽然现 ...