转化为完全图的欧拉遍历

如果 n 是奇数,则欧拉遍历长度为 \(n(n-1)/2\) 条边

如果 n 是偶数,则欧拉遍历长度为 \(n*n/2-1\) 条边

(即将(n-1)/2对点配对,剩下的一对当起点终点)

点数则 +1

答案是单调的所以二分

至于输出,暴力跑欧拉回路即可

眼瞎不开ll

#include <bits/stdc++.h>
using namespace std; #define int long long
int n,m; const int N = 4005;
vector <pair<int,int> > g[N]; int vis[N*N],ind;
vector <int> sta; void make(int p,int q,int r) {
g[p].push_back(make_pair(q,r));
g[q].push_back(make_pair(p,r));
} void dfs(int p) {
for(pair<int,int> pr:g[p]) {
int q=pr.first, w=pr.second;
if(!vis[w]) {
vis[w]=1;
dfs(q);
}
}
sta.push_back(p);
} signed main() {
cin>>n;
int l=1,r=3ll*sqrt(n)+1; //!!!
while(l<r) {
int mid=(l+r)/2,tmp=0;
if(mid&1) tmp=mid*(mid-1)/2+1;
else tmp=mid*mid/2;
if(tmp>n) r=mid;
else l=mid+1;
}
m=l-1;
printf("%lld\n",m);
if(n>2000000) return 0;
for(int i=1;i<=m;i++) {
for(int j=1;j<i;j++) {
make(i,j,++ind);
}
}
if(m%2==0) {
for(int i=3;i<=m;i+=2) {
make(i,i+1,++ind);
}
}
dfs(1);
for(int i=0;i<sta.size();i++) {
printf("%lld%s",sta[i],i==n-1?"":" ");
}
for(int i=sta.size();i<n;i++) printf("1%s",i==n-1?"":" ");
puts("");
}

最新文章

  1. .Net 转战 Android 4.4 日常笔记(7)--apk的打包与反编译
  2. 北美IT公司大致分档
  3. XsltListViewWebPart 和自定义列表视图
  4. ubuntu下mysqli_connect()显示未定义,mysqli_fetch_all()显示未定义 解决方法
  5. phpcmsv9如何实现添加栏目时不在首页内容区显示只在导航栏显示
  6. 黄聪:mysql 存在该记录则更新,不存在则插入记录的sql
  7. getpeername
  8. centos 7.x编写开机启动服务
  9. My.Ioc 代码示例——Lifetime 和 ILifetimeScope
  10. WifiDog and OpenWrt
  11. QLineEdit 仿QQ签名框
  12. Android的内存优化
  13. Spring AOP分析(3) -- CglibAopProxy实现AOP
  14. [APIO 2016]Gap
  15. [android] 开启新的activity获取他的返回值
  16. bzoj1027 状压dp
  17. Java线程池参数
  18. mybatis oracle和mysql like模糊查询写法
  19. Linux给目录创建软链接的技巧
  20. [hihoCoder] 骨牌覆盖问题&#183;一

热门文章

  1. redis之master.slave主从复制
  2. 邓Laravel2020-01-28
  3. 使用Ajax时[object%20object] 报错的解决方案
  4. Navicat Premium 12永久激活
  5. rxjs简单的Observable用例
  6. [Git:commit错误] Fatal: cannot do a partial commit during a merge
  7. R语言入门:使用RStudio的基本操作
  8. 对于搭建网站中出现“You don&#39;t have permission to access this resource.”错误提示的解决思路
  9. Postman测试上传MultipartFile文件
  10. 吴裕雄--天生自然 R数据分析:2014年美国人时间使用调查(ATUS)饮食与健康模块文件分析