首页 > 其他分享 > 补题报告之S班暑训第四场

补题报告之S班暑训第四场

时间:2023-08-08 20:34:46浏览次数:48  
标签:取模 code 第四场 题意 text mid 补题 题解 暑训

成绩

image

比赛经过

先看了 \(\text{A}\) 题,想到随机取模,但是,我竟然不知道高精度怎么取模??于是就和正解失之交臂了。至于为啥会有 \(83\) 分,我只能说数据太水了,\(\text{FFT}\) 写高精就超时了一个点 \(\dots\)。

看了 \(\text{B}\) 题,想了 \(10\) 分钟左右写出来方程,\(5\) 分钟左右证明单调性,\(5\) 分钟左右写代码(顺便证了一下样例里的那个非根式解)。

\(\text{C}\) 题,看到强制在线,就放弃莫队的了。然后前缀异或和的性质分析出来后,写了一个 \(\text{DP}\)(因为我不会可持久化 \(\text{01trie}\dots\)),然后继续换题。

\(\text{D}\) 题,可以转化为二分图上的动态问题,暴力没时间写了,直接二选一随机输出。奇妙的是,我过了一个点 \(\dots\)。

顺序:\(\text{A}\),\(\text{B}\),\(\text{A}\),\(\text{C}\),\(\text{A}\),\(\text{D}\)。

赛后补题+分析

\(\text{A}\) calculate

简要/形式化题意

高精度数 \(a\),\(b\),\(c\),判定 \(a \times b\) 是否等于 \(c\)。

题解

随机一个模数,对三个数分别取模当做哈希的数值,判断哈希后是否满足上面那个式子就好了,错误的概率很小,当然也可以多取几个随机模数。

AC code

为啥超时嘞?

\(\text{B}\) cylinder

简要/形式化题意

底面积为 \(1\),高为 \(1\) 的圆柱形盒子装有体积为 \(V\) 的水,将底面积为 \(1\),高为 \(1\) 的圆锥倒着插入到盒子里,求水此时的高度。

题解

利用小学知识可以列出方程。\(h-\dfrac{h^3}{3}=V\)。左边这个东西求个导就知道他在 \([0,1]\) 上是单调递增的,二分就好了。

AC code

#include<bits/stdc++.h>
using namespace std;
const double eps=1e-8;
int T;
double V;
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>T;
	while(T--) {
		cin>>V;
		double l=0.0,r=1.0;
		while(r-l>=eps) {
			double mid=(l+r)/2;
			if(mid-mid*mid*mid/3<=V) l=mid;
			else r=mid;
		}
		cout<<fixed<<setprecision(6)<<l<<endl;
	}
	return 0;
}

\(\text{C}\) xor

简要/形式化题意

区间最大异或子串问题,强制在线。

题解

首先我们可以用可持久化 \(\text{01trie}\) 做到 \(O(n^2 \log V)\)。

当然我们也可以预处理,直接 \(\text{DP}\) 就好了,做到了 \(O(n^3)\),单词 \(O(1)\)。

没错,我们只要用分块平衡两者的复杂度就好了,复杂度 \(O(n\sqrt{n}\log V)\),可以过。

AC code

咕咕咕

\(\text{D}\) massage

简要/形式化题意

平面上动态加删点,判断是否存在一个各边平行与网格的多边形。

题解

将加点和删点看做,加了一条行到列的边,和删去,问题转变为一个判环的问题。动态的话,考虑离线做线段树分治(陌生的领域)。

AC code

咕咕咕

考后反思

首先一个是知识点的缺漏(但是提高组会考可持久化?)。然后就是高精度取模这种东西,算是一个小技巧吧。

结尾

咋会出现这么多没学过的知识点捏?

标签:取模,code,第四场,题意,text,mid,补题,题解,暑训
From: https://www.cnblogs.com/2021hych/p/17615302.html

