国庆训练开始
由于部分原因,在家和队友做了训练,第一场,由于新疆icpc因19大推迟,使我们又多了大量时间,那么就开始吧。
其实这场感觉还不错,单人作战组队赛,4题,险些5题收场,还可以吧
首先看了前四题,发现并不是很可以做,于是,突然发现签到题在倒数第二题,赶快a了,跟一波步伐
J. Jumbled Compass
思路:纯粹的签到题,指针转法,顺时针逆时针比较一下大小就好了,注意一下度数取模,ac
#include
#include
#include
#include
#include
#include
G. Game Rank
思路:典型的细节模拟题,读清题,把题中每一个细节都考虑到就可以了
1.胜升败降
2.超分升级,负分降级
3.传奇不降
4.一星不降
5.六阶下三连胜加成
最后注意条件4零分时特判一下,并且传奇单独输出就好了
#include
#include
#include
#include
#include
#include
E. Exponial
思路:阶乘级幂指数运算,看了一眼直接飙飞的大数,毫无以为降幂公式咯
降幂公式,肯定不能是三角降幂,想到费马小定理降幂A^x%p=A^(x%(p-1))%p
这里要求p是素数,成立,然而,这里的模数显然过大了,还是不可做
于是想到欧拉降幂A^x%p=A^(x%ψ(p)+ψ(p))%p,这里ψ(p)为p的欧拉函数,这里欧拉函数就比较小了,完全是个可行的方案
这里的条件为x>ψ(p),那么分类讨论一下就好了,按样例中的5作为分界
然后最后一个问题,这里的n高达1e9,如果直接循环的话肯定会tle,然而其实可以发现一个小诀窍
exponial(n) %p= n^(exponial(n-1))%p;
再用欧拉降幂
exponial(n) %p=n^(exponial(n-1))%p=n^(exponial(n-1)%ψ(p)+ψ(p))%p
exponial(n) %p=F(exponial(n-1)%ψ(p))
F函数可以用快速幂算
于是,便可以递归了,偶然间发现,当模数即ψ(p)=1时,exponial(n-1)%ψ(p)=0,由于欧拉函数下降速度还是比较快的,于是这个大剪枝就完全可以将O(1e9)的复杂度降下了了,成功ac
#include
#include
#include
#include
#include
#include
D. Daydreaming Stockbroker
思路:最后一题,又是个水题,本来以为会是个dp,后来发现并没有这么复杂,低价买,高价卖,模拟一遍就ok了
#include
#include
#include
#include
#include
#include
F. Fleecing the Raffle
思路:这题是后来补的,一开始队友做崩了,以为要高精度什么的,后来发现其实并不需要这么麻烦
就是一个排列组合公式C(1,k)*C(p-1,n)/C(p,n+k)
对于k,一开始想写个三分,后来找规律可以发现k=n / (p-1),向下取整
化简发现,分子分母刚好都有k项
分子为p*k*π(n-p+i),i=2~k
分母为(n+1)*π(n+i),i=2~k
于是写个循环,成功
#include
#include
#include
#include
#include
#include
文章地址:http://blog.csdn.net/owen_q/article/details/78177706