20240917【省选】模拟

news/2024/10/24 5:18:46/文章来源:https://www.cnblogs.com/heshuwan/p/18417858

难说

T1

暴力可以写dp

只要你学过线性基那么你就会想怎么用线性基做,显然是要套点数据结构维护的。你要知道两个线性基可以在 \(O(\log^2 n)\) 的时间内合并,得到的线性基是原来两个的交。可以用线段树维护,复杂度 \(O((n+q)\log n\log^2 a)\),难说能不能过。

没有修改,所以考虑用常熟小一点的数据结构,可以用ST表维护最值,复杂度 \(O(n\log n\log^2 a+q\log^2 a)\),小了一点。

发现瓶颈在于 \(\log^2 a\) 的合并,看能不能优化成一个老哥。一个简单的思路是分治,把询问离线下来,处理跨过中点的询问,就只会对线性基产生 \(O(n\log n)\) 次的修改,复杂度被优化成 \(O(n\log n\log a+q\log^2 a)\),好像能过了。

然后是正解,看不懂:

啥都能扫描线(

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define ll int
#define in inline
const ll N=1145140,M=1919810,inf=2e9,V=29;
ll n,Q,a[N],f[N],p[N],x;
ll ans[N];
struct xx{ll l,r,d,id;
}q[N];
bool cmp(xx x,xx y){return x.r<y.r;
}
bool flag;
void insert(ll x,ll id){for(ll i=V;i>=0;--i)if(x&(1ll<<i)){if(!f[i]){f[i]=x,p[i]=id;return;}else{if(id>p[i]){swap(id,p[i]);swap(x,f[i]);}x^=f[i];}}flag=1;
}
ll qmax(ll d,ll l){for(int i=V;i>=0;--i)if(p[i]>=l) d=max(d,d^f[i]);return d;
}
int main(){ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);n=read();for(int i=1;i<=n;++i) a[i]=read();Q=read();for(int i=1;i<=Q;++i) q[i].l=read(),q[i].r=read(),q[i].d=read(),q[i].id=i;//cin>>q[i].l>>q[i].r>>q[i].d,q[i].id=i;sort(q+1,q+Q+1,cmp);for(int i=1,j=1;i<=Q;++i){while(j<=q[i].r){insert(a[j],j);++j;}ans[q[i].id]=qmax(q[i].d,q[i].l);}for(int i=1;i<=Q;++i) write(ans[i]),putchar('\n');return 0;
}

T2

应该冲正解的,这个题其实真的挺简单的,就是建图。你会发现一个点能早到就尽量早到,不会因为可能错开车而使得时间不优。注意不需要在不同线路之间建边。

对每条线路把这个环建出来,每天边要记录 \(u\) 在线路中的下标(从 \(0\) 开始)和线路的长度用于计算到达时间。用 dij和SPFA 都行,但松弛过程中边权是根据 \(u\) 在线路中的位置和 \(dis[u]\) 确定的,具体看代码,很容易手推出来。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define eb emplace_back
#define pi pair<ll,ll>
const ll N=2*114514,M=1919810,inf=1e18;
ll n,m,t[N];
struct xx{ll v,t,le;
};
ll dis[N];
bool vis[N];
vector <xx> g[N];
priority_queue <pi,vector<pi>,greater<pi>> q;
void dij(){memset(dis,63,sizeof(dis));dis[1]=0,q.push({dis[1],1});while(!q.empty()){ll u=q.top().second; q.pop();if(vis[u]) continue;vis[u]=1;for(xx x:g[u]){ll v=x.v,t=x.t,le=x.le,w=0;if(dis[u]%le<=t) w=t-dis[u]%le+1;else w=le-dis[u]%le+t+1;if(dis[v]>dis[u]+w){dis[v]=dis[u]+w;q.push({dis[v],v});}}}
}
int main(){ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cin>>n>>m;for(int i=1;i<=m;++i){cin>>t[i];vector <ll> a;for(int j=1,x;j<=t[i];++j) cin>>x,a.eb(x);for(int j=0;j<t[i];++j) g[a[j]].eb((xx){a[(j+1)%t[i]],j,t[i]});}dij();for(int i=2;i<=n;++i)if(dis[i]==dis[0]) cout<<"-1 ";else cout<<dis[i]<<" ";return 0;
}

