zoukankan      html  css  js  c++  java
  • 轰炸

    题目描述

    “我该怎么办?”飞行员klux向你求助。

    事实上,klux面对的是一个很简单的问题,但是他实在太菜了。

    klux要想轰炸某个区域内的一些地方,它们是位于平面上的一些点,但是(显然地)klux遇到了抵抗,所以klux只能飞一次,而且由于飞机比较破,一点起飞就只能沿直线飞行,无法转弯。现在他想一次轰炸最多的地方。

    输入输出格式

    输入格式:

    第一行为n

    输入数据由n对整数组成(1<=n<=700),每对整数表示一个点的坐标。没有一个点会出现两次。

    输出格式:

    一个整数,表示一条直线能覆盖的最多的点数。

    输入输出样例

    输入样例#1:
    5
    1 1
    2 2
    3 3
    9 10
    10 11
    
    输出样例#1:
    3
    

    说明

    本题翻译并改编自uva270,数据及解答由uva提供。

    思路:

    暴力枚举。

    一般式:a*x+b*x+c==0,

    ∵a*x[i]+b*y[i]+c=a*x[j]+b*y[j]+c=0;

    ∴a:b=(y[j]-y[i]):(x[i]-x[j]);

    ∴a=y[j]-y[i],b=x[i]-x[j],c=-a*x[i]-b*y[i].

    代码实现:

     1 #include<cstdio>
     2 int n,a,b,c,x[710],y[710],now,ans;
     3 int main(){
     4     scanf("%d",&n);
     5     for(int i=1;i<=n;i++) scanf("%d%d",&x[i],&y[i]);
     6     for(int i=1;i<n;i++)
     7     for(int j=i+1;j<=n;j++){
     8         a=y[j]-y[i];b=x[j]-x[i];c=-a*x[i]+b*y[i];now=0;
     9         for(int k=1;k<=n;k++) if(a*x[k]-b*y[k]+c==0) ++now;
    10         if(now>ans) ans=now;
    11     }
    12     printf("%d
    ",ans);
    13     return 0;
    14 }

    数学不好。

    题目来源:洛谷

  • 相关阅读:
    理财-4
    “大锅”遇险记
    今日份灵感开发
    持续集成简介
    redis clusert分布式集群
    redis 哨兵
    redis 主从复制
    Redis新特性ACL安全策略
    redis 快照持久化RDB和AOF
    redis 基础常用命令
  • 原文地址:https://www.cnblogs.com/J-william/p/6295779.html
Copyright © 2011-2022 走看看