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. idea明明设置了utf-8, 但是提交的配置文件到远程中文乱码

    IDEA中编辑的.properties配置文件提交到Git后显示乱码 解决方法:

  2. JavaScript中的多种进制与进制转换

    进制介绍 JavaScript 中提供的进制表示方法有四种:十进制.二进制.十六进制.八进制. 对于数值字面量,主要使用不同的前缀来区分: 十进制(Decimal): 取值数字 0-9:不用前缀. 二 ...

  3. LGV 引理小记

    讲个笑话,NOI 之前某场模拟赛让我知道了这个神奇的科技,于是准备 NOI 之前学完,结果鸽着鸽着就鸽掉了,考 day1 之前一天本来准备花一天时间学的,然后我就开玩笑般地跟自己说,这么 trivia ...

  4. Codeforces 1276F - Asterisk Substrings(SAM+线段树合并+虚树)

    Codeforces 题面传送门 & 洛谷题面传送门 SAM hot tea %%%%%%% 首先我们显然可以将所有能够得到的字符串分成六类:\(\varnothing,\text{*},s, ...

  5. SNPEFF snp注释 (添加自己基因组)

    之间介绍过annovar进行对snp注释,今天介绍snpEFF SnpEff is a variant annotation and effect prediction tool. It annota ...

  6. jquery时间轴tab切换效果实现结合swiper实现滑动显示效果

    需求:根据时间轴进行tab页面内容切换(时间轴需要滑动查看并选择) 实现思路: 结合swiper插件实现滑动显示效果 根据transform: translateX进行左侧切换效果的实现(具体实现cs ...

  7. WebRTC网页打开摄像头并录制视频

    前面我们能打开本地摄像头,并且在网页上看到摄像头的预览图像. 本文我们使用MediaRecorder来录制视频.在网页上播放录制好的视频,并能提供下载功能. html 首先创建一个html界面,放上一 ...

  8. 搭建简单的SpringCloud项目三:问题及解决

    GitHub:https://github.com/ownzyuan/test-cloud 前篇:搭建简单的SpringCloud项目一:注册中心和公共层 搭建简单的SpringCloud项目二:服务 ...

  9. 源码分析-NameServer

    架构设计 消息中间件的设计思路一般是基于主题订阅发布的机制,消息生产者(Producer)发送某一个主题到消息服务器,消息服务器负责将消息持久化存储,消息消费者(Consumer)订阅该兴趣的主题,消 ...

  10. Sharding-JDBC 简介

    什么是Sharding-JDBC 1.是轻量级的 java 框架,是增强版的 JDBC 驱动2. Sharding-JDBC(1)主要目的是:简化对分库分表之后数据相关操作.不是帮我们做分库分表,而是 ...