csp-s模拟测试60

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 }
View Code

道理一样,复杂度玄学。

 

 B. 天才绅士少女助手克里斯蒂娜

把柿子化简一下。

发现可以用树状数组维护。

一定要先把柿子化简到复杂度正常再用数据结构维护。

(喵了个b考场上死活只能打出$qn$)

 

 C. 凤凰院凶真

蓝皮原题。

可怜的我连状态定义都记不住了。

$f[i][j]$表示$a$序列考虑到$i$,$b$序列考虑到$j$且$b[j]$必选的最大长度。

转移就很简单了。(一个值域小的数据误了我离散化???

再考虑方案。

其实记一个前驱就好了。

我是循环看了一下每一个$i$的前驱是不是当前的那一个。

是就压栈,前驱赋为前驱的前驱,继续循环。

还是干巴爹吧。——来自垃圾的挣扎。

猜你喜欢

转载自www.cnblogs.com/bilibiliSmily/p/11624817.html