zoukankan      html  css  js  c++  java
  • poj 3618

    题目:http://acm.pku.edu.cn/JudgeOnline/problem?id=3618

    注意没有距离原点等长的两点。

    abs()用的极妙;

    先前我的代码写了146行,自己都受不了了,而且提交还是错的,郁闷;

    后来看了http://ren.javaeye.com/blog/344094  的代码:眼前一亮,没有我之前那么多繁杂的判断。

     

    #include<stdio.h>
    #include<math.h>
    #include<algorithm>
    using namespace std;
    bool cmp(int a, int b)
    {
    	return abs(a) < abs(b);
    }
    int main()
    {
    	int nMark,i,k,tot,usedTime,mark[50001];
    	long long time;
    	while(scanf("%lld%d", &time, &nMark)!=EOF)
    	{
    		mark[0]=0;
    		for(i=1; i<=nMark; i++)
    			scanf("%d", &mark[i]);
    		sort(mark+1,mark+nMark+1,cmp);
    		tot = 0;
    		usedTime = 0;
    		k = 1;
    		if(0 == mark[1])
    		{
    			tot = 1;
    			k = 2;
    		}
    		for(; k<=nMark; k++)
    		{
    			if(abs(mark[k] - mark[k-1]) <= time - usedTime)
    			{
    				tot++;
    				usedTime += abs(mark[k] - mark[k-1]);
    			}
    			else
    				break;
    		}
    		printf("%d\n",tot);
    	}
    	return 0;
    }
    

  • 相关阅读:
    01-面向对象
    12-期末作业
    11-Linux-vim /bash
    组播地址
    rip
    华为hcnp r&s考试一共有三门,R&S-IERS,R&S-IENP,R&S-IEEP

    spring注解开发
    yml和properties的加载顺序和区别
    @ImportResource
  • 原文地址:https://www.cnblogs.com/submarinex/p/1941262.html
Copyright © 2011-2022 走看看