首页 > 其他分享 >20240917【省选】模拟

20240917【省选】模拟

时间:2024-10-21 21:01:47浏览次数:1  
标签:log 省选 ll 20240917 int xx define 模拟 dis

难说

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的代码也打出来了,但是连犯两个最低级的错误,然后就没了。

不会。

标签:log,省选,ll,20240917,int,xx,define,模拟,dis
From: https://www.cnblogs.com/heshuwan/p/18417858

相关文章

  • [赛记] 多校A层冲刺NOIP2024模拟赛09 && 10
    排列最小生成树(pmst)50pts又是诈骗题,然后又不会。。。暴力很暴力,直接建个完全图跑Kruskal即可;正解考虑如果我们连接编号相邻的点,那么每个边的边权都小于$n$真能考虑到吗?;所以我们最终的最小生成树中的边边权都小于$n$;那么对于$|p_i-p_j|\times|i-j|<n$......
  • 10.23 模拟赛
    炼石计划10月05日NOIP模拟赛#9【补题】-比赛-梦熊联盟复盘既然以前做过,复盘貌似不重要了吧?T2很快写完了。T1想到堆就做完了。T3忘了咋做了,好像是个DP但剩下忘了。于是写了暴力分跑路了。T4正解显然不可能会的。打满了暴力。最后T1数组开小挂了\(50\)。......
  • CW 模拟赛 T2.神力
    题面之前别的学校模拟赛的题吧,显然是没有上oj的挂个pdf题面下载算法概率类型的题目,这一题看着像概率dp,是不会的先按照一般的思路,从前往后考虑操作设\(f_{i,j}\)为考虑了前\(i\)步操作,当前位置为\(j\)的概率考虑状态转移对于操作的每一个位置,显然......
  • 模拟赛总结(三)
    2024.9.16重新定义饮料为一大杯冰沙胃:这把生死局(指抿一口就开始起反应...)早上就不停反呕,下午整这一出真是笑嘻了T1不相邻集合以为贪心假的,结果对了就是对新加的数看看有没有左邻右舍被取过,没有就计入答案codeT2线段树暴力\(20\)考虑到线段树开点方式,点编号之和肯定可......
  • GD-WLAN登录页面抓包及curl模拟方法
    摘要:校园网Web认证界面点击登录时会发送一个Post请求,密码使用时间戳作为密钥进行RC4加密(后经验证,时间戳可为任意值),服务器根据密钥解密并验证账户与密码,验证通过便可以正常上网。因而可以采用curl等工具模拟Post请求,完成登录。实现路由器、服务器、手机、平板等快捷联网。......
  • 信息学奥赛复赛复习18-CSP-J2023-01小苹果-向上取整、向下取整、模拟算法
    PDF文档公众号回复关键字:202410211P9748[CSP-J2023]小苹果[题目描述]小Y的桌子上放着n个苹果从左到右排成一列,编号为从1到n。小苞是小Y的好朋友,每天她都会从中拿走一些苹果。每天在拿的时候,小苞都是从左侧第1个苹果开始、每隔2个苹果拿走1个苹果。随......
  • 多校A层冲刺NOIP2024模拟赛10
    因为有好多人没有好好打,所以我认为我垫底了。赛时rank2,T10pts,T2100pts,T30pts,T440pts,accoder上同分,rank9。T1因为没输出挂了5pts,T4爆搜挂了5pts,乐。update:T3没有启发式合并被卡成rank4了神:wang5是下一个zh0ukangyang岛屿唐氏的推柿子题。发现只有两种链,同色相连和......
  • 生命模拟
    界面:<DockPanelBackground="#EEEEEE"><WrapPanelDockPanel.Dock="Top"><BorderBackground="Green"Width="20"Height="20"VerticalAlignment="Center"/><Text......
  • 代理与模拟登录
    01代理反爬:封IP1.什么是封IP我们用程序访问人家网站,请求次数一下很多不像人在访问,有些网站就会封掉你的IP封了以后,当前的IP就不能访问这个网站,爬不了这个数据2.所有网站都会封IP吗?不会,是否封IP是看网站的设置策略来的,他不会把这个告诉我们,也不是所有的网站会封IP,具体......
  • CSP 模拟 52
    B最短路先建出最短路DAG,保证最短路径唯一,所以建出来的DAG是一棵树。考虑一个点的答案可以由谁来更新,假设当前点为点\(u\),它的dfs序控制范围是\(l,r\)。首先,它可以由子树外除了父亲的节点来更新,形如ans[u]=dis[v]+w,它也可以由子树内的节点更新,路径形如1->zc->v->u,要求中......