Wannafly Camp 2020 Day 2H 叁佰爱抠的序列 - 欧拉遍历

转化为完全图的欧拉遍历
如果 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("");
}
Wannafly Camp 2020 Day 2H 叁佰爱抠的序列 - 欧拉遍历的更多相关文章
- Wannafly Camp 2020 Day 3I N门问题 - 概率论,扩展中国剩余定理
有一个猜奖者和一个主持人,一共有 \(n\) 扇门,只有一扇门后面有奖,主持人事先知道哪扇门后有奖,而猜奖者不知道.每一轮,猜奖者选择它认为的有奖概率最大(如果有多个最大,随机选一个)的一扇门,主持人 ...
- Wannafly Camp 2020 Day 3F 社团管理 - 决策单调性dp,整体二分
有 \(n\) 个数构成的序列 \({a_i}\),要将它划分为 \(k\) 段,定义每一段的权值为这段中 \((i,j) \ s.t. \ i<j,\ a_i=a_j\) 的个数,求一种划分方 ...
- Wannafly Camp 2020 Day 3D 求和 - 莫比乌斯反演,整除分块,STL,杜教筛
杜教筛求 \(\phi(n)\), \[ S(n)=n(n+1)/2-\sum_{d=2}^n S(\frac{n}{d}) \] 答案为 \[ \sum_{d=1}^n \phi(d) h(\fra ...
- Wannafly Camp 2020 Day 2B 萨博的方程式 - 数位dp
给定 \(n\) 个数 \(m_i\),求 \((x_1,x_2,...,x_n)\) 的个数,使得 \(x_1 \ xor\ x_2\ xor\ ...\ xor\ x_n = k\),且 \(0 ...
- Wannafly Camp 2020 Day 2D 卡拉巴什的字符串 - 后缀自动机
动态维护任意两个后缀的lcp集合的mex,支持在串末尾追加字符. Solution 考虑在 SAM 上求两个后缀的 LCP 的过程,无非就是找它们在 fail 树上的 LCA,那么 LCP 长度就是这 ...
- Wannafly Camp 2020 Day 1D 生成树 - 矩阵树定理,高斯消元
给出两幅 \(n(\leq 400)\) 个点的无向图 \(G_1 ,G_2\),对于 \(G_1\) 的每一颗生成树,它的权值定义为有多少条边在 \(G_2\) 中出现.求 \(G_1\) 所有生成 ...
- Wannafly Camp 2020 Day 2I 堡堡的宝藏 - 费用流
感谢这道题告诉我KM求的是 完备 最大权匹配 :( #include <bits/stdc++.h> using namespace std; #define reset(x) memse ...
- Wannafly Camp 2020 Day 2J 邦邦的2-SAT模板
#include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; cout<<n& ...
- Wannafly Camp 2020 Day 2F 采蘑菇的克拉莉丝 - 树链剖分
如果暴力维护,每次询问时需要对所有孩子做计算 考虑通过树剖来平衡修改与询问的时间,询问时计算重链和父树,轻链的贡献预先维护好,修改时则需要修改可能影响的轻链贡献,因为某个点到根的路径上轻重交替只有 \ ...
随机推荐
- CDQ分治笔记+例题
CDQ分治是一种离线分治算法,它基于时间顺序对操作序列进行分治. 看这样一个问题: 在一个三维坐标系中,有若干个点,每个点都有对应的坐标 \((X_i , Y_i , Z_i)\) ,我们要对于每个点 ...
- markdown语法链接新页面打开
我们在写markdown语法的文章时,经常会写超链接,默认markdown的写法超链接打开页面都是在当前页面,对自己页面的访问不是很好,所以我们一般都希望在新页面打开.但是据我对markdwon的语法 ...
- 第一天,初学Markdown
Markdown学习 二级标题 三级标题 字体 hello,world hello,world hello,world hello,world 引用 飞冲 分割线 图片 超链接 跳转到安徽科技学院 列 ...
- C#设计模式学习笔记:(5)原型模式
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7640873.html,记录一下学习过程以备后续查用. 一.引言 很多人说原型设计模式会节省机器内存,他们说 ...
- SWIG 3 中文手册——10. 参数处理
目录 10 参数处理 10.1 typemaps.i 库 10.1.1 引言 10.1.2 输入参数 10.1.3 输出参数 10.1.4 输入 / 输出参数 10.1.5 使用不同的名称 10.2 ...
- #6041. 「雅礼集训 2017 Day7」事情的相似度 [set启发式合并+树状数组扫描线]
SAM 两个前缀的最长后缀等价于两个点的 \(len_{lca}\) , 题目转化为求 \(l \leq x , y \leq r\) , \(max\{len_{lca(x,y)}\}\) // p ...
- cra
const paths = require('react-scripts/config/paths'); paths.appBuild = path.join(path.dirname(paths.a ...
- Bootstrap 手机屏幕自适应的响应式布局开关
head中添加 <meta name="viewport" content="width=device-width, initial-scale=1, shrink ...
- C# MVC Api无法获得参数
在MVC中写API时,没有收到参数如何解决? 通过jQuery.POST测试成功.后来又通过F12发送,发现始终无法收到参数. 注:我的接口接收参数是一个类对象,没有写[FromBody]) [Htt ...
- Vue中echarts的使用
1.安装 npm install echarts --save 2. 导入并挂载 <template> <!-- 1. 为ECharts准备一个具备大小(宽高)的Dom --&g ...