How you do anything, is how you do |

HelloEricy

园龄:2年2个月粉丝:0关注:2

【每日一题】Problem 359B. Permutation

原题

解决思路

虽然题解思路里写着 dp,但是还是用最简单的 math 方法写了
找规律题:

  1. 如果结果为 0,只需要每个 a2i1ai 同向即可,即都为整数或负数
  2. 如果结果为 2k,则只需要任意一个 |a2i1ai| 的值为 k,且与其他的 a2i1ai 方向不同,那么一正一负中和后,相差的结果正好是 2k。取 a1=1a2=1+k 根据题意 2kn,因此此方法可行
#include <bits/stdc++.h>

int main() {
    int n, k; std::cin >> n >> k;
    int a, b; a = b = 0;
    if (k > 0) {
        a = 1, b = 1 + k;
        std::cout << a << " " << b << " ";
    }
    for (int i = 2 * n; i >= 1; --i) {
        if (i == a || i == b) continue;
        std::cout << i << " ";
    }
    std::cout << std::endl;
}
posted @   HelloEricy  阅读(8)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示