zoukankan      html  css  js  c++  java
  • ZCMU Problem A: Good Joke!

     

    Problem A: Good Joke!

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 25  Solved: 16
    [Submit][Status][Web Board]

    Description

    Vadim and Roman like discussing challenging problems with each other. One day Vadim told his friend following problem:

    Given N points on a plane. Each point p is defined by it's two integer coordinates — px and py. The distance between points a and b is min(|ax - bx|, |ay - by|). You should choose a starting point and make a route visiting every point exactly once, i.e. if we write down numbers of points in order you visit them we should obtain a permutation. Of course, overall distance walked should be as small as possible. The number of points may be up to 40.

    "40? Maybe 20? Are you kidding?" – asked Roman. "No, it's not a joke" – replied Vadim. So Roman had nothing to do, but try to solve this problem. Since Roman is really weak in problem solving and you are the only friend, except Vadim, with whom Roman can discuss challenging tasks, he has nobody else to ask for help, but you!

    Input

    The first line of the input contains an integer T denoting the number of test cases. The description of T test cases follows.The first line of each test case contains a single integer N denoting the number of points on a plane. The following N lines contain two space-separated integers each — coordinates of points.

    Constraints

    • 1 ≤ T ≤ 10
    • 1 ≤ N ≤ 40
    • 0 ≤ absolute value of each coordinate ≤ 1000
    • 1 ≤ sum over all N in a single test file ≤ 120

    Output

    Output the answer for every test case in a separate line. The answer for every test case is a permutation of length N. In case there are several solutions that lead to minimal distance walked, you should choose the lexicographically smallest one. Let P denote such permutation. To make output smaller, you should output H(P)H(P) = P1 xor P2 xor ... xor PN. Have a look at the example and it's explanation for better understanding.

    Sample Input

    2
    2
    1 2
    0 0
    3 3
    3
    0 0
    0 3

    Sample Output

    3
    0

    HINT

    天坑。

    #include<stdio.h>
    main()
    {
        int t,n; scanf("%d",&t);
        while(t--)
        {
            int ans=0,i;
            scanf("%d",&n);
            for(i=1;i<=n;i++)
            {
                int x,y;
                scanf("%d%d",&x,&y);
                ans^=i;
            }
            printf("%d
    ",ans);
        }
    return 0;
    }
    

      

  • 相关阅读:
    Java8 Lambda表达式实战之方法引用(一)
    Lambda表达式的语法与如何使用Lambda表达式
    最后一个元素放到第一个,其他元素向后移动一位
    java8lambda表达式初识
    通过反射获取类上的注解
    注解之注解的属性
    java元注解(注解在注解上的注解)
    反射的应用场景
    通过反射获取对象的构造器
    20199324 2019-2020-2 《网络攻防实践》第1周作业
  • 原文地址:https://www.cnblogs.com/Roni-i/p/7200979.html
Copyright © 2011-2022 走看看