前言

比赛网址:http://47.110.12.131:9016/contest/3

总体来说,这次比赛是有一定区分度的, \(\text{ACM}\) 赛制也挺有意思的。

题解

A. 云之彼端,约定的地方

考点:

无(签到题)

解法:

本题是拓扑学中的欧拉公式的结论题。

我们发现 \(V=E-F+2\) ,于是便得到了答案。

代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int e,f;
  6. scanf("%d%d",&e,&f);
  7. printf("%d",e-f+2);
  8. return 0;
  9. }

B. 秒速 5 厘米

考点:

拓展欧几里得,裴蜀定理,简单数论/构造。

由于近年来考试加强了对数论的考察,今年更是考了一道构造题,故出此题来考考大家。

解法:

要使所有的数清零,也就是要使方程 \(len_1 \times x + len_2 \times y + len_3 \times z + X = 0\) 这个方程一定有解。

于是联想到裴蜀定理: \(ax+by=c\) 有解当且仅当 \(\gcd(x,y)|c\) 。

故我们知道当 \(\gcd(x,y)=1\) 时,这个方程一定有解。

所以我们考虑第一次操作修改区间 \([1,n]\) ,第二次修改区间 \([1,n-1]\) ,第三次修改 \(n\)。

由于 \(n\) 和 \(n-1\) 互质,所以一定存在方法使前两次之和加上原数等于 \(0\) ,而最后一次操作又能使最后一个数变成 \(0\) 。

具体构造方案就变成了求方程 \(nx + (n-1)y = C\) 的任意一组解。

而这不管是交给小学奥数还是交给拓展欧几里得都是可以的。

这题的构造其实不难想到,当然观察样例也可以发现,可以说观察样例是极其重要的能力。

代码: (来自 liyiming ,出题人是用拓欧写的,放这个比较友好。)

  1. int main()
  2. {
  3. cin >> n;
  4. for (int i = 1; i <= n; i++) cin >> a[i];
  5. cout << 1 << " " << n - 1 << endl;
  6. cout << a[1] * (n - 1);
  7. for (int i = 2; i <= n - 1; i++) cout << " " << a[i] * (n - 1);
  8. cout << endl;
  9. cout << 1 << " " << n << endl;
  10. for (int i = 1; i <= n - 1; i++) cout << -a[i] * n << " ";
  11. cout << 0 << endl;
  12. cout << n << " " << n << endl;
  13. cout << -a[n];
  14. cout << endl;
  15. return 0;
  16. }

C. 追逐繁星的孩子

考点:

树论,树的遍历,概率的基本计算。

解法:

对于题目中给的这棵树,从 \(1\) 号节点开始进行一次 \(\text{dfs}\) ,并在过程中计算经过该点的概率即可。

当然,如果当前概率已经不合法,则可以剪枝优化。

本题的难度明显小于 B 题, AC 人数不符合预期……

代码:

  1. #include <bits/stdc++.h>
  2. #define Re register
  3. using namespace std;
  4. const int maxn=500005;
  5. vector<int> T[maxn],E[maxn];
  6. int n,q,cnt;
  7. void dfs(int x,int fa,long double p)
  8. {
  9. if(p*100<q) return;
  10. cnt++;
  11. for(Re int i=0;i<T[x].size();i++)
  12. {
  13. if(T[x][i]==fa) continue;
  14. dfs(T[x][i],x,p*E[x][i]/100);
  15. }
  16. }
  17. int main()
  18. {
  19. scanf("%d%d",&n,&q);
  20. for(Re int i=1;i<n;i++)
  21. {
  22. int u,v,p;
  23. scanf("%d%d%d",&u,&v,&p);
  24. T[u].push_back(v);
  25. T[v].push_back(u);
  26. E[u].push_back(p);
  27. E[v].push_back(p);
  28. }
  29. dfs(1,1,1.0);
  30. printf("%d",cnt);
  31. return 0;
  32. }

D. 言叶之庭

代码:

  1. int n;
  2. cin>>n;
  3. for (int i = n - 1; i >= 0; i--)
  4. {
  5. f[i] = f[i+1] + (double)n / ((double)n - i);
  6. g[i] = g[i+1] + (double)i / ((double)n - i) * f[i]+ f[i+1] + (double)n / ((double)n - i);
  7. }
  8. printf("%.2lf",g[0]);

考点:

期望相关知识。

可以说期望是一个大难点,如何逾越它是个重要的问题。

题解:

本题为 Luogu P4550 原题……

E. 你的名字

考点:

组合数学,计数问题。

计数问题是福建省选的黄金考点,六题能出四道计数。

题解:

使用 Burnside 引理(\(\begin{aligned}cnt = \frac{1}{|G|}\sum\limits \chi (x)\end{aligned}\))或者简单的容斥可得:

\[\begin{aligned}ans=\frac{2 \times 2^{\frac{n^2}{4}} + 2^{\frac{n^2}{2}} + 2^{n^2}}{4}\end{aligned}
\]

而 \(2\) 的那么多次方直接用快速幂计算即可。

(考虑利用费马小定理,我们可以进一步优化,这里就不介绍了,可以看下面代码自行理解……)

代码:

  1. cout<<(2*1ll*qpow(2,ksc(n/2,n/2,mod-1))+qpow(2,ksc(n/2,n,mod-1))+qpow(2,ksc(n,n,mod-1)))%mod*1ll*inv4%mod;

F. 天气之子

考点:

计数问题,树论。

树论是 noip / CSP 中最重要的考点之一。

题解:

这种方法叫做 贡献 法,考虑一个连通块在哪些 \([l,r]\) 中出现过。

我们需要取其中一个点作为这个连通块的代表,不妨就取深度最浅的那个点。

