暑假模拟15

news/2024/11/18 1:37:53/文章来源:https://www.cnblogs.com/abnormal123/p/18350054

暑假模拟15

\(T_A\) 串串

简单字符串题,考虑枚举回文中心,哈希维护,没什么思维量,但是不好调。

wang54321 有高级 manacher 做法,大家快去膜拜她。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e6+100;
const ll mod=1000001011;
const ll base=2333;
char s[N];
int n,m;
bool b[N];
ll x,y,ny,p[N];
ll qpow(ll res,ll t){ll ans=1;while(t){if(t&1)ans=ans*res%mod;res=res*res%mod;t>>=1;}return ans;
}
int main()
{scanf("%d",&n);ny=qpow(base,mod-2);p[0]=1;for(int i=1;i<=1000000;i++){p[i]=p[i-1]*base%mod;}while(n--){scanf("%s",s+1);m=strlen(s+1);if(m==1){puts("1");continue;}for(int i=1;i<=m;i++){b[i]=0;}x=y=0;for(int i=m,len=0;i>=2;i--){if(x==y){if(i>m/2)b[i]=1;else b[i]=b[i+len];}if(i-1>m/2){y=(y+(s[i]-'a')*p[len])%mod;if(i!=m){x=((x-(s[i-1]-'a')*p[len-1])%mod+mod)%mod;x=x*p[2]%mod;x=(x+(s[i-len-1]-'a')*p[1])%mod;}x=(x+(s[i-len-2]-'a'))%mod;len++;}else if(i-1==m/2){x=0;for(int j=i-2;j>=1;j--){x=(x*base+s[j]-'a')%mod;}y=0;for(int j=i;j<2*i-2;j++){y=(y*base+s[j]-'a')%mod;}len=i-2;}else{x=((x-(s[i-1]-'a')*p[len-1])%mod+mod)%mod;if(i!=2){y=((y-(s[i+len]-'a')-(s[i+len-1]-'a')*base)%mod+mod)%mod;y=y*ny%mod*ny%mod;y=(y+(s[i]-'a')*p[len-2])%mod;}len--;}}for(int i=1;i<=m;i++){if(b[i])printf("%d ",i);}puts("");}
}

\(T_B\)排排

更简单的结论题,容易发现以下结论:

  1. 当且仅当 \(P\) 严格递增时,答案为 \(0\)

  2. 当且仅当存在一个 \(P_i=i\) 使得 \(P_1\dots P_i\) 是一个 \(1 \dots i\) 的排列,答案为 \(1\)

  3. 当且仅当 \(P_1=n,P_n=1\) ,答案为 \(3\)

  4. 其余情况答案均为 \(2\)

\(T_C\)序序

难题,不会

\(T_D\)桥桥

好题,虽然我没过,但我可以口胡。

首先将所有操作离线,分块,设块长为 \(T\)

对于每一块,按照边权降序排列 \(m\) 条边,并按如下方式排列块内操作:

修改按照出现顺序降序,查询按照重量降序排列,以后会有用。

对于每个查询,没有被修改的边权大于当前询问的边可能会有贡献,用并查集维护连通性。而被修改的边,如果对当前询问没有影响,回到上一种情况,如果有影响,则只考虑最后一次修改这条边的贡献。每次改变询问要求并查集可撤销(不要路径压缩)。由于每个块内操作并不多,暴力修改即可,保证复杂度正确,可能需要卡常。

还没过题,代码莫名原因 \(WA\) 了,先贴上。

