码迷,mamicode.com
首页 > 其他好文 > 详细

AtCoder Grand Contest 025 Problem D

时间:2018-07-04 11:48:05      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:while   contest   ace   arc   let   com   between   scan   www   

www.cnblogs.com/shaokele/


AtCoder Grand Contest 025 Problem D

  Time Limit: 2 Sec
  Memory Limit: 1024 MB

Description

  Takahashi is doing a research on sets of points in a plane. Takahashi thinks a set \(S\) of points in a coordinate plane is a good set when \(S\) satisfies both of the following conditions:
  ? The distance between any two points in \(S\) is not \(\sqrt{D1}\).
  ? The distance between any two points in \(S\) is not \(\sqrt{D2}\)?.
  Here, \(D1\) and \(D2\) are positive integer constants that Takahashi specified.
  Let \(X\) be a set of points \((i,j)\) on a coordinate plane where \(i\) and \(j\) are integers and satisfy \(0≤i,j<2N\).
  Takahashi has proved that, for any choice of \(D1\) and \(D2\), there exists a way to choose \(N^2\) points from \(X\) so that the chosen points form a good set. However, he does not know the specific way to choose such points to form a good set. Find a subset of \(X\) whose size is \(N^2\) that forms a good set.
 

Input

  ? \(1≤N≤300\)
  ? \(1≤D1≤2×105\)
  ? \(1≤D2≤2×105\)
  ? All values in the input are integers.
 
  Input is given from Standard Input in the following format:
  \(N\) \(D_1\) \(D_2\)
  

Output

  Print N2 distinct points that satisfy the condition in the following format:
  \(x_1 y_1\)
  \(x_2 y_2\)
  :
  \(x_{N^2} y_{N^2}\)
  Here, (xi,yi) represents the i-th chosen point. \(0≤xi,yi<2N\) must hold, and they must be integers. The chosen points may be printed in any order. In case there are multiple possible solutions, you can output any.
  

Sample Input 1

  2 1 2
 

Sample Output 1

  0 0
  0 2
  2 0
  2 2
  

Sample Input 2

  3 1 5
 

Sample Output 2

  0 0
  0 2
  0 4
  1 1
  1 3
  1 5
  2 0
  2 2
  2 4
  

题目地址:  AtCoder Grand Contest 025 Problem D

题目大意:

  输? \(n, d_1, d_2\)
  你要找到 \(n^2\) 个整点 \(x, y\) 满? \(0 ≤ x, y < 2n\)。 并且找到的任意两个点距离,既不是 \(\sqrt{d1},也不是 \sqrt{d2}\)

  

题解:

  这是个分析题?。
  简单来说,所有距离为 \(\sqrt{d_1}\) 的点连边,可以得到?个?分图。\(d_2\) 同理。
  这样可以把所有 \(4n^2\) 个点四分,?定有?块满?条件。
  如果 d mod 2 = 1,如果 \(a^2 + b^2 = d\),a 和 b ?定?奇?偶,按国际象棋??染?即可。
  如果 d mod 4 = 2,如果 \(a^2 + b^2 = d\),a 和 b ?定都是奇数,????,????即可。
  如果 d mod 4 = 0,把 2 × 2 的区域看成?个?格?,如此类推,对 d/4 进?如上考虑即可。
  


AC代码

#include <cstdio>
using namespace std;
int n,d1,d2,s;
int f[620][620];
void work(int d){
    int p=0;
    while(d%4==0){
        d/=4;
        p++;
    }
    if(d&1){
        for(int i=0;i<2*n;i++)
            for (int j=0;j<2*n;j++)
                if(((i>>p)+(j>>p))&1)
                    f[i][j]=1;
    }else{
        for(int i=0;i<2*n;i++)
            for(int j=0;j<2*n;j++)
                if((i>>p)&1)
                    f[i][j]=1;
    }
}
int main(){
    scanf("%d%d%d",&n,&d1,&d2);
    work(d1);
    work(d2);
    for(int i=0;i<2*n;i++){
        for(int j=0;j<2*n;j++){
            if(s<n*n && !f[i][j]){
                printf("%d %d\n",i,j);
                s++;
            }
        }
    }
    return 0;
}

AtCoder Grand Contest 025 Problem D

标签:while   contest   ace   arc   let   com   between   scan   www   

原文地址:https://www.cnblogs.com/shaokele/p/9262229.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!