Update

  • \(\texttt{2020.10.20}\) 增加了证明。感谢@东北小蟹蟹(dbxxxqwq)的提醒。

Content

有一个 \(n\) 个点的无向图,每两个点之间都有一条边直接相连。你从 \(1\) 出发,每条边最多只能经过一次,当走到一个点,其相连的边都不能走时,你会停下来。问你最多能够经过多少条边。

数据范围:\(T\) 组数据,\(T\leqslant 10^5,n\leqslant 10^9\)。

Solution

我们先画图来找规律,先是 \(n=3\) 的,由样例可以直接得知,这个图里面的 \(3\) 条边都能够经过,答案是 \(3\)。

那么,我们再来画几个图找找规律,\(n=4\) 的时候的图是这样的:

自己走一下就可以发现,无论怎么样都有 \(1\) 条边走不了。

那么,\(n=5\) 的时候呢?

我们可以先走五角星状的路线,然后再走五边形状的路线,这样所有边都走得了。

再画一下 \(n=6\) 的图,走一下发现,无论怎么样都有 \(2\) 条边走不了。

然后这样我们得到一个规律:设答案为 \(ans\),则有:

\[ans=\begin{cases}\dfrac{n(n-1)}{2}&2\nmid n\\\dfrac{n(n-1)}{2}-\dfrac{n}{2}+1&2\mid n\end{cases}
\]

虽然是乱搞得出的规律,但我们惊喜的发现,交上去之后,这样的思路是对的!

乱搞搞完了,我们为什么不证明一下呢?

这道题目其实就是要我们找一个欧拉路径(不会欧拉路径?bfs一下你就知道)。如果是奇数个点的话,必定会形成一个欧拉回路,即存在一个能经过每条边一次并且仅一次的回路,那么也肯定就会有欧拉路径。如果是偶数个点的话,删任意 \(\dfrac{n}{2}-1\) 条边,没有公共顶点的边就可以使整张图变成半欧拉图,存在一条欧拉路径。

那么这样就证明完了,大概就是这样的一道找规律可以水过的题目,找到规律之后写代码挺简单的,但主要问题就是证明了。

Code

int t;
long long n; int main() {
//This program is written in Windows 10 by Eason_AC
getint(t);
while(t--) {
getll(n);
n = n * (n - 1) / 2 - (!(n % 2) ? n / 2 - 1 : 0);
writell(n), puts("");
}
return 0;
}

LuoguP6857 梦中梦与不再有梦 题解的更多相关文章

  1. 6.25考试整理:江城唱晚&&不老梦&&棠梨煎雪——题解

    按照旧例,先安利一下主要作者:一扶苏一 以及扶苏一直挂念的——银临姐姐:银临_百度百科 (滑稽) 好哒,现在步入正题: 先看第一题: 题解: 在NOIP范围内,看到“求方案数”,就说明这个题是一个计数 ...

  2. UVA540 Team Queue——题解 by hyl天梦

    UVA540 Team Queue 题解 题目描述:题目原题 https://vjudge.net/problem/UVA-540 Queues and Priority Queues are dat ...

  3. 题解 P4692 【[Ynoi2016]谁的梦】

    Ynoi 中少见的不卡常题呢....虽说有 50 个数据点... 果然还是道好题 noteskey 总之就是补集转化的思想,算出每种颜色选点的总方案减去不可行方案(就是不包含 该种颜色的点的区间选取方 ...

  4. 洛谷P1554 梦中的统计 题解

    题目传送门 这道题暴力又让我过了...数据真的很水(luogu) 暴力枚举n~m的每个数,再统计一次,交付评测...AC #include<bits/stdc++.h> using nam ...

  5. 51nod 算法马拉松17 解题报告 以后不能赛中写题解(查逐梦者抄袭本人代码...

    B题(数学题: 问(1+sqrt(2)) ^n  能否分解成 sqrt(m) +sqrt(m-1)的形式  如果可以 输出 m%1e9+7 否则 输出no n<=1e18 刚看题没思路 暴力一下 ...

  6. 题解 洛谷P4872 【OIer们的东方梦】

    一道码量比较大的广搜题,但让我这个辣鸡小学生自闭了一天呜呜呜. 一开始看数据\(n,m \leq 1000\)也并不是特别大,于是用就开始用广搜乱水了. 由于这道题每走一步的代价不是\(1\),所以并 ...

  7. 洛谷 P5640 【CSGRound2】逐梦者的初心 题解

    每日一题 day33 打卡 Analysis 这道题太难♂了,居然才是蓝的. 每个位子和每种字符都是独立的,对每种字符都记录一下位子. 用f[i]=0 or 1 表示长度为ii的后缀可不可以,0表示可 ...

  8. 题解 洛谷P3799 【妖梦拼木棒】

    一道水题 (还是做了一个小时,我太菜了 基本思路: 题里面说,4根棍子拼成一个正三角形(等边三角形) 若设这四根棍子长度为\(a,b,c,d\)且\(a≥b>c≥d\) 那很容易得到 (真的很容 ...

  9. G - 娜娜梦游仙境系列——梦醒

    G - 娜娜梦游仙境系列——梦醒 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

随机推荐

  1. kibana解决Kibana server is not ready yet问题

    找到kbn的config中的xml配置 将es的ip改成真正的ip

  2. watch异步操作

    异步操作: 1.ajax, 2.定时器 3.点击事件 4.数据库操作 特点:代码不等待,后续代码会继续执行. watch:{ //watch作用监测已经存在的数据 newVal 新值,oldVal 旧 ...

  3. 多线程01.newThread的方式创建线程

    1.java应用程序的main函数是一个线程,是被jvm启动的时候调用,线程的名字叫main 2.实现一个线程,必须创建一个thread实例,override run方法,并且调用start方法. 3 ...

  4. Python之用型号构成一个三角形代码

    #coding=utf-8 #******直角三角形*********** #左下角三角形 for i in range(1,6):     print '*'*i print "=&quo ...

  5. vue简单语法梳理

    小图不够清楚,可以点击大图查看.

  6. 洛谷 P4516 [JSOI2018]潜入行动

    题面传送门 一眼树形 \(dp\) 本题有 \(2\) 大难点. 难点之一是状态的设计,这里需要四维状态,\(dp[i][j][0/1][0/1]\) 表示在以 \(i\) 为根的子树内放了 \(j\ ...

  7. HDU 6984 - Tree Planting(数据分治+状压 dp)

    题面传送门 傻逼卡常屑题/bs/bs,大概现场过得人比较少的原因就是它比较卡常罢(Fog 首先对于这样的题我们很难直接维护,不过注意到这个 \(n=300\) 给得很灵性,\(k\) 比较小和 \(k ...

  8. R语言与医学统计图形-【34】绘制统计表格

    表的绘制,主要是临床三线表. 1.tableone包 #install.packages('tableone') library(tableone) set.seed(2017) age <- ...

  9. python——关变量下划线叙述

    _xx:前置单下划线,私有化属性或方法,一般来讲,变量名_xx被看作是"私有 的",在模块或类外不可以使用.当变量是私有的时候,用_xx 来表示变量是很好的习惯.类对象和子类可以访 ...

  10. 49-Reverse Linked List II

    Reverse Linked List II My Submissions QuestionEditorial Solution Total Accepted: 70579 Total Submiss ...