当前位置: 首页 > news >正文

【CF】Day46——Codeforces Round 967 (Div. 2) B

B. Generate Permutation

题目:

思路:

写写水题

这题简单思维,就是题目有点长

简单来说就是我们要构造一个数列,使得满足第一台机器回到起点的位置和第二台机器回到起点的位置次数一样

那么要让第一台机器回到起点,那么肯定是 x / x + 2 / x + 1 这样的,同理让第二台机器回到起点要类似 x + 1 / x + 2 / x 这样的

那么一个显然的方法就是构造 1 3 5 7 9 .... n n - 1 n - 3 n - 5 ..... 8 6 4 2

这样的话对于 1 2 机器一肯定要回到原点开启下一次的 3 4,而机械二遇到1后回到起点时直接就能解决 2 然后去解决 3 4,可以看出是一个对称的操作

特殊情况,如果 n 是偶数是无法构成的,因为此时必定会有一个机器会比另一个机器起码多一次操作,因为肯定有一个机器可以一次解决掉两个数,而另一个机器无法一次解决两个数,就像我们上述构造的这个一样

代码:

#include <iostream>
#include <algorithm>
#include<cstring>
#include<cctype>
#include<string>
#include <set>
#include <vector>
#include <cmath>
#include <queue>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <stack>
#include <memory>
using namespace std;
#define int long long
#define yes cout << "Yes\n"
#define no cout << "No\n"void solve()
{int n;cin >> n;if (n % 2 == 0){cout << "-1\n";return;}for (int i = 1; i <= n; i+=2){cout << i << " ";}for (int i = n-1; i >= 2; i -= 2){cout << i << " ";}cout << endl;
}signed main()
{cin.tie(0)->sync_with_stdio(false);int t = 1;cin >> t;while (t--){solve();}return 0;
}

相关文章:

  • 【C++贪心】P6023 走路|普及
  • 欧拉计划 Project Euler60(素数对集合)题解
  • 双系统安装 ios放同一个u盘 ventory使用+windows安装,双系统互相访问中间盘 切换默认启动系统
  • 巧记英语四级单词 Unit7-上【晓艳老师版】
  • 多块盘创建RAID5以及后增加空间
  • 小结:PKI(Public Key Infrastructure,公钥基础设施)
  • CSdiy java 06
  • 西门子笔记四:Uart模块
  • 异步机制与 CPU 的关系解析
  • C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 15)
  • 当 AI 成为 “数字新物种”:人类职业的重构与进化
  • 角度(degrees)和弧度(radians)转换关系
  • Glide 如何加载远程 Base64 图片
  • 链表反转操作经典问题详解
  • 关于 const a 定义的数据 与 其渲染 的问题。即通过const定义的常量,会不会导致渲染不及时。
  • 原语的使用
  • 归并排序排序总结
  • 创建RAID1并扩容RAID
  • 使用C# ASP.NET创建一个可以由服务端推送信息至客户端的WEB应用(1)
  • Redis分布式锁使用以及对接支付宝,paypal,strip跨境支付
  • 广东省副省长刘红兵跨省任湖南省委常委、宣传部部长
  • 夜读丨跷脚牛肉乐翘脚
  • 69岁朱自强被查,曾任南京地铁总经理
  • 昆明破获一起算命破灾诈骗案,民警:大师算不到自己的未来
  • 金科服务:大股东博裕资本提出无条件强制性现金要约收购,总代价约17.86亿港元
  • 西班牙葡萄牙突发全国大停电,欧洲近年来最严重停电事故何以酿成