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. 花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘

    本文所有内容均节选自<设计模式就该这样学> 序言 Design Patterns: Elements of Reusable Object-Oriented Software(以下简称&l ...

  2. 柯基数据通过Rainbond完成云原生改造,实现离线持续交付客户

    ​ ​1.关于柯基数据 南京柯基数据科技有限公司成立于2015年,提供一站式全生命周期知识图谱构建和运维.智能应用服务,致力于"链接海量数据,从大数据中挖掘智慧".帮助企业运用知识 ...

  3. vue使用axios读取本地json文件来显示echarts折线图

    编辑器:HBuilderx axios文档:http://www.axios-js.com/zh-cn/docs/ echarts实例:https://echarts.apache.org/examp ...

  4. 洛谷 P3215 [HNOI2011]括号修复 / [JSOI2011]括号序列(fhq-treap)

    题目链接 题意:有一个长度为 \(n\) 的括号序列,你需要支持以下操作: 将 \([l,r]\) 中所有括号变为 \(c\) 将 \([l,r]\) 区间翻转 将 \([l,r]\) 区间中左括号变 ...

  5. Codeforces 538G - Berserk Robot(乱搞)

    Codeforces 题目传送门 & 洛谷题目传送门 一道很神的乱搞题 %%% 首先注意到如果直接去做,横纵坐标有关联,不好搞.这里有一个非常套路的技巧--坐标轴旋转,我们不妨将整个坐标系旋转 ...

  6. 【豆科基因组】普通豆/菜豆/四季豆Common bean (Phaseolus vulgaris L.) 基因组

    目录 研究一:G19833组装,2014NG 研究二:BAT 93组装,2016 genome biology 菜豆属(Phaseolus L.)为同源二倍体作物,包含有80 多个物种,多数为野生种, ...

  7. Oracle-SQL语句的语法顺序和执行顺序

    SQL语句的语法顺序和执行顺序了,我们常见的SQL语法顺序如下: SELECT DISTINCT <Top Num> <select list>FROM [left_table ...

  8. 从零构建Java项目(Maven+SpringBoot+Git) #02 奥斯丁项目

    前两天我说要写个项目来持续迭代,有好多小伙伴都表示支持和鼓励,项目的第一篇这不就来了么~我给项目取了个名字,英文名叫做:austin,中文名叫做:奥斯丁 名字倒没有什么特别的含义,我单纯觉得这个名字好 ...

  9. Learning Spark中文版--第五章--加载保存数据(2)

    SequenceFiles(序列文件)   SequenceFile是Hadoop的一种由键值对小文件组成的流行的格式.SequenceFIle有同步标记,Spark可以寻找标记点,然后与记录边界重新 ...

  10. STL全特化与偏特化

    在泛型编程中,常常会使用一些非完全泛型的类模板,这就是特化. 如何理解全特化呢?如上图所示,第一个template class是空间配置器的类模板,第二个就是一个全特化的template class. ...