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\n",ans+1);
50 }
51 }
道理一樣,復雜度玄學。
B. 天才紳士少女助手克里斯蒂娜
把柿子化簡一下。
發現可以用樹狀數組維護。
一定要先把柿子化簡到復雜度正常再用數據結構維護。
(喵了個b考場上死活只能打出$qn$)
C. 鳳凰院凶真
藍皮原題。
可憐的我連狀態定義都記不住了。
$f[i][j]$表示$a$序列考慮到$i$,$b$序列考慮到$j$且$b[j]$必選的最大長度。
轉移就很簡單了。(一個值域小的數據誤了我離散化???
再考慮方案。
其實記一個前驅就好了。
我是循環看了一下每一個$i$的前驅是不是當前的那一個。
是就壓棧,前驅賦為前驅的前驅,繼續循環。
還是干巴爹吧。——來自垃圾的掙扎。