CODE
#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define mp make_pair
const int N=5e5+100;
int n,m,q,a,b,c,op,cnt,head[N];
int T,sum,lef[N],rig[N];
int f[N],siz[N],tot,p[N],ans[N];
bool vis[N],pd[N];
int dfn[N];
bool o[N];
struct query{int op,x,y,id;
}t[N];
struct Bridge{int from,to,wei,id;
}br[N];
bool cmp(query o,query p){if(o.op==p.op){if(o.op==2)return o.y>p.y;else return o.id>p.id;}else return o.op<p.op;
}
bool cmp1(Bridge o,Bridge p){return o.wei>p.wei;
}
int find(int x){if(x==f[x])return x;else return find(f[x]);
}
stack<pii>st;
inline void merge(int u,int v,bool flag){int fx=find(u),fy=find(v);if(fx==fy)return ;tot++;if(siz[fx]>siz[fy]){if(flag){st.push(mp(fy,fx));}f[fy]=fx;siz[fx]+=siz[fy];}else{if(flag){st.push(mp(fx,fy));}f[fx]=fy;siz[fy]+=siz[fx];}
}
void solve(int l,int r,int x){sort(br+1,br+m+1,cmp1);for(int i=1;i<=m;i++){p[br[i].id]=i;}sort(t+l,t+r+1,cmp);for(int i=l;i<=r;i++){if(t[i].op==1)vis[t[i].x]=1;}for(int i=l,_=1;i<=r;i++){if(t[i].op==1)continue;while(_<=m){if(br[_].wei<t[i].y)break;if(!vis[br[_].id]){merge(br[_].from,br[_].to,0);}_++;}for(int j=l;j<=r;j++){if(t[j].op==2)continue;if(t[j].id>t[i].id)continue;if(pd[t[j].x])continue;pd[t[j].x]=1;if(t[j].y>=t[i].y){merge(br[p[t[j].x]].from,br[p[t[j].x]].to,1);}}for(int j=l;j<=r;j++){if(t[j].op==2)continue;if(pd[t[j].x])continue;// if(t[j].id<=t[i].id)continue;if(br[p[t[j].x]].wei>=t[i].y){// if(br[p[t[j].x]].from==0||br[p[t[j].x]].to==0){// 	cerr<<t[j].x<<endl;// 	exit(0);// }merge(br[p[t[j].x]].from,br[p[t[j].x]].to,1);}}ans[t[i].id]=siz[find(t[i].x)];while(!st.empty()){siz[st.top().second]-=siz[st.top().first];f[st.top().first]=st.top().first;st.pop();}for(int j=l;j<=r;j++){if(t[j].op==2)continue;pd[t[j].x]=0;}}for(int i=r;i>=l;i--){if(t[i].op==1){br[p[t[i].x]].wei=t[i].y;vis[p[t[i].x]]=0;}}for(int i=1;i<=n;i++){f[i]=i;siz[i]=1;}
}
int main()
{// freopen("q.in","r",stdin);// freopen("q.out","w",stdout);scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d%d",&br[i].from,&br[i].to,&br[i].wei);br[i].id=i;}for(int i=1;i<=n;i++){f[i]=i;dfn[i]=i;siz[i]=1;}scanf("%d",&q);T=1500;// T=sqrt(q);// T=1;// T=q;for(int i=1;i<=q;i++){scanf("%d%d%d",&t[i].op,&t[i].x,&t[i].y);o[i]=(t[i].op==2);t[i].id=i;}sum=(q+T-1)/T;for(int i=1;i<=sum;i++){lef[i]=rig[i-1]+1;rig[i]=lef[i]+T-1;}rig[sum]=q;for(int i=1;i<=sum;i++){solve(lef[i],rig[i],i);}for(int i=1;i<=q;i++){if(o[i])printf("%d\n",ans[i]);}
}

闲话

感觉这次模拟赛后两题比较有难度,至少我不会,但赛时确实尽力在想了。前两题没挂分,还是有一点优势的。

一张红色的图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/780097.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes-Argo CD

Kubernetes高级工具Argo CD https://argo-cd.readthedocs.io/en/stable/ Argo CD 是针对 Kubernetes 的声明式 GitOps 持续交付工具。 Argo CD 是一个为 Kubernetes 而生的,遵循声明式 GitOps 理念的持续部署(CD)工具。 Argo CD 可在 Git 存储库更改时自动同步和部署应用程序…

Kubernetes高级工具Argo CD

Kubernetes高级工具Argo CD https://argo-cd.readthedocs.io/en/stable/ Argo CD 是针对 Kubernetes 的声明式 GitOps 持续交付工具。 Argo CD 是一个为 Kubernetes 而生的,遵循声明式 GitOps 理念的持续部署(CD)工具。 Argo CD 可在 Git 存储库更改时自动同步和部署应用程序…

第二课DOS命令行窗口

what,why,how 从是什么,为什么,怎么做(具体实际操作)来学习把握。 场景1: (逢年过节时候) -七大姑八大姨问:超子,你现在在做什么工作啊? -我:干软件工程师。(心想说java,亲戚肯定听不懂) -七大姑八大姨又追问:那什么是软件啊?(搞得跟面试官一样) -我:就你手…

观影记录

想吃parfait,不想赤石 无职转生 ~到了异世界就拿出真本事~(Part1) - 2021.01 请务必给我一个这种手办!虽然这是件非常恐怖的事。 洛琪希是44岁的少女。想要成为影之实力者! - 2022.10 不愧是暗影大人,《蒙面泳装团》首席 I need more 抛瓦!~ I am atomic!~ 想要成为影…

全网最适合入门的面向对象编程教程:34 Python的内置数据类型-Python常用复合数据类型:元组和命名元组

元组是不可变的序列类型,可以包含不同类型的元素。命名元组是元组的子类,它允许你为元组中的位置指定名称,从而使代码更加清晰,本文主要介绍了两种元组的使用方法和应用场景。全网最适合入门的面向对象编程教程:34 Python的内置数据类型-Python常用复合数据类型:元组和命…

Luogu P5089 元素周期表 / Codeforces 1012B Chemical table 题解 [ 并查集 ] [ 二分图 ] [ 图论建模 ] [ 棋盘覆盖问题 ]

双倍经验:Luogu P5089 元素周期表 ,CF1012B Chemical table:模拟赛搬的好题,有点厉害。赛时10min码的假贪心拿了五十多分,赢。 并查集思路 1 对于此类棋盘整行整列覆盖问题,有一个通用思路:把每一行和每一列看作一个点,那么原本棋盘上的格子就可以看作是连接这些点的边…

常见的Linux分支

市面上可以接触到的Linux发行版本都是基于Linux内核和GUN协议开发出来的,当然还有一切企业内部自己开发定制的OS不在讨论范围,本随笔用于记录市面上常见的分支家族,如果对某个分支特别感兴趣可以自行深入了解

自适应PID控制器的simulink建模与仿真

1.课题概述对PID控制器参数kp,ki,kd进行参数自适应调整,实现PID控制器的最优控制,输出PID控制器,参数kp,ki,kd的收敛过程。2.系统仿真结果 kp,ki,kd的收敛过程如下:控制器输出如下:参考输入和控制器反馈输出的误差如下:3.核心程序与模型 版本:MATLAB2022a4.系统原理…

简单算法

冒泡排序// 冒泡排序加去重 public static int[] DistinctAndOrder(int[] OldArray) {if (OldArray != null && OldArray.Length > 0){//排序for (int i = 0; i < OldArray.Length - 1; i++){for (int j = 0; j < OldArray.Length - i - 1; j++){if (OldArray…

画廊 (2023 年 11 月至 2024 年 2 月中旬)

Gallery (II)上图于 2023 年 11 月 11 日摄于深圳技术大学。上图于 2023 年 11 月 12 日摄于深圳技术大学。上图于 2023 年 11 月 25 日摄于合肥中科大。上图于 2023 年 12 月 2 日摄于济南人民会堂。上图于 2023 年 12 月 9 日摄于北京密云。上图于 2024 年 1 月 20 日摄于绵阳…

SPSS、Python员工满意度问卷调查激励保健理论研究:决策树、随机森林和AdaBoost|附代码数据

全文链接:https://tecdat.cn/?p=37293 原文出处:拓端数据部落公众号 在深入了解公司当前的实际情况和员工内心真实想法的基础上,我们旨在从专业视角出发,为企业在组织管理方面的不足进行诊断,并进行全面审视。 为了更好地规划公司未来的发展方向,综合管理部特别组织了这…

Gradio

BiliBili视频 官网:https://www.gradio.app/ 为AI模型快速搭建交互式界面。根据AI模型需求,生成输入和输出组件,简化用户界面的构建过程。起步 基础安装pip install gradio官网示例import gradio as grdef greet(name, intensity):return "Hello, " + name + &quo…