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 采蘑菇的克拉莉丝 - 树链剖分
如果暴力维护,每次询问时需要对所有孩子做计算 考虑通过树剖来平衡修改与询问的时间,询问时计算重链和父树,轻链的贡献预先维护好,修改时则需要修改可能影响的轻链贡献,因为某个点到根的路径上轻重交替只有 \ ...
随机推荐
- AJAX优势、跨域方案及JSON数据格式和浏览器中JSON对象
ajax 不重新加载整个网页的情况下,更新部分网页的技术 注意:ajax只有在服务器上运行才能生效,我在本地一般用phpstudy 优点: 1.优化用户体验 2.承担了一部分本该服务器端的工作,减轻了 ...
- winform重绘控件边框
首先添加一个用户控件 对于重绘边框有三个需要考虑的东西 1:是否显示边框 2:边框颜色 3:边框宽度 所以定义三个私有变量 /// <summary>/// 是否显示边框/// </ ...
- No mapping found for HTTP request with URI [/SLSaleSystem/js/jquery.dataTables.min.js] in DispatcherServlet with name 'spring' 静态资源文件访问不到,无解!!!!!!!
报错信息: 网上三种修改 web.xml 文件方法尝试未果 尝试未果:<mvc:default-servlet-handler/> 尝试未果:方法2:直接告诉spring,这个你就得这 ...
- Integer使用==做判断遇到的问题
问题: 最近使用Integer类型的数据做判断时,遇到了一个神奇的问题. 如: Integer a=223; Integer b=223; 这样使用==做判断,得到的结果是 false 原因: 后来查 ...
- 【学习笔记】B站-2019-NLP(自然语言处理)之 BERT 课程 -- 相关课程笔记
BERT 课程笔记 1. 传统方案遇到的问题 BERT的核心在于Transformer,Transformer就类似seq2seq网络输入输出之间的网络结构. 传统的RNN网络:最大的问题,因为不能并 ...
- Freefilesync-文件夹自动同步
在企业的相关设置中,若两台物理机,主副之间需要做到文件同步,可以推荐使用Freefilesync作为自动同步设置 话不多说,直接搞机 开始设置好文件比对-点击红色漏斗设置(比较/同步) 点击确定 手动 ...
- 洛谷P1808 单词分类_NOI导刊2011提高(01) 字符串排序
洛谷P1808 单词分类_NOI导刊2011提高(01) 题目描述 Oliver为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类. 两个单词可以分为一类当且 ...
- opencv —— addWeighted 图像叠加(计算数组加权和)
计算数组加权和:addWeighted 可实现两个大小.类型均相同的数组(一般为 Mat 类型)按照设定权重叠加在一起. void addWeighted(InputArray src1,double ...
- Qt获取当前屏幕大小
1.头文件 #include<QScreen> 2.代码 QScreen *screen = QGuiApplication::primaryScreen (); QRect screen ...
- final关键字在JVM中的理解
我们先来看两段代码与运行结果,根据结果去分析解释一下 不加final关键字: package com.waibizi; public class demo02 { public static void ...