tg 28 题解

T1

std::pow(n,1.0/m);即可
二分答案亦可但是注意精度
签到题

T2

一道数学题
赛时会\(x=3\)的做法,答案为\(\large\frac{2^{2^x}+1}{2^{2^x}-1}\)
有了\(40pts\)先跑个路
赛后来自\(\color\black{z}\color \red {asdcn}\)的正解:

\[\large f(x)=\frac{a}{b}\to \large f(f(x))=\frac{a_1}{b_1}=\frac{\frac{a}{b}+\frac{b}{a}}{2}=\frac{a^2+b^2}{2ab} \]

于是对应相等:

\[\large a_1=a^2+b^2\space\space b_1=2ab \]

于是:

\[\large a_1+b_1=(a+b)^2\space\space (a_1-b_1)=(a-b)^2 \]

这个对于任意的下标都成立,于是:

\[\large a_{last}+b_{last}=(a+b)^{2 ^{(n-1)}} a_{last}-b_{last}=(a-b)^{2 ^{(n-1)}} \]

初值\(a=x,b=1\),\(2^{(n-1)}\pmod {1e9+7}\)用欧拉定理搞掉就好了
关键的式子是通过构造一个\(\frac{a}{b}\)实现的,以后可以学着用

T3

两个关键步骤想出来了
一个是更优条件,一个是排序
还有就是把赛时想出来的第三个东西加上就直接\(40pts\to 90pts\)
但是排序赛时还是不太会,其实实际上用时间排序就好了
然后就是决策单调性的闪亮登场了:
首先显然的选的工厂集合有:\(\exist i,j, p_i>p_j\to \forall d_i<d_j\)
于是排序就按时间从小到大排序,保留当前时间内价格最小的决策点
同理,对于商店:\(\exist i,j, q_i<q_j\to \forall e_i>e_j\)
还是时间从小到大排序,保留最大价格
然后再找一遍决策点,单调栈维护上述性质
于是这样所有可能更优的决策点就有了,剩下的不用管
(其实上述剪枝完暴力就有了\(90pts\)),
(感觉搬题人搬/造的数据不够强没把最强的那\(10\)组拿出来)
考虑这样一个事:
对于一个商店\(i\),如果对于工厂\(j,k,k>j\)并且\(k\)优于\(j\)
显然会有这个式子成立:

\[(q_i-p_k)(e_i-d_k)>(q_i-p_j)(e_i-d_j) \]

开搞:

\[q_i(d_k-d_j)+e_i(p_k-p_j)<p_kd_k-p_jd_j \]

这个时候根据前面维护的性质
\(q_i\)向后转移不断增大,但是\(e_i\)不断减小,
注意到\(d_k-d_j<0,p_k-p_j>0\)
于是不等式左边单调递减,\(k\)一旦优于\(j\)就一直优于\(j\)

决策单调性可以搞分治
当在\([l,r]\)选商店时,在\([L,R]\)取遍工厂找对于\(\frac{l+r}{2}\)的最优决策\(b\)
然后对于\([mid,r]\),最优决策是\([b,R]\)中,
对于\([l,mid]\),最优决策会是在\([L,b]\)

但是还有一点可以优化的就是
如果对于一个商店,没有任何的工厂是这个商店的一个可能最优决策
就直接踢了这个商店了,因为不能更新答案

注意开long long
#define int long long 价值\(100pts\)
然后就是如果商店的任意参数小于工厂必须continue;
赛时天真的以为"负负得正"不会更新最大值然后各种拍出锅

T4

仙姑

posted @ 2022-08-14 10:22  2K22  阅读(57)  评论(0)    收藏  举报