【多校】2019 Multi-University Training Contest 1官方题解
Blank
定义dp[i][j][k][t]dp[i][j][k][t]dp[i][j][k][t]代表填完前ttt个位置后,{0,1,2,3}\{0,1,2,3\}{0,1,2,3}这4个数字最后一次出现的位置,排序后为i,j,k,t(i<j<k<t)i,j,k,t(i<j<k<t)i,j,k,t(i<j<k<t)的方案数目,则按照第t+1t+1t+1位的数字的四种选择,可以得到四种转移。
对于限制可以按照限制区间的右端点分类,求出dp[i][j][k][t]dp[i][j][k][t]dp[i][j][k][t]后,找到所有以ttt为区间右端点的限制条件,如果当前状态不满足所有限制条件则不合法,不再向后转移。
总时间复杂度O(n4)O(n^4)O(n4)。滚动一维,空间复杂度O(n3)O(n^3)O(n3)
UPD 一开始的模数为109+710^9+7109+7,后来统一改成了998244353998244353998244353,但最后在polygon上生成数据的时候标程放错了,就跑出了模109+710^9+7109+7的结果。对被这道题卡了的大佬们表示歉意!
Operation
暴力的做法可以用数据结构维护区间线性基,但肯定过不了。
贪心地维护序列的前缀线性基(上三角形态),对于每个线性基,将出现位置靠右的数字尽可能地放在高位,也就是说在插入新数字的时候,要同时记录对应位置上数字的出现位置,并且在找到可以插入的位置的时候,如果新数字比位置上原来的数字更靠右,就将该位置上原来的数字向低位推。
在求最大值的时候,从高位向低位遍历,如果该位上的数字出现在询问中区间左端点的右侧且可以使答案变大,就异或到答案里。
对于线性基的每一位,与它异或过的线性基更高位置上的数字肯定都出现在它右侧(否则它就会被插入在那个位置了),因此做法的正确性显然。
Milk
由于只能从上向下走,因此可以将行离散化,然后从上向下做背包。
记第iii行的牛奶数为cic_ici,则对于第iii行,求出在行内向左/右走喝1,2,...,ci1,2,...,c_i1,2,...,ci包牛奶并且回到/不回到行中点的最短时间,然后合并背包求出在第iii行内喝1,2,...,ci1,2,...,c_i1,2,...,ci包牛奶并且回到/不回到行中点的最短时间,然后和在前i−1i-1i−1行喝牛奶并回到中点的背包合并,求出在前iii行内喝1,2,...,k1,2,...,k1,2,...,k包牛奶并且回到/不回到行中点的最短时间,并用不回到中点的背包更新答案。每一行处理的复杂度为O(kci)O(kc_i)O(kci),因此总复杂度为O(k2)O(k^2)O(k2)。
注意对第一行要特殊处理。
Vacation
把第iii辆车追上第i+1i+1i+1辆车当作一个事件,显然只有nnn个事件,且第iii辆车追上第i+1i+1i+1辆车只可能会对第i−1i-1i−1辆车追上第iii辆车的时间产生影响,且时间一定是变小,因此可以维护车之间的距离和速度来计算事件发生时间,用堆来找出最早发生的事件,不停处理直到000车通过停车线。复杂度为O(nlogn)O(n\log n)O(nlogn)。
上述做法比较麻烦,可以直接二分最终时间,然后从第一辆车开始递推求出每辆车的最终位置。复杂度为O(nlogC)O(n\log C)O(nlogC),也可以过。
UPD 发现有很多大佬写了O(n)O(n)O(n)的做法,大概是这样:最终通过停止线的时候,一定是一个车后面堵着剩余所有的车,那么影响时间的就只有最前面这辆车,所以对于每一辆车,假设是它是和000车堵在一起的最靠前的一辆车,那么可以计算出一个值,所有的车的计算值的最大值就是答案。
Path
题意为给定一个有向图,删掉一条边的代价为边权,要求以尽可能少的总代价删掉一些边,使得最短路增加。
先求出最短路,然后保留所有满足dey−dex=ewd_{e_y}-d_{e_x}=e_wdey−dex=ew的边,对于新的图求111到nnn的最小割即为答案。
Typewriter
对于iii从小到大处理,维护使得s[j:i]∈s[1:j−1]s[j:i]\in s[1:j-1]s[j:i]∈s[1:j−1]的最小的jjj(s[l:r]s[l:r]s[l:r]表示子串slsl+1...srs_ls_{l+1}...s_{r}slsl+1...sr),那么记f[i]f[i]f[i]为输出前iii个字符的最小代价,则f[i]=min{f[i−1]+p,f[j−1]+q}f[i]=\min\{f[i-1]+p,f[j-1]+q\}f[i]=min{f[i−1]+p,f[j−1]+q}。
用SAM维护s[1:j−1]s[1:j-1]s[1:j−1],若s[1:j−1]s[1:j-1]s[1:j−1]中包含s[j:i+1]s[j:i+1]s[j:i+1],即加入第i+1i+1i+1个字符仍然能复制,就不需要做任何处理。否则,重复地将第jjj个字符加入后缀自动机并j=j+1j=j+1j=j+1,相应维护s[j:i+1]s[j:i+1]s[j:i+1]在后缀自动机上新的匹配位置,直到s[j,i+1]∈s[1,j−1]s[j,i+1]\in s[1,j-1]s[j,i+1]∈s[1,j−1]。
UPD 出题人的的程序跑了600+ms,验题人的程序跑了900+ms,也并没有特地优化时间……开这个时限本意就是卡掉非线性的做法,但是目测误伤了很多写线性做法的大佬,非常抱歉!
Meteor
题意为求分子分母均小于等于某个值nnn的第kkk大的最简分数。
首先考虑二分一个值kkk,求出小于这个值的分子分母≤n\le n≤n的最简分数个数,即为:
∑i=1n∑j=1⌊ki⌋[(i,j)=1]=∑i=1n∑j=1⌊ki⌋∑d∣i,d∣jμ(d)=∑dμ(d)∑i=1⌊nd⌋⌊ki⌋
\begin{aligned}
&\sum_{i=1}^n\sum_{j=1}^{\lfloor ki \rfloor}[(i,j)=1]\\
=&\sum_{i=1}^n\sum_{j=1}^{\lfloor ki \rfloor}\sum_{d|i,d|j}\mu(d)\\
=&\sum_{d} \mu(d)\sum_{i=1}^{\lfloor \frac {n}{d}\rfloor}\lfloor {ki}\rfloor
\end{aligned}
==i=1∑nj=1∑⌊ki⌋[(i,j)=1]i=1∑nj=1∑⌊ki⌋d∣i,d∣j∑μ(d)d∑μ(d)i=1∑⌊dn⌋⌊ki⌋
二分的时候写分数二分,二分O(logn)O(\log n)O(logn)次就可以收敛到仅包含一个符合条件的分数的区间。最后在Stern-Brocot Tree上遍历,求出≥\ge≥左端点lll且满足条件的最小的符合条件的分数即为答案。
在分数二分之后,kkk变成ab\frac abba的形式,因此后半和式就可以用类欧几里得来算。
二分的部分复杂度为O(nlognlogC)O(\sqrt n\log n\log C)O(nlognlogC)(CCC代表二分出的分子分母的值),然后在树上遍历求答案的复杂度为O(n)O(n)O(n)(在所求答案为1n\frac 1nn1时可以取到上界)。
Desert
对于一个有根仙人掌,去掉根之后的每个连通块都会是许多有根仙人掌串起来的一个“序列”,且互为对称的两个序列被认为相同。例如:
[外链图片转存失败(img-rckZimCt-1563840303961)(.\so.png)]
从这个角度考虑,令ana_nan表示nnn个点的有根仙人掌数目,bnb_nbn表示nnn个点的“仙人掌序列(互为对称的两个序列视为不同)”的个数,cnc_ncn 表示共有 nnn 个点并由奇数个仙人掌组成的“回文仙人掌序列”的个数,dnd_ndn表示共有nnn个点的“仙人掌序列(互为对称的仙人掌序列视为相同)”的个数,则b,c,db,c,db,c,d 的求法容易得到:
{bn=an+∑i=1n−1aibn−icn=an+∑i=1⌊n/2⌋aicn−2idn=12(bn+cn+[2∣n]bn/2)
\left\{
\begin{aligned}
b_n &= a_n + \sum_{i=1}^{n-1} a_i b_{n-i}\\
c_n &= a_n + \sum_{i=1}^{\lfloor n/2\rfloor} a_i c_{n-2i}\\
d_n &= \frac12 \left(b_n + c_n + [2|n] b_{n/2} \right)\\
\end{aligned}
\right.
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧bncndn=an+i=1∑n−1aibn−i=an+i=1∑⌊n/2⌋aicn−2i=21(bn+cn+[2∣n]bn/2)
而按照前面的分析,ana_nan就是由n−1n-1n−1个点组成若干个“仙人掌序列(互为对称的仙人掌序列视为相同)”的方案数。因此
∑nanxn=x∏i=1∞∏j=1di∑k=0∞xik
\sum_n a_nx^n=x\prod_{i=1}^{\infty}\prod_{j=1}^{d_i}\sum_{k=0}^{\infty}x^{ik}
n∑anxn=xi=1∏∞j=1∏dik=0∑∞xik
枚举 (i,j)(i,j)(i,j) 表示枚举一种序列,kkk 表示这种序列的个数。等式右边的乘积展开之后每项即为若干个 xikx^{ik}xik 的乘积,表示某种 iii 个点的仙人掌序列选了 kkk 个。
对这个等式进行处理:
∑nanxn=x∏i=1∞∏j=1di∑k=0∞xik⇔∑nanxn−1=∏i=1∞1(1−xi)di⇔ln∑nanxn−1=∑i=1∞ln1(1−xi)di=∑i=1∞di∑j=1∞xijj⇔ddxln∑nanxn−1=∑i=1∞idi∑j=1∞xij−1⇔∑n>1(n−1)anxn−2=(∑nanxn−1)(∑i=1∞idi∑j=1∞xij−1)⇔∑n>1(n−1)anxn=(∑nanxn)(∑i=1∞idi∑j=1∞xij)⇔∑n>1(n−1)anxn=(∑nanxn)(∑i=1∞xi∑j∣ijdj)
\begin{aligned}
\sum_n a_nx^n&=x\prod_{i=1}^{\infty}\prod_{j=1}^{d_i}\sum_{k=0}^{\infty}x^{ik}\\
\Leftrightarrow\sum_n a_nx^{n-1}&=\prod_{i=1}^{\infty}\frac1{(1-x^i)^{d_i}}\\
\Leftrightarrow\ln\sum_n a_nx^{n-1}&=\sum_{i=1}^{\infty}\ln\frac1{(1-x^i)^{d_i}}=\sum_{i=1}^{\infty}d_i\sum_{j=1}^{\infty}\frac{x^{ij}}j\\
\Leftrightarrow\frac{\rm d}{{\rm d}x}\ln\sum_n a_nx^{n-1}&=\sum_{i=1}^{\infty}id_i\sum_{j=1}^{\infty}x^{ij-1}\\
\Leftrightarrow\sum_{n>1} (n-1)a_nx^{n-2}&=\left(\sum_n a_nx^{n-1}\right)\left(\sum_{i=1}^{\infty}id_i\sum_{j=1}^{\infty}x^{ij-1}\right)\\
\Leftrightarrow\sum_{n>1} (n-1)a_nx^n&=\left(\sum_n a_nx^n\right)\left(\sum_{i=1}^{\infty}id_i\sum_{j=1}^{\infty}x^{ij}\right)\\
\Leftrightarrow\sum_{n>1} (n-1)a_nx^n&=\left(\sum_n a_nx^n\right)\left(\sum_{i=1}^{\infty}x^i\sum_{j|i}jd_j\right)\\
\end{aligned}
n∑anxn⇔n∑anxn−1⇔lnn∑anxn−1⇔dxdlnn∑anxn−1⇔n>1∑(n−1)anxn−2⇔n>1∑(n−1)anxn⇔n>1∑(n−1)anxn=xi=1∏∞j=1∏dik=0∑∞xik=i=1∏∞(1−xi)di1=i=1∑∞ln(1−xi)di1=i=1∑∞dij=1∑∞jxij=i=1∑∞idij=1∑∞xij−1=(n∑anxn−1)(i=1∑∞idij=1∑∞xij−1)=(n∑anxn)(i=1∑∞idij=1∑∞xij)=(n∑anxn)⎝⎛i=1∑∞xij∣i∑jdj⎠⎞
令左右两边对应项系数相等即可以得到ana_nan 的递推式:
an=[n=1]+[n>1]1n−1∑i=1n−1(∑j∣ijdj)an−i
a_n = [n=1] + [n>1]\frac1{n-1} \sum_{i=1}^{n-1} \left(\sum_{j|i} j d_j \right) a_{n-i}\\
an=[n=1]+[n>1]n−11i=1∑n−1⎝⎛j∣i∑jdj⎠⎞an−i
分治FFT求出a,b,c,da,b,c,da,b,c,d即可。
String
一位位地构造答案字符串,每次贪心地加能加入的最小的字符(判断能否加入只要判断加入之后原字符串剩下的后缀中的每种字符的数目能否足够满足条件)。
Kingdom
记前序序列为a[]a[]a[],中序序列为b[]b[]b[]。首先考虑到,如果一个数既没有在a[]a[]a[]中出现也没有在b[]b[]b[]中出现,那么说明当所有出现过的数确定之后,它放在任何一个位置上都可以。
再来考虑出现过的数,显然如果树的形态确定了,那么这些数的位置一定确定了。定义 f[x][l][r]f[x][l][r]f[x][l][r] 为 a[x]a[x]a[x]做根,对应的子树为 b[]b[]b[]中的 [l,r][l, r][l,r] 区间,有多少不同的树的形态。如果一个数仅在 a[]a[]a[] 或 b[]b[]b[] 中出现过,那么它可以和 000 对应。否则,需要把它在两个序列中的位置对应。在区间 DPDPDP 划分区间的时候考虑这些数出现的合法性再转移即可。
最后,假如有 kkk 个数既没有出现在 a[]a[]a[]中也没有出现在b[]b[]b[]中,那么答案即为 f[1][1][n]⋅k!f[1][1][n] \cdot k!f[1][1][n]⋅k!
另外,对于每个状态(x,l,r)(x,l,r)(x,l,r),可以推得这种状态中有多少个对位置可以随意确定,那么可以在转移的过程中乘一个组合数,相当于把空位可以填的数字分给两个子区间,这样可以直接求出最终的答案。
由于非法状态比较多,写记忆化搜索跑的比较快。
Function
∑i=1ngcd(⌊i3⌋,i)=∑a=1⌊n3⌋∑i=1ngcd(a,i)[⌊i3⌋=a]\begin{aligned}
&\sum_{i=1}^n\gcd(\lfloor{\sqrt[3]{i}}\rfloor,i)\\
=&\sum_{a=1}^{\lfloor{\sqrt[3]{n}}\rfloor}\sum_{i=1}^n\gcd(a,i)
[\lfloor\sqrt[3]{i}\rfloor=a]
\end{aligned}=i=1∑ngcd(⌊3i⌋,i)a=1∑⌊3n⌋i=1∑ngcd(a,i)[⌊3i⌋=a]
又有
⌊i3⌋=a⇔a≤i3<a+1⇔a3≤i≤(a+1)3−1\lfloor \sqrt[3]i\rfloor=a\Leftrightarrow a\le \sqrt[3]i< a+1\Leftrightarrow a^3\le i\le (a+1)^3-1⌊3i⌋=a⇔a≤3i<a+1⇔a3≤i≤(a+1)3−1
因此
∑i=1ngcd(a,i)[⌊i3⌋=a]=∑i=a3min{n,(a+1)3−1}gcd(a,i)\begin{aligned}
&\sum_{i=1}^n\gcd(a,i)[\lfloor\sqrt[3]{i}\rfloor=a]\\
=&\sum_{i=a^3}^{\min \left\{n,(a+1)^3-1\right\}}\gcd(a,i)
\end{aligned}=i=1∑ngcd(a,i)[⌊3i⌋=a]i=a3∑min{n,(a+1)3−1}gcd(a,i)
设r=⌊n3⌋−1r=\lfloor\sqrt[3]{n}\rfloor-1r=⌊3n⌋−1,则带回原式子
∑i=1ngcd(⌊i3⌋,i)=∑i=⌊n3⌋3ngcd(⌊n3⌋,i)+∑a=1r∑i=a(a+1)3−1gcd(a,i)\begin{aligned}
&\sum_{i=1}^n\gcd(\lfloor{\sqrt[3]{i}}\rfloor,i)\\
=&\sum_{i=\lfloor\sqrt[3]{n}\rfloor^3}^n\gcd(\lfloor\sqrt[3]{n}\rfloor,i)+\sum_{a=1}^{r}\sum_{i=a}^{(a+1)^3-1}\gcd(a,i)
\end{aligned}=i=1∑ngcd(⌊3i⌋,i)i=⌊3n⌋3∑ngcd(⌊3n⌋,i)+a=1∑ri=a∑(a+1)3−1gcd(a,i)
而
∑i=1ngcd(a,i)=∑dd∑i=1n[gcd(a,i)=d]=∑dd∑t∣id,t∣adμ(t)=∑T∣a⌊nT⌋∑d∣Tdμ(Td)\begin{aligned}
&\sum_{i=1}^n\gcd(a,i)\\
=&\sum_dd\sum_{i=1}^n[\gcd(a,i)=d]\\
=&\sum_dd\sum_{t|\frac id,t|\frac ad}\mu(t)\\
=&\sum_{T|a}\lfloor\frac nT\rfloor\sum_{d|T}d\mu(\frac Td)
\end{aligned}===i=1∑ngcd(a,i)d∑di=1∑n[gcd(a,i)=d]d∑dt∣di,t∣da∑μ(t)T∣a∑⌊Tn⌋d∣T∑dμ(dT)
注意∑d∣Tdμ(Td)=φ(T)\sum_{d|T}d\mu(\frac Td)=\varphi(T)∑d∣Tdμ(dT)=φ(T),则O(n3)O(\sqrt [3]n )O(3n)预处理φ(T)\varphi(T)φ(T)之后,答案式子中的第一个和式可以O(n6)O(\sqrt[6]n)O(6n)地计算出来。
第二个和式可以化为
∑a=1r∑T∣a(⌊(a+1)3−1T⌋−⌊a3−1T⌋)φ(T)=∑Tφ(T)∑b=1⌊rT⌋(⌊(bT+1)3−1T⌋−⌊(bT)3−1T⌋)\begin{aligned}
&\sum_{a=1}^{r}\sum_{T|a}(\lfloor\frac {(a+1)^3-1}T\rfloor-\lfloor\frac {a^3-1}T\rfloor)\varphi(T)\\
=&\sum_{T}\varphi(T)\sum_{b=1}^{\lfloor\frac {r}T\rfloor}(\lfloor\frac {(bT+1)^3-1}T\rfloor-\lfloor\frac {(bT)^3-1}T\rfloor)\\
\end{aligned}=a=1∑rT∣a∑(⌊T(a+1)3−1⌋−⌊Ta3−1⌋)φ(T)T∑φ(T)b=1∑⌊Tr⌋(⌊T(bT+1)3−1⌋−⌊T(bT)3−1⌋)
而
⌊(bT+1)3−1T⌋−⌊(bT)3−1T⌋=⌊b3T2+3b2T+3b⌋−⌊b3T2−1T⌋=3Tb2+3b+1\begin{aligned}
&\lfloor\frac {(bT+1)^3-1}T\rfloor-\lfloor\frac {(bT)^3-1}T\rfloor\\
=&\lfloor b^3T^2+3b^2T+3b\rfloor-\lfloor b^3T^2-\frac 1T \rfloor\\
=&3Tb^2+3b+1
\end{aligned}==⌊T(bT+1)3−1⌋−⌊T(bT)3−1⌋⌊b3T2+3b2T+3b⌋−⌊b3T2−T1⌋3Tb2+3b+1
因此
∑a=1r∑i=a(a+1)3−1gcd(a,i)=∑T=1rφ(T)[(3T∑b=1⌊rT⌋b2)+(3∑b=1⌊rT⌋b)+⌊rT⌋]\begin{aligned}
&\sum_{a=1}^{r}\sum_{i=a}^{(a+1)^3-1}\gcd(a,i)\\
=&\sum_{T=1}^r\varphi(T)[(3T\sum_{b=1}^{\lfloor\frac {r}T\rfloor}b^2)+(3\sum_{b=1}^{\lfloor\frac {r}T\rfloor}b)+\lfloor\frac {r}T\rfloor]\\
\end{aligned}=a=1∑ri=a∑(a+1)3−1gcd(a,i)T=1∑rφ(T)[(3Tb=1∑⌊Tr⌋b2)+(3b=1∑⌊Tr⌋b)+⌊Tr⌋]
可以O(n3)O(\sqrt[3]n)O(3n)求出。
总复杂度O(Tn3)O(T\sqrt [3]n)O(T3n)。
nnn比较小的情况可能会出问题,注意要适当特判。也有其它的算法,只要是线性应该都是能过的。把n3\sqrt[3]n3n出到10710^7107是为了卡非线性做法。
Sequence
令bi=∑j=i−k⋅xaj(0≤x,1≤j≤i)b_i=\sum_{j=i-k\cdot x}a_j(0\le x,1\le j\le i)bi=∑j=i−k⋅xaj(0≤x,1≤j≤i),则∑bixi=(∑aixi)(∑xik)\sum b_i x^i=(\sum a_i x^i)(\sum x^{ik})∑bixi=(∑aixi)(∑xik),因此操作的顺序没有影响,可以统计各类操作次数,然后批量处理,也就是∑xik\sum x^{ik}∑xik的幂。
由于n,mn,mn,m比较大,直接做快速幂或者ln+exp\ln+\expln+exp大概会TTT,但是(∑xik)n=∑(n−1+ii)xik(\sum x^{ik})^n=\sum\binom {n-1+i}{i}x^{ik}(∑xik)n=∑(in−1+i)xik,因此可以省掉求幂,对于一种操作只做一次卷积即可。
Code
d=2d=2d=2时,f(x)=sign(wT⋅x)=w0+w1x1+w2x2f(\boldsymbol{x})={\rm sign}(\boldsymbol{w^T\cdot x})=w_0+w_1x_1+w_2x_2f(x)=sign(wT⋅x)=w0+w1x1+w2x2,f(x)=0f(\boldsymbol{x})=0f(x)=0对应于二维平面上的一条直线,直线一侧的点取值为 111,直线另一侧的取值为 −1-1−1。故该问题等价于能否找到一条直线将平面上的两类点分开,等价于判断这两类点分别组成的两个凸包是否相交。
【多校】2019 Multi-University Training Contest 1官方题解的更多相关文章
- 2015多校联合训练赛 Training Contest 4 1008
构造题: 比赛的时候只想到:前面一样的数,后面 是类似1,2,3,4,5,6....t这 既是:t+1,t+1...,1,2,3,...t t+1的数目 可能 很多, 题解时YY出一个N 然后对N ...
- 2019 Nowcoder Multi-University Training Contest 4 E Explorer
线段树分治. 把size看成时间,相当于时间 $l$ 加入这条边,时间 $r+1$ 删除这条边. 注意把左右端点的关系. #include <bits/stdc++.h> ; int X[ ...
- 2019 Nowcoder Multi-University Training Contest 1 H-XOR
由于每个元素贡献是线性的,那么等价于求每个元素出现在多少个异或和为$0$的子集内.因为是任意元素可以去异或,那么自然想到线性基.先对整个集合A求一遍线性基,设为$R$,假设$R$中元素个数为$r$,那 ...
- 2016 Multi-University Training Contest 1 部分题解
第一场多校,出了一题,,没有挂零还算欣慰. 1001,求最小生成树和,确定了最小生成树后任意两点间的距离的最小数学期望.当时就有点矛盾,为什么是求最小的数学期望以及为什么题目给了每条边都不相等的条件. ...
- 2018 Multi-University Training Contest - Team 1 题解
Solved A HDU 6298 Maximum Multiple Solved B HDU 6299 Balanced Sequence Solved C HDU 6300 Triangle Pa ...
- 2018 Multi-University Training Contest 3(部分题解)
Problem F. Grab The Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Ja ...
- 2018 Multi-University Training Contest 2(部分题解)
Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 2018 Multi-University Training Contest 1(部分题解)
Maximum Multiple Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 2016 Multi-University Training Contest 3 部分题解
1001,只要枚举区间即可.签到题,要注意的是输入0的话也是“TAT”.不过今天补题的时候却WA了好几次,觉得奇怪.原来出现在判断条件那里,x是一个int64类型的变量,在进行(x<65536* ...
随机推荐
- DJI大疆创新招聘-自动化测试工程师
工作地点:深圳 简历发送:sue.li@dji.com 工作职责: 1. 参与自动化测试的设计和开发,参与需求分析和评审,评估合理性和完备性: 任职资格: 1. 本科及以上学历,计算机或软件工程相关专 ...
- Spring Boot2.x 动态数据源配置
原文链接: Spring Boot2.x 动态数据源配置 基于 Spring Boot 2.x.Spring Data JPA.druid.mysql 的动态数据源配置Demo,适合用于数据库的读写分 ...
- CSS——NO.9(颜色值和长度值)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- 提权篇之简单介绍和exp利用过程
正文开始.... 提权的方法有很多种,因为一开始我入门的时候是看的小迪的网络教程,当然也推荐大家去看小迪的教程,或者直接小迪的实地培训班.这个可没什么利益关系,我认识他,他可不认识我,,但是我是在网上 ...
- FC及BFC
1.什么是FC 2.BFC块级格式化上下文(Block formatting context) Box 是 CSS 布局的对象和基本单位, 直观点来说,就是一个页面是由很多个 Box 组成的.元素的类 ...
- CSS实现响应式布局
用CSS实现响应式布局 响应式布局感觉很高大上,很难,但实际上只用CSS也能实现响应式布局要用的就是CSS中的没接查询,下面就介绍一下怎么运用: 使用@media 的三种方法 1.直接在CSS文件中使 ...
- Python-PhantomJS的安装和使用
PhantomJS无需浏览器的Web测试: PhantomJS官网下载地址:https://phantomjs.org/download.html 下载PhantomJS zip文件,解压放置在D:\ ...
- 读《Java并发编程的艺术》学习笔记(二)
第2章 Java并发机制的底层实现原理 Java代码在编译后变成字节码,字节码被类加载器加载到JVM中,JVM执行字节码,最终转换为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实 ...
- 基于Unix Socket的可靠Node.js HTTP代理实现(支持WebSocket协议)
实现代理服务,最常见的便是代理服务器代理相应的协议体请求源站,并将响应从源站转发给客户端.而在本文的场景中,代理服务及源服务采用相同技术栈(Node.js),源服务是由代理服务fork出的业务服务(如 ...
- 微信小程序用setData修改数组或对象中的一个属性值,超好用,最简单的实现方法,不容错过!大神们 都 在 看 的方法!!!
在page中 data: { info: [{ name: "yuki", tou: "../img/head.jpg", zGong: 130, gMoney ...