Noip模拟47 2021.8.25
期望得分:55+24+53
实际得分:0+0+3
乐死
累加变量清零了吗?
打出更高的部分分暴力删了吗?
样例解释换行你看见了吗?
T1 Prime
打出55分做法没删原来的暴力,结果就轻松挂55分
考场上想到根号的预处理,但是并未想到如何进行映射
正解是先预处理$[1,\sqrt R]$中的类素数,然后标记他们在$[L,R]$间的倍数
剩下的就是答案
1 #include<bits/stdc++.h>
2 #define int long long
3 using namespace std;
4 namespace AE86{
5 inline int read(){
6 int x=0,f=1;char ch=getchar();
7 while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
8 while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;
9 }inline void write(int x,char opt='\n'){
10 char ch[20];int len=0;if(x<0)x=~x+1,putchar('-');
11 do{ch[len++]=x%10+(1<<5)+(1<<4);x/=10;}while(x);
12 for(int i=len-1;i>=0;--i)putchar(ch[i]);putchar(opt);}
13 }using namespace AE86;
14
15 const int NN=1e7+5;
16 int l,r,k,ans,fan;
17 int prime[NN],len;
18 bool vis[NN],tag[NN];
19 inline void getprime(int n){
20 for(int i=2;i<=n;++i){
21 if(!vis[i]) prime[++len]=i;
22 for(int j=1;prime[j]*i<=n&&j<=len&&prime[j]<=k;++j){
23 vis[prime[j]*i]=1;
24 if(prime[j]%i==0) break;
25 }
26 }
27 for(int i=1;i<=len;i++){
28 int j=ceil(1.0*l/prime[i]);
29 j=max(j,2ll);
30 while(j*prime[i]<=r){
31 tag[j*prime[i]-l]=1;
32 j++;
33 }
34 }
35 }
36 namespace WSN{
37 inline short main(){
38 l=read(); r=read(); k=read(); fan=min(k,(int)sqrt(r));
39 getprime(fan);
40 for(int i=l;i<=r;i++) if(!tag[i-l]) ans^=i;
41 write(ans);return 0;
42 return 0;
43 }
44 }
45 signed main(){return WSN::main();}
T2 Sequence
神仙的矩阵快速幂。
考虑设$dp_x$为子序列最后一个数是$x$的方案数,我们先$O(n)$预处理出前面$n$个的
$dp$值,将其按照先后出现的顺序升序排列构造出$k*1$的一个矩阵
考虑之后如何高效转移,发现向量矩阵里面的值转移时值大的会覆盖小的,那么方便转移应该将转移矩阵赋值为
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
1 1 1 1 1
0 0 0 0 1
这样可以满足方程式$dp_x=(\sum_{i=1}^{k}dp_i)+1$
复杂度$O(n+k^3logm)$应该懂我在表达什么(
T3 Omeed
可以转化$base=\sum p_i*A,comb=\sum p_i*(f_{i-1}+1)$ 其中$f_i$表示$comb_i$的期望
可以递推来求:$f_i=(f_{i-1}+1)*p_i+f_{i-1}*(1-p_i)$
线段树上分别维护关于$comb$的求解系数,单个$comb$的求解系数,比较麻烦
需要保证区间合并的时候,他的答案应该能用之前$f_{L-1}$配合$k,b$表示出
这一步需要稍微转化一波柿子
然而正常人敲出正解后应该只有$89$分,剩下的就要耐心的卡常
1 #include<bits/stdc++.h>
2 #define lid (id<<1)
3 #define rid (id<<1|1)
4 #define mod 998244353
5 using namespace std;
6 namespace AE86{
7 inline int read(){
8 int x=0,f=1;char ch=getchar();
9 while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
10 while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;
11 }inline void write(long long x,char opt='\n'){
12 char ch[20];int len=0;if(x<0)x=~x+1,putchar('-');
13 do{ch[len++]=x%10+(1<<5)+(1<<4);x/=10;}while(x);
14 for(int i=len-1;i>=0;--i)putchar(ch[i]);putchar(opt);}
15 }using namespace AE86;
16 const int NN=5e5+5;
17 int n,q,ta,tb,A,B,t,p[NN],p1[NN],p2[NN];
18 struct SNOW{int sum,k,b,ans,xi;};
19 inline int qmo(int a){int ans=1,c=mod,b=mod-2; a%=c;while(b){if(b&1) ans=1ll*ans*a%c;b>>=1;a=1ll*a*a%c;}return ans;}
20
21 namespace SNOWtree{
22 int ll[NN<<2],rr[NN<<2];
23 int k[NN<<2],b[NN<<2],xi[NN<<2];
24 int sk[NN<<2],sb[NN<<2];
25 int sum[NN<<2],ans[NN<<2];
26 inline void pushup(int id){
27 if(ll[id]==rr[id]) return;
28 sum[id]=(sum[lid]+sum[rid])%mod;
29 xi[id]=(1ll*xi[lid]+1ll*xi[rid]*k[lid]%mod)%mod;
30 k[id]=1ll*k[lid]*k[rid]%mod;
31 b[id]=(1ll*b[lid]*k[rid]%mod+1ll*b[rid])%mod;
32 ans[id]=(1ll*b[lid]*xi[rid]%mod+ans[rid]+ans[lid])%mod;
33 }
34 inline void build(int id,int l,int r){
35 ll[id]=l; rr[id]=r;
36 if(l==r){
37 sum[id]=p[l]%mod;
38 k[id]=(p[l]+t-1ll*p[l]*t%mod+mod)%mod;
39 b[id]=p[l]; ans[id]=xi[id]=p[l];
40 return;
41 }int mid=l+r>>1;
42 build(lid,l,mid); build(rid,mid+1,r);
43 pushup(id);
44 }
45 inline void update(int id,int pos){
46 if(ll[id]==rr[id]){
47 int val=p[ll[id]];
48 sum[id]=val%mod;
49 k[id]=(val+t-1ll*val*t%mod+mod)%mod;
50 b[id]=val; ans[id]=xi[id]=val;
51 return;
52 }int mid=ll[id]+rr[id]>>1;
53 if(pos<=mid) update(lid,pos);
54 else update(rid,pos);
55 pushup(id);
56 }
57 inline SNOW found(int id,int l,int r){
58 if(l<=ll[id]&&rr[id]<=r)return(SNOW){sum[id],k[id],b[id],ans[id],xi[id]};
59 int mid=ll[id]+rr[id]>>1;SNOW tmp1={0,0,0,0,0},tmp2={0,0,0,0,0};
60 if(l<=mid) tmp1=found(lid,l,r);
61 if(r>mid) tmp2=found(rid,l,r);
62 return (SNOW){
63 (1ll*tmp1.sum+tmp2.sum)%mod,
64 (1ll*tmp1.k*tmp2.k)%mod,
65 (1ll*tmp1.b*tmp2.k%mod+tmp2.b)%mod,
66 (1ll*tmp1.ans+tmp2.ans+1ll*tmp1.b*tmp2.xi%mod)%mod,
67 (1ll*tmp1.xi+1ll*tmp2.xi*tmp1.k%mod)%mod
68 };
69 }
70 }using namespace SNOWtree;
71
72 namespace WSN{
73 inline short main(){
74 read(); n=read();q=read(); if(!q) return 0;
75 ta=read();tb=read(); A=read()%mod;B=read()%mod;
76 t=1ll*ta*qmo(tb)%mod;
77 for(int i=1,p1,p2;i<=n;i++)
78 p1=read(),p2=read(),p[i]=1ll*p1*qmo(p2)%mod;
79 build(1,1,n);
80 while(q--){
81 int opt=read();
82 if(opt==0){
83 int x=read(),wa=read(),wb=read();
84 int w=1ll*wa*qmo(wb)%mod; p[x]=w;
85 update(1,x);
86 }
87 if(opt==1){
88 int l=read(),r=read();
89 SNOW tmp=found(1,l,r);
90 write((1ll*A*tmp.sum%mod+1ll*B*tmp.ans%mod)%mod);
91 }
92 }
93 return 0;
94 }
95 }
96 signed main(){return WSN::main();}
Noip模拟47 2021.8.25的更多相关文章
- Noip模拟61 2021.9.25
T1 交通 考场上想了一个$NPC$.应该吧,是要求出图里面的所有可行的不重复欧拉路 无数种做法都无法解出,时间也都耗在这个上面的,于是就考的挺惨的 以后要是觉得当前思路不可做,就试着换一换思路,千万 ...
- Noip模拟70 2021.10.6
T1 暴雨 放在第一道的神仙题,不同的做法,吊人有的都在用线段树维护$set$预处理 我是直接$dp$的,可能代码的复杂度比那种的稍微小一点 设$f[i][j][p][0/1]$表示考虑了前$i$列, ...
- Noip模拟76 2021.10.14
T1 洛希极限 上来一道大数据结构或者单调队列优化$dp$ 真就没分析出来正解复杂度 正解复杂度$O(q+nm)$,但是据说我的复杂度是假的 考虑一个点转移最优情况是从它上面的一个反$L$形转移过来 ...
- Noip模拟69 2021.10.5
考场拼命$yy$高精度结果没学好$for$循环痛失$50pts$,当场枯死 以后一定打对拍,要不考后会... T1 石子游戏 首先要知道典型的$NIM$博弈,就是说如果所有堆石子个数的异或和为$0$则 ...
- Noip模拟63 2021.9.27(考场惊现无限之环)
T1 电压机制 把题目转化为找那些边只被奇数环包含. 这样的话直接$dfs$生成一棵树,给每个点附上一个深度,根据其他的非树边都是返祖边 可以算出环内边的数量$dep[x]-dep[y]+1$,然后判 ...
- Noip模拟59 2021.9.22
新机房首模拟变倒数 T1 柱状图 关于每一个点可以做出两条斜率分别为$1,-1$的直线, 然后题意转化为移动最少的步数使得所有点都在某一个点的两条直线上 二分出直线的高度,判断条件是尽量让这条直线上部 ...
- Noip模拟52 2021.9.13
T1 异或 比较稳的切掉 观察数据范围,无法线性筛啥的,根号复杂度也会死,于是只能考虑$log$级 然后打表 发现当$n$为$2^i$时的答案是一个可递归数列: $1,3,7,15,31,63,127 ...
- Noip模拟51 2021.9.12
T1 茅山道术 考场上卡在了一个恶心的地方, 当时以为每次施法都会产生新的可以施法的区间,然后想都没细想, 认为不可做,甚至$dfs$也无法打,考后一问发现是自己想多了.. 新产生的区间对答案根本没有 ...
- Noip模拟50 2021.9.10
已经好长时间没有考试不挂分的良好体验了... T1 第零题 开场数据结构,真爽 对于这道题首先要理解对于一条链从上向下和从下向上走复活次数相等 (这可能需要晚上躺在被窝里面脑摸几种情况的样例) 然后就 ...
随机推荐
- 任由文字肆意流淌,更自由的开源 Markdown 编辑器
对于创作平台来说内容编辑器是十分重要的功能,强大的编辑器可以让创作者专注于创作"笔"下生花.而最好取悦程序员创作者的方法之一就是支持 Markdown 写作,因为大多数程序员都是用 ...
- 【转】shell脚本中echo显示内容带颜色的实现方法
shell脚本中echo显示内容带颜色的实现方法 shell脚本里使用echo输出颜色
- 现在互联网好多bug 想到都烦
我接触计算机十多年了,只是在15年前发布一篇给计算机有关的技术文章,后来就在也不发表了,今天在163博客写个备录,,写到一半结果误 关了,,浪费了好几个小时,还以为像以前那样,又要重写,,这也是我不爱 ...
- CodeForce-811C Vladik and Memorable Trip(动态规划)
Vladik and Memorable Trip CodeForces - 811C 有一个长度为 n 的数列,其中第 i 项为 ai. 现在需要你从这个数列中选出一些互不相交的区间,并且保证整个数 ...
- PDO操作大数据对象
一般在数据库中,我们保存的都只是 int . varchar 类型的数据,一是因为现代的关系型数据库对于这些内容会有很多的优化,二是大部分的索引也无法施加在内容过多的字段上,比如说 text 类型的字 ...
- Java基础系列(37)- 数组下标越界及小结
数组的四个基本特点 其长度是确定的,数组一旦被创建,它的大小就是不可以改变的 其元素必须是相同类型,不允许出现混合类型 数组中的元素可以是任何数据类型,包括基本类型和引用类型 数组变量属于引用类型,数 ...
- Shell系列(4)- 历史命令
格式:history [选项] [历史命令保存文件] 选项: -c:清空历史命令 -w:把缓存中的历史命令写入到历史命令保存文件~ /.bash_history;用户的家目录下 例子: [root@l ...
- Shell系列(28)- 条件判断之字符串判断
字符串判断 $变量时要用双引号引起来,即"$变量" 测试选项 作用 -z 字符串 判断字符串是否为空(为空返回真) -n 字符串 判断字符串是否为非空(非空返回真) 字符串1 == ...
- 怎么让jenkins保持后台运行
今天在腾讯云直接使用命令启动jenkins,java -jar jenkins.war --httpPort=8080,这样启动关掉shell窗口或退回shell窗口,进程就会结束,需要重新 启动,非 ...
- vue成就购物城的功能 (展示增删改查)
<!DOCTYPE html><html> <!DOCTYPE html> <html> <head> <meta charset=& ...