T3

智慧题。但是本来是把结论都推出来了,39pts的代码也打出来了,但是连犯两个最低级的错误,然后就没了。

不会。

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

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

相关文章

高级语言程序设计课程第四次个人作业

班级:https://edu.cnblogs.com/campus/fzu/2024C 作业:https://edu.cnblogs.com/campus/fzu/2024C/homework/13293 学号:102400118 姓名:林嘉祚 6.16.16.16.56.16.76.16.86.16.96.16.106.16.126.16.136.16.156.16.166.16.187.12.17.12.27.12.47.12.57.12.67.12.77.12.87.12.97…

2024Ciscn总决赛Web Writeup

前言 鸽了三个月的复现计划:) ezjs 考点是express引擎解析的一个trick,在高版本的express已经修复,先贴源码 const express = require(express); const ejs=require(ejs) const session = require(express-session); const bodyParse = require(body-parser); const multer =…

C# 新建的类库无法添加 System.Drawing 引用问题

C#类库添加System.Drawing引用时,选择程序集 -> 框架 -> 再搜索对应的库,添加引用就可以了。不要在COM中搜索。

20222420 2024-2025-1 《网络与系统攻防技术》实验二实验报告

20222420 2024-2025-1 《网络与系统攻防技术》实验二实验报告 1.实验内容 1.1 本周学习内容 1.1.1 后门介绍后门概念:不经过正常认证流程而访问系统的通道 后门类型:编译器、操作系统、应用程序中的后门,潜伏于OS或伪装成APP的后门程序1.1.2 后门案例编译器后门:Xcode 操作…

在阿里云后台修改网站?

1. 登录阿里云控制台打开浏览器,访问 阿里云官网。 点击右上角的“控制台”按钮,输入账号和密码登录。2. 导航到网站管理登录后,进入阿里云控制台首页。 在左侧导航栏中,找到并点击“产品与服务”。 选择“云解析 DNS”或“云企业网站”等相关产品,根据你的网站托管方式选…

网站模板的网页背景修改?

1. 登录后台管理系统打开浏览器,访问你的网站后台管理系统。 输入用户名和密码,登录到后台管理系统。2. 导航到主题或样式设置在后台管理系统的主界面,找到并点击“主题设置”、“样式设置”或“外观设置”等相关选项。 这些选项通常位于左侧导航栏或顶部菜单中。3. 选择背景…

tms fnc ui

tms fnc uitms fnc ui 这组界面控件,支持DELPHI的VCL和FMX,还支持FPC的LCL。 1)TTMSFNCNavigationPanel2)本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/18490245

第6课 测试用例设计

1.黑盒测试方法2.白盒测试方法术语一: • 动态测试(dynamic testing):通过运行软件的组 件或 系统来测试软件 • 静态测试(static testing):对组件的规格说明书 进行 评审,对静态代码进行走查 • 正式评审(formal review):对评审过程及需求文 档的 一种特定评审 • …

转载 兔兔电脑机器码修改工具1.0

使用说明: 1.关闭**毒软件(1.易语言编写可能会误报 2.需要修改系统信息可能会被拦截); 2.管理员运行; 3.根据需要修改机器码(部分系统需要运行兼容性初始化) 4.修改主板会屏蔽网卡,所以要先修改网卡然后再修改主板; 5.重启电脑即可恢复,网卡修改不会恢复,需要手动改…

机器学习基本介绍

1、人工智能概述 人工智能发展必备三要素:数据 算法 计算力 CPU,GPU,TPU计算力之CPU、GPU对比:CPU主要适合I\O密集型的任务GPU主要适合计算密集型任务 1.1、工智能、机器学习和深度学习的关系人工智能和机器学习,深度学习的关系:机器学习是人工智能的一个实现途径深度学习…

考场环境 NoiLinux 测试

觉得还是有必要提前练一下 用的是官网的 NoiLinux.iso 全程断网下载 虽然不知道实机预安装系统时是不是断网的 NoiLinux,但是保险一点还是选了断网省选的时候,Windows 里只有画图和 Dev-C++分辨率非常构式,需要手动调分辨率,咱们电脑是 1920*1080(没找到适配这个电脑的分辨…