csp-s模拟测试60 2019-10-05
RT。
又颓又垃圾。
状态低迷,题都交不上去。
交了也是爆零,垃圾玩家没有什么可说的,就是垃圾。
A. 嘟嘟噜
$mlogn$的毒瘤做法。
贴一个不一样的毒瘤做法。
1 //ans=(ans+m)%i
2 #include <cstdio>
3 #include <cstring>
4 #include <iostream>
5 #include <algorithm>
6 #define re register
7 #define int long long
8 #define fup(i,a,b) for(re int i(a);i<=b;++i)
9 #define fdn(i,a,b) for(re int i(a);i>=b;--i)
10 using namespace std;
11 int T,n,m;
12 int R[100];
13 inline int read() {
14 re int x(0),f(1); re char ch(getchar());
15 while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
16 while(ch<='9'&&ch>='0') { x=(x<<3)+(x<<1)+(ch^48); ch=getchar(); }
17 return x*f;
18 }
19 main() {
20 fup(i,1,25) R[i]=R[i-1]+(1ll<<i-1);
21 T=read();
22 while(T --> 0) {
23 int ans=0;
24 n=read(),m=read();
25 fup(i,2,n)
26 {
27 if(ans+10000*m<i&&i+10000<=n)
28 {
29 ans+=10000*m;
30 i+=10000;
31 }
32 if(ans+1000*m<i&&i+1000<=n)
33 {
34 ans+=1000*m;
35 i+=1000;
36 }
37 if(ans+100*m<i&&i+100<=n)
38 {
39 ans+=100*m;
40 i+=100;
41 }
42 if(ans+10*m<i&&i+10<=n)
43 {
44 ans+=10*m;
45 i+=10;
46 }
47 ans=(ans+m)%i;
48 }
49 printf("%lld
",ans+1);
50 }
51 }
道理一样,复杂度玄学。
B. 天才绅士少女助手克里斯蒂娜
把柿子化简一下。
发现可以用树状数组维护。
一定要先把柿子化简到复杂度正常再用数据结构维护。
(喵了个b考场上死活只能打出$qn$)
C. 凤凰院凶真
蓝皮原题。
可怜的我连状态定义都记不住了。
$f[i][j]$表示$a$序列考虑到$i$,$b$序列考虑到$j$且$b[j]$必选的最大长度。
转移就很简单了。(一个值域小的数据误了我离散化???
再考虑方案。
其实记一个前驱就好了。
我是循环看了一下每一个$i$的前驱是不是当前的那一个。
是就压栈,前驱赋为前驱的前驱,继续循环。
还是干巴爹吧。——来自垃圾的挣扎。