于是我们枚举每个结点作为连通块的最浅结点,显然它能作为最浅结点当且仅当它的父节点没有被取到,当它的父节点被取到时,它就不是最浅节点,也可以认为这个连通块它不存在。

然后就做完了本题……

代码:

  1. u64 ans = 0;
  2. for (int i = 2; i <= n; i++)
  3. {
  4. if (fat[i] < i)
  5. {
  6. ans += (i - fat[i]) * 1ll * (n - i + 1);
  7. }
  8. else
  9. {
  10. ans += (fat[i] - i) * 1ll * i ;
  11. }
  12. }

YAOI Round #1 题解的更多相关文章

  1. YAOI Round #7 题解

    前言 比赛链接: Div.1 : http://47.110.12.131:9016/contest/16 Div.2 : http://47.110.12.131:9016/contest/15 D ...

  2. YAOI Round #5 题解

    前言 比赛链接: Div.1 : http://47.110.12.131:9016/contest/13 Div.2 : http://47.110.12.131:9016/contest/12 D ...

  3. YAOI Round #3 题解

    前言 比赛链接: Div.1 : http://47.110.12.131:9016/contest/7 Div.2 : http://47.110.12.131:9016/contest/8 Div ...

  4. Codeforces Round #556 题解

    Codeforces Round #556 题解 Div.2 A Stock Arbitraging 傻逼题 Div.2 B Tiling Challenge 傻逼题 Div.1 A Prefix S ...

  5. LibreOJ β Round #2 题解

    LibreOJ β Round #2 题解 模拟只会猜题意 题目: 给定一个长为 \(n\) 的序列,有 \(m\) 次询问,每次问所有长度大于 \(x\) 的区间的元素和的最大值. \(1 \leq ...

  6. Codeforces Round #569 题解

    Codeforces Round #569 题解 CF1179A Valeriy and Deque 有一个双端队列,每次取队首两个值,将较小值移动到队尾,较大值位置不变.多组询问求第\(m\)次操作 ...

  7. Codeforces Round #557 题解【更完了】

    Codeforces Round #557 题解 掉分快乐 CF1161A Hide and Seek Alice和Bob在玩捉♂迷♂藏,有\(n\)个格子,Bob会检查\(k\)次,第\(i\)次检 ...

  8. CFEducational Codeforces Round 66题解报告

    CFEducational Codeforces Round 66题解报告 感觉丧失了唯一一次能在CF上超过wqy的机会QAQ A 不管 B 不能直接累计乘法打\(tag\),要直接跳 C 考虑二分第 ...

  9. Google kickstart 2022 Round A题解

    Speed Typing 题意概述 给出两个字符串I和P,问能否通过删除P中若干个字符得到I?如果能的话,需要删除字符的个数是多少? 数据规模 \[1≤|I|,|P|≤10^5 \] 双指针 设置两个 ...

随机推荐

  1. kafka之二:手把手教你安装kafka2.8.0(绝对实用)

    前面分享了kafka的基本知识,下面就要对kafka进行实操,先看如何安装. kafka需要zookepper的支持,所以要安装kafka需要有zookeeper的环境,zookeeper安装请参见& ...

  2. node.js学习(6)创建和删除目录

    1 导入模块 fs 删除文件 # 同步 创建目录 删除目录 # 异步 创建目录

  3. Bringing up interface eth0: Error: No suitable device found: no device found for connection 'System eth0'.

    在VMware的虚拟机中克隆CentOS,在重启网卡的时候报错:   Shutting down loopback interface: [ OK ] Bringing up loopback int ...

  4. js的节流、防抖以及使用场景

    介绍 首先看一个没有经过任何处理的: 1 // 模拟一个输出的函数 2 function input(value) { 3 console.log(`输入的内容${value}`) 4 } 5 con ...

  5. 车载智能HUD

    车载智能HUD 从 HUD 到行车记录仪再到后视镜,最近有不少团队都发布了自己的车载智能硬件. 什么是 HUD? HUD 全称抬头数字显示仪 (Heads Up Display),又叫平视显示系统,简 ...

  6. Jmeter(五十一) - 从入门到精通高级篇 - jmeter之运动战(详解教程)

    1.简介 运动战是一种军事作战方式,依托较大的作战空间来换取时间移动兵力包围敌方,以优势兵力速战速决,运动战的运用归为这样一段话"避敌主力,诱敌深入,集中优势兵力逐个击破".今天宏 ...

  7. Nginx虚拟主机流量状态模块(nginx-module-vts)使用说明文档(四)

    装完NG,为了拿到各种状态指标,就要对NG做监控. Github 2.3k的开源项目nginx-module-vts没准真是你需求的. 链接数,qps,1xx.2xx,.3xx.4xx.5xx的响应数 ...

  8. WebRTC 传输安全机制第二话:深入显出 SRTP 协议

    通过 DTLS 协商后,RTC 通信的双方完成 MasterKey 和 MasterSalt 的协商.接下来,我们继续分析在 WebRTC 中,如何使用交换的密钥,来对 RTP 和 RTCP 进行加密 ...

  9. 微信小程序 -- 基于 movable-view 实现拖拽排序

    微信小程序 -- 基于 movable-view 实现拖拽排序 项目基于colorui样式组件 ColorUI组件库 (color-ui.com) 1.实现效果 2. 设计思路 movable-vie ...

  10. opencv——import导包出现错误

    原因:编辑器找不到,CV2的模块,也就是导入这个模块失败: 原因可能是sublime找不到这个这个模块的位置,不知道这个包在哪里,这时候需要我们安装OpenCV的一个扩展包. 解决步骤: ①:找到py ...