期望得分: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的更多相关文章

  1. Noip模拟61 2021.9.25

    T1 交通 考场上想了一个$NPC$.应该吧,是要求出图里面的所有可行的不重复欧拉路 无数种做法都无法解出,时间也都耗在这个上面的,于是就考的挺惨的 以后要是觉得当前思路不可做,就试着换一换思路,千万 ...

  2. Noip模拟70 2021.10.6

    T1 暴雨 放在第一道的神仙题,不同的做法,吊人有的都在用线段树维护$set$预处理 我是直接$dp$的,可能代码的复杂度比那种的稍微小一点 设$f[i][j][p][0/1]$表示考虑了前$i$列, ...

  3. Noip模拟76 2021.10.14

    T1 洛希极限 上来一道大数据结构或者单调队列优化$dp$ 真就没分析出来正解复杂度 正解复杂度$O(q+nm)$,但是据说我的复杂度是假的 考虑一个点转移最优情况是从它上面的一个反$L$形转移过来 ...

  4. Noip模拟69 2021.10.5

    考场拼命$yy$高精度结果没学好$for$循环痛失$50pts$,当场枯死 以后一定打对拍,要不考后会... T1 石子游戏 首先要知道典型的$NIM$博弈,就是说如果所有堆石子个数的异或和为$0$则 ...

  5. Noip模拟63 2021.9.27(考场惊现无限之环)

    T1 电压机制 把题目转化为找那些边只被奇数环包含. 这样的话直接$dfs$生成一棵树,给每个点附上一个深度,根据其他的非树边都是返祖边 可以算出环内边的数量$dep[x]-dep[y]+1$,然后判 ...

  6. Noip模拟59 2021.9.22

    新机房首模拟变倒数 T1 柱状图 关于每一个点可以做出两条斜率分别为$1,-1$的直线, 然后题意转化为移动最少的步数使得所有点都在某一个点的两条直线上 二分出直线的高度,判断条件是尽量让这条直线上部 ...

  7. Noip模拟52 2021.9.13

    T1 异或 比较稳的切掉 观察数据范围,无法线性筛啥的,根号复杂度也会死,于是只能考虑$log$级 然后打表 发现当$n$为$2^i$时的答案是一个可递归数列: $1,3,7,15,31,63,127 ...

  8. Noip模拟51 2021.9.12

    T1 茅山道术 考场上卡在了一个恶心的地方, 当时以为每次施法都会产生新的可以施法的区间,然后想都没细想, 认为不可做,甚至$dfs$也无法打,考后一问发现是自己想多了.. 新产生的区间对答案根本没有 ...

  9. Noip模拟50 2021.9.10

    已经好长时间没有考试不挂分的良好体验了... T1 第零题 开场数据结构,真爽 对于这道题首先要理解对于一条链从上向下和从下向上走复活次数相等 (这可能需要晚上躺在被窝里面脑摸几种情况的样例) 然后就 ...

随机推荐

  1. Spring系列之集成MongoDB的2种方法

    MongoDB是最流行的NoSQL数据库,SpringBoot是使用Spring的最佳实践.今天带大家讲一讲SpringBoot集成MongoDB的两种方式,MongoDB的安装自行去官网查询,本地开 ...

  2. VUE带Token访问Abp Vnext Api

    上篇登录保存token用了3种方式,都可以在header带上Token访问,本次使用第四种保存方式Vuex中保存状态 stroe中配置好需要保存的字段及方法 import Vue from 'vue' ...

  3. 解析Prometheus PromQL

    解析PromQL 目前对Prometheus 的promQL 的解析文章比较少,且Prometheus官方也没有提供一个公共的库来对齐进行解析.下面实现对promQL的解析,并实现注入label功能. ...

  4. shell编程之条件语句

    目录: 一.条件测试 1.test命令测试 2.文件测试 3.字符串比较 4.逻辑测试 二.if语句 1.if单分支语句 2.if双分支语句 3.if多分支语句 三.case语句 case多分支语句 ...

  5. JDK源码阅读:Object类阅读笔记

    Object 1. @HotSpotIntrinsicCandidate @HotSpotIntrinsicCandidate public final native Class<?> g ...

  6. HCNP Routing&Switching之路由控制-策略路由

    前文我们了解了路由策略工具Route-Policy相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15322135.html:今天我们来聊一聊策略路由相 ...

  7. greedy algorithm, insertion sort, quick sort

    always makes the choice that seems to be the best at that moment. Example #1: @function:  scheduling ...

  8. 『GoLang』协程与通道

    作为一门 21 世纪的语言,Go 原生支持应用之间的通信(网络,客户端和服务端,分布式计算)和程序的并发.程序可以在不同的处理器和计算机上同时执行不同的代码段.Go 语言为构建并发程序的基本代码块是 ...

  9. Java实现完数

    完数 找出1-1000以下的完数 public static void main(String[] args) { for(int i=2;i<1000;i++) { int sum=0; fo ...

  10. JavaFx 监听剪切板实现(Kotlin)

    原文地址: JavaFx 监听剪切板实现(Kotlin) | Stars-One的杂货小窝 软件有个需求,想要实现监听剪切板的内容,若内容符合预期,则进行相关的操作,就可以免去用户手动粘贴的操作,提供 ...