AtCoder Grand Contest 025 Problem D

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;
}

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

时间: 2024-11-04 20:48:33

AtCoder Grand Contest 025 Problem D的相关文章

AtCoder Grand Contest 025 Problem D - Choosing Points

题目大意:输入$n,d1,d2$,你要找到$n^2$个整点 x, y 满足$0 \leqslant x, y<2n$.并且找到的任意两个点距离,既不是$\sqrt{d1}$,也不是 $\sqrt{d2}$. 题解:如果$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$进行如上考虑

AtCoder Grand Contest 024 Problem E(动态规划)

www.cnblogs.com/shaokele/ AtCoder Grand Contest 024 Problem E Time Limit: 2 Sec Memory Limit: 1024 MB Description Find the number of the possible tuples of sequences (\(A_0,A_1,-,A_N\)) that satisfy all of the following conditions, modulo \(M\): ? Fo

AtCoder Grand Contest 011

AtCoder Grand Contest 011 upd:这篇咕了好久,前面几题是三周以前写的... AtCoder Grand Contest 011 A - Airport Bus 翻译 有\(n\)个乘客到达了飞机场,现在他们都要坐车离开机场.第\(i\)个乘客到达的时间是\(T_i\),一个乘客必须在\([T_i,T_i+k]\)时刻做到车,否则他会生气.一辆车最多可以坐\(C\)个人.问最少安排几辆车可以让所有人都不生气. 题解 从前往后贪心即可. #include<iostream

AtCoder Grand Contest 014

AtCoder Grand Contest 014 A - Cookie Exchanges 有三个人,分别有\(A,B,C\)块饼干,每次每个人都会把自己的饼干分成相等的两份然后给其他两个人.当其中有一个人的饼干数量是奇数的时候停止,求会进行几次这样子的操作,或者会永远进行下去. 首先无解的情况一定是三个数都是相等的偶数. 否则直接暴力模拟就行了.(盲猜答案不会很大) 证明一下答案的范围:不妨令\(A\le B\le C\),那么最大值和最小值之间的差就是\(C-A\),那么执行完一次操作之后

【Atcoder Grand Contest 020 E】 Encoding Subsets

Atcoder Grand Contest 020 E 题意:给一个\(0-1\)字符串,如果其中有一段重复,就可以表示成\((\)这一块的表示\(\times\)出现次数\()\). 问这个字符串的所有子集中有多少种表示方法. 思路:考虑\(dp(s)\)表示字符串\(s\)的答案. 那么我们得考虑第一个表示成的位置是什么. ①第一位就是表示的第一位,不参与循环.那么转移到\(dp(s.substr(1))\),并且如果这位是\(1\),那么乘上\(2\),因为这位可能是\(0\). ②一个前

AtCoder Grand Contest 016

AtCoder Grand Contest 016 A - Shrinking 你可以进行一个串的变换,把一个长度为\(n\)的串\(S\)可以变成长度为\(n-1\)的串\(T\),其中\(T_i\)要么是\(S_i\)要么是\(S_{i+1}\). 现在问你最少进行多少次这个操作,能够使最终得到的\(T\)只由一个字符构成. \(|S|\le 100\) 首先枚举最终字符是哪一个.那么首先在\(S\)末尾加上一个这个字符,那么这个最小步数等于对于所有位置而言,离它最近的枚举的字符到这个位置的

Atcoder Grand Contest 018 E - Sightseeing Plan

Atcoder Grand Contest 018 E - Sightseeing Plan 枚举从第二个矩形的 \((x_1,y_1)\) 进入,\((x_2,y_2)\) 出来,那么中间可以选的点的数量是 \(x_2+y_2-x_1-x_2+1\) ,也就是说对于每一条合法路线,从 \((x_1,y_1)\) 进入的贡献为 \(-x_1-x_2\) ,从 \((x_2,y_2)\) 出来的贡献为 \(x_2+y_2+1\) ,枚举一下第二个矩形边界上的点,我们只需要分别计算某个点到第一个矩形

AtCoder Grand Contest 067 F - Yakiniku Restaurants

题目传送门:https://arc067.contest.atcoder.jp/tasks/arc067_d 题目大意: 有\(N\)家烧烤店,在直线上按顺序排列,第\(i\)家烧烤店和第\(i+1\)家烧烤店的距离为\(A_i\).你有\(M\)张烧烤券,在第\(i\)家烧烤店使用第\(j\)张券可以获得\(B_{i,j}\)的快乐,你可以在某家烧烤店使用多张券.你现在可以从某个烧烤店开始,使用所有的券,使得你的快乐值减去所走路程最大 我们考虑每个\(B_{i,j}\)的贡献,我们找到第一个一

AtCoder Grand Contest 014 E:Blue and Red Tree

题目传送门:https://agc014.contest.atcoder.jp/tasks/agc014_e 题目翻译 有一棵有\(N\)个点的树,初始时每条边都是蓝色的,每次你可以选择一条由蓝色边构成的简单路径,让这条路径的两个端点间连上一条红边,然后断开这条路径上的某条蓝边.这样做\(N-1\)次,就可以把原本的蓝树变成红树.现在给你蓝树和红树的样子,问你可不可能把给出的蓝树变成给出的红树.\(N\leqslant 10^5\) 题解 先膜一发大佬的题解:https://blog.csdn.