1 条题解
-
0
自动搬运
来自洛谷,原作者为

yanmingqian
莫等痛时才知痛搬运于
2025-08-24 23:13:33,当前版本为作者最后更新于2025-04-15 14:31:14,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
神秘构造。
贪心考虑,为了尽量让章节多,要让 个人都知道一遍真相,一个人知道真相之前,要尽量让更多人发现他不知道真相,一个人知道真相之后,要尽量让更多人发现他知道真相。
我们假设现在甲刚刚知道了真相,下一个知道真相的人是乙。那么中间要写的几个章节是让除了甲之外的 个人都知道甲知道了真相,让除了乙之外的 个人都知道乙不知道真相。由于总共有 个人,类似的连续情节会发生 次。
特别地,在第一个知道真相的人知道真相之前,发现他不知道真相的人只能有一个,因为此时没有人发现真相,那么没有人会发现某个人知道真相,这样为了情节不重复,只能第二章是一个人发现了真相。同理,最后一个人发现真相之后,也只有一个人能发现最后一个人发现了真相。
这样最终答案就是 ,化简一下就是 。注意当 时,只能有一个章节,需要特判。
代码就很简单了。
C++ 代码:
#include<iostream> using namespace std; int main(){ long long n; cin>>n; if(n==1){ cout<<1; return 0; } cout<<2*n*n-3*n+4; return 0; }鉴于我之前交蓝桥杯 Python 组的题解因为没有 python 代码被打回了,特意让 deepseek 帮我写了一份 Java 代码(第一遍还编译错误了,害得我专门去研究了一下):
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scanner=new Scanner(System.in); long n=scanner.nextInt(); if(n==1){ System.out.println(1); } else{ System.out.println(2*n*n-3*n+4); } } }
- 1
信息
- ID
- 12036
- 时间
- 3000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者