相关文章

  • 2023牛客+杭电补题和总结记录(后半)
    前半继续写要被编辑器卡飞了,换个档杭电第六场\(1002.Pair\Sum\and\Perfect\Square\)对于每个位置可以求出该位置的数和哪些位置的数能够组成完全平方数,因为原序列是排列,并且完全平方数个数不多,所以预处理的复杂度不高。(也可以在后续统计过程中处理)处理出点对以后就变成了......
  • 暑假补题记5
     题意:就是给你一个数列,让你找出可以组成等差数列的最多元素有多少个 正解: 题解:直接暴力,枚举d,然后二分查找,注意这里要枝剪,减去已经有的最大值就行了#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<......
  • UNR #7 补题
    意识流题解。那些你不要的场上写了一个二分答案+栈模拟,实在是太蠢了!观察到每次一定会删一个奇数位的和一个偶数位的,最后只有一个奇数位的会保留下来,然后就完了。比特迷宫场上写了一个乱搞:每\(24\)个分一块,对于每块跑出一个最优解。然后把相差\(2^k\)的相同操作不断合并......
  • 暑假集训D11 2023.8.4 补题
    题意给定一个数组\(a\).询问区间\([l,r]\)是否可以分成\(k\)段,每一段的和都是\(2\)的倍数(偶数)考虑前缀和\(sum\),如果\(sum[i]-sum[j-1]\)是偶数,那么\([j,i]\)一定是\(1\)个合法的区间.因此对于询问\(l,r\),可以统计前缀和的值为偶数的个数,......
  • 暑假集训D10 2023.8.3 补题
    D.DnDDice给出分别有不同个数的\(4,6,8,12,20\)面骰子,\(k\)面骰子的每个面的点数分别是\(1~k\).问用上所有骰子能组合出来的情况的概率从大到小排序,如果有相同的可能性的情况,按任意顺序即可.\(\operatorname{Solution}\)可以将骰子两两合并,合并后的骰子大小为\([m......
  • 暑假集训D9 2023.8.2 补题
    A.「EZEC-10」排列排序给你一个长度为\(n\)的排列\(p_1,p_2,\cdots,p_n\)。你需要把它排序。每次可以花区间长度,即\(r-l+1\)的代价,选择排列中的任意一段区间\([l,r]\),并将\([l,r]\)从小到大排序。现在你可以让他进行若干次这个操作,直到\(p\)中元素的值从\(1\)到......
  • 暑假集训D8 2023.8.1 补题
    C.P3029[USACO11NOV]CowLineupS有\(n\)只牛,他们各自有自己的编号(不同牛的编号可能是相同的).这些牛站在不同的位置.现在需要给这些牛拍一张照.有如下要求选定一个范围内的牛拍照,这些牛需要包含所有出现过的编号照片的成本是这个范围,因此范围越小越好已经给定所有......
  • 补题报告之S班暑训第三场
    成绩比赛经过\(\text{A}\)看上去像一个贪心。由于不知道咋搞,胡出一个假的结论。\(x\)选手在别的榜单所在位置,之后的选手优先选,多个榜单,按照满足条件的榜单数量对每个选手排序。然后模拟。事实证明,他只有\(\text{50}\)分。\(\text{B}\)没理解样例咋来的,也不知道斜对角线的......
  • Codeforces Round 888 (Div. 3) 补题
    独立补了一道记忆化搜索的题,https://codeforces.com/contest/1851/problem/E由于初次接触对于使用场景和注意事项都不是很熟悉,写加调估计得有3h。本题的题面保证了本题是个无环图,允许dfs函数会有出口,存图不能用链式前向图,因为非常容易构造数据使得为稠密图,所以用二维数组或vec......
  • 暑假集训D6 2023.7.29 补题
    原比赛链接2022年华中科技大学程序设计新生赛(重现赛)官方题解华中科技大学2022新生赛(HUSTFCPC2022)题解&滚榜\(underset\)\(\underset{\sim}Λ\)\(\underset{\sim}{abcd}\)N.WalkAlone'sConjecture题意:给定一个整数\(n\),找出两个数\(x\)和\(y\),使得满足如下......