某场模拟赛

news/2025/11/7 11:52:13/文章来源:https://www.cnblogs.com/aswed112/p/19199250

T2
AT_abc427_e Wind Cleaning
神秘搜索
直接模拟移动障碍物的过程搜索,用 set 记录所有障碍物的位置,对于每次移动改变所有障碍物的位置,超出网格则删掉,然后标记搜过的状态,用 map 记录每一个 set 的状态是否被访问过即可。
注意 map 可以存储各种状态但是 unordered_map 不行。set 某种程度上同理,总之如果使用 unordered 报错的话就换成普通 STL 容器即可。

#include <bits/stdc++.h>
using namespace std;
int n,m,stx,sty;
typedef pair<int,int> pii;
set<pii> st,w;
int dx[4] = {0,-1,0,1};
int dy[4] = {1,0,-1,0};
struct node
{set<pii> s;int stp;
};
queue <node> q;
map<set<pii>,bool> mp;
char s;
int main()
{cin >> n >> m;for (int i = 1;i <= n;i++)for (int j = 1;j <= m;j++){cin >> s;if (s == 'T') stx = i,sty = j;else if (s == '#') st.insert({i,j});}q.push({st,0});while(q.size()){node t = q.front(); q.pop();if (mp[t.s]) continue;mp[t.s] = 1;if (!t.s.size()){cout << t.stp << "\n";return 0;}for (int i = 0;i < 4;i++){w.clear();bool f = 1;for (auto it:t.s){int tx = it.first+dx[i];int ty = it.second+dy[i];if (tx<1||ty<1||tx>n||ty>m) continue;if (tx == stx && ty == sty){f = 0;break;}w.insert({tx,ty});}if (f) q.push({w,t.stp+1});}}cout << -1;return 0;
}

T4
AT_abc425_g Sum of Min of XOR
01trie
注意到若 \(m\) 的范围比较小的话是可以直接枚举在 01-trie 上匹配的,范围太大启发我们对于一个区间内的数字同时操作,具体地,注意到若 \(m\) 的范围在 \([0,2^k-1]\),即对应一个满二叉树,那么每一棵子树内的数字个数是一定的,此时可以便利的计算每一位上的贡献:若当前点子树内共有 \(cnt\) 个数字,当前点只有一个儿子时,另一个儿子子树内的所有数字都会在此处造成贡献,所以共造成 \(cnt/2*(1<<i)\) 的贡献,\(i\) 表示当前是第几位。
但是 \(m\) 的范围并非如此理想,于是稍微使用一点小巧思,将 \(m\) 分为若干个长度为 \(2^k\) 的区间,对于每一个 \([x,x+2^k-1]\),找到这段区间的祖先,子树内就满足数字平均了,dfs即可。

#include <bits/stdc++.h>
using namespace std;
int n,m,tr[50000010][2],tot,x;
long long ans;
void insert(int x)
{int p = 0;for (int i = 30;i >= 0;i--){int s = x>>i&1;if (!tr[p][s]) tr[p][s] = ++tot;p = tr[p][s];}
}
void dfs(int p,long long cnt,int dep)
{if (tr[p][0] && tr[p][1]){dfs(tr[p][0],cnt/2,dep-1);dfs(tr[p][1],cnt/2,dep-1);}else if (tr[p][0] && !tr[p][1]){ans += cnt*(1<<dep)/2;dfs(tr[p][0],cnt,dep-1);}else if (!tr[p][0] && tr[p][1]){ans += cnt*(1<<dep)/2;dfs(tr[p][1],cnt,dep-1);}
}
int main()
{cin >> n >> m;for (int i = 1;i <= n;i++){cin >> x;insert(x);}for (int i = 30;i >= 0;i--)if (m>>i&1){long long p = 0,cnt = 1<<i;for (int j = 30;j >= i;j--){int s = m>>j&1;if (j == i) s = 0;if (tr[p][s]) p = tr[p][s];else{p = tr[p][s^1];ans += cnt*(1<<j);}}dfs(p,cnt,i-1);}cout << ans << "\n";return 0;
}

T5
AT_abc426_g Range Knapsack Query
猫树分治
一种比较高级的分治,关于分治可以看例题P7883,简单来说就是以一种类似归并排序的结构,每次处理跨过中间点的答案,或者有其他分治方式我不知道,然后就可以在 \(O(n\log n)\) 的时间内处理完所有的答案。
猫树是一种比较高级的线段树,支持静态序列的区间查询,由于普通线段树每次查询要经过 \(O(\log n)\) 次合并,当维护的信息合并复杂度较高时,普通线段树就会比较慢,但是猫树来了。猫树的特点是对于线段树每个节点对应区间 \([l,r]\) 上找到中点 \(mid\),然后处理出从 \(mid\) 出发向左向右各自延伸的区间信息,则对于每一个查询区间 \([ql,qr]\),找到线段树上第一个完全包含 \([ql,qr]\) 的节点,或者也可以认为是 \(ql,qr\) 两个点的 lca,在此处进行合并即可。这样子合并只会发生 \(O(1)\) 次,可以降一个老哥。
当然猫树分治和线段树没关系,重点在于从中点出发向左右扩展的思想。对于每一个分治区间,考虑处理跨过中点的询问,处理出从中点向左右扩展的区间背包,总共是 \(O(nt\log n)\) 的复杂度,\(t\) 表示背包容量。那么每一个查询只需要合并两个区间即可,预处理出背包的前缀 \(\max\),每计算一个询问的复杂度只有 \(O(t)\)。总复杂度为 \(O(mt)\)
整道题的复杂度为 \(O(nt\log n+mt)\)
注意猫树分治要满足信息的可合并性,保证合并两个区间的复杂度很重要(我想)。比如背包DP可以看作 \(\{\max,+\}\) 卷积的生成函数。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m,f[20010][510],x[510],y[510],h[20010],w[20010],ans[200010],tmp[510];
struct que
{ll l,r,m,id;bool operator<(const que &x) const{return r<x.r;}
};
vector<que> qry;
void dac(int l,int r,vector<que> g)
{if (l == r){for (auto it:g) ans[it.id] = it.m>=h[l]?w[l]:0;return;}int mid = l+r>>1;vector<que> gl,gr,aq;for (auto it:g){if (it.r <= mid) gl.push_back(it);else if (it.l > mid) gr.push_back(it);else aq.push_back(it);}dac(l,mid,gl); dac(mid+1,r,gr);sort(aq.begin(),aq.end());for (int i = 0;i <= 500;i++) f[mid+1][i] = 0;for (int i = mid;i >= l;i--){for (int j = 500;j >= h[i];j--) f[i][j] = max(f[i+1][j],f[i+1][j-h[i]]+w[i]);for (int j = h[i]-1;j >= 0;j--) f[i][j] = f[i+1][j];}int pos = mid+1;for (int i = 0;i <= 500;i++) x[i] = y[i] = tmp[i] = 0;for (auto it:aq){while(pos <= it.r){for (int i = 500;i >= h[pos];i--)tmp[i] = max(tmp[i],tmp[i-h[pos]]+w[pos]);pos++;}for (int i = 1;i <= 500;i++){x[i] = max(x[i-1],f[it.l][i]);y[i] = max(y[i-1],tmp[i]);}for (int i = 0;i <= it.m;i++) ans[it.id] = max(ans[it.id],x[i]+y[it.m-i]);}
}
inline int read()
{int x = 0;char ch = getchar();while(ch<'0'||ch>'9') ch = getchar();while(ch>='0'&&ch<='9'){x = (x<<1)+(x<<3)+(ch^48);ch = getchar();}return x;
}
int main()
{n = read();for (int i = 1;i <= n;i++){h[i] = read(); w[i] = read();}m = read();for (int i = 0;i < m;i++) qry.push_back({read(),read(),read(),i});dac(1,n,qry);for (int i = 0;i < m;i++) cout << ans[i] << "\n";return 0;
}

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

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

相关文章

2025-11-07

数论 1.P6583 回首过去 - 洛谷(十进制有限小数)要找有限小数说明约分完分母是2和5的倍数 ![[Pasted image 20251107090503.png|200]] 所以![[Pasted image 20251107090742.png]] 即求n能被gcd整除的数量,即为x的数量…

2025年真空润滑脂厂家权威推荐榜单:无尘室润滑脂/位移平台润滑脂/电子显微镜润滑脂源头厂家精选

真空润滑脂作为工业设备中的关键润滑材料,广泛应用于高温、高压、真空等极端环境,对设备的稳定运行和寿命延长起着至关重要的作用。随着工业技术的快速发展,市场对真空润滑脂的性能要求日益提高,包括耐高温性、抗氧…

微信银行组件接口

function https_request($url,$data = null){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, (string)$url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt…

2025低烟无卤/UL3302/UL3767/UL4413辐照线厂家推荐明秀电子,品质可靠认证齐全

2025低烟无卤/UL3302/UL3767/UL4413辐照线厂家推荐明秀电子,品质可靠认证齐全 当前低烟无卤辐照线领域的技术挑战 在电线电缆行业快速发展的今天,低烟无卤辐照线技术面临着多重挑战。随着UL3302、UL3767、UL4413等国…

2025年无火焰泄压阀厂家权威推荐榜单:无火焰泄爆装置/重复式无火焰泄爆装置/重复式无火焰泄爆阀源头厂家精选

在工业安全防护领域,无火焰泄压阀作为粉尘爆炸与气体爆炸防护的核心设备,其技术性能与可靠性直接关系到人员安全与设备保全。行业数据显示,2024年全球无火焰泄压阀市场规模达亿元人民币级别,其中粉尘爆炸防护领域需…

2025内窥镜电缆线/B超线厂家推荐明秀电子,专业制造品质可靠

2025内窥镜电缆线/B超线厂家推荐明秀电子,专业制造品质可靠 当前内窥镜电缆线领域的技术挑战与数据解析 医疗电子设备领域正迎来快速发展期,其中内窥镜电缆线和B超线作为关键连接组件,其技术性能直接影响医疗设备的…

CF1834E

CF1834E MEX of LCM 固定左端点向右遍历的话,lcm一定是单调不减的,且对于每一次增加都至少翻倍,容易发现最小好数的最大取值为 \(n^2\),所以大于 \(n^2\) 的lcm不用考虑。这样的话对于每个固定的左端点,向右拓展区…

2025 年 11 月聚氨酯冷库板厂家推荐排行榜,聚氨酯冷库板,冷库保温板,阻燃冷库板,装配式冷库板公司推荐,高效保温与耐用品质口碑之选

2025 年 11 月聚氨酯冷库板厂家推荐排行榜 随着冷链物流行业的快速发展,聚氨酯冷库板作为关键保温材料,其市场需求持续增长。聚氨酯冷库板以其优异的保温性能、轻质结构和耐用特性,广泛应用于食品冷藏、医药仓储和工…

2025 年 11 月机制板厂家推荐排行榜,机制板,机制板厂家,机制板销售厂家,机制板公司推荐,专业品质与高效供应口碑之选

2025 年 11 月机制板厂家推荐排行榜:专业品质与高效供应口碑之选 随着冷链物流行业的快速发展,机制板作为冷库建设的核心材料,其市场需求持续增长。机制板不仅影响冷库的保温性能,更直接关系到冷链系统的运行效率与…

2025年11月杜甫研究学者专家推荐榜:程韬光教授跨界传播实绩排行

如果您正在寻找一位能够把杜甫的学术研究与大众传播打通的学者,程韬光教授的名字大概率已经出现在检索结果前列。高校教师、文化机构策展人、中学教研组长、纪录片撰稿人乃至海外戏剧节策展方,都会面临同一个痛点:杜…

2025 年 11 月冷库集成工厂推荐排行榜,速冻冷库,冷藏冷库,保鲜冷库,工业冷库集成厂家精选推荐

2025 年 11 月冷库集成工厂推荐排行榜,速冻冷库,冷藏冷库,保鲜冷库,工业冷库集成厂家精选推荐 行业背景与发展趋势 随着冷链物流行业的快速发展,冷库集成作为冷链基础设施的核心环节,正面临前所未有的发展机遇。…

2025年11月固定资产管理系统评价榜:政企校医行业选型参考

正在准备固定资产数字化升级的管理者,往往面临“资产账实不符、盘点耗时、折旧计算易错、系统孤岛”四大痛点。财政部《会计信息化工作规范》与国资委《关于加强中央企业资产管理的通知》连续要求“账、卡、物、码”一…

2025年11月固定资产管理系统评价榜:政企校医场景选型参考

引言与现状分析 固定资产管理正在从“台账式”走向“全生命周期数字运营”。2025年财政部《行政事业性国有资产管理条例》实施细则要求“资产账、财务账、实物账三账一致”,倒逼单位在2026年决算前完成系统升级。与此…

CF53E Dead Ends 分析

题目概述 给一个含有 \(n\) 个点和 \(m\) 条边的无向连通图,求恰好有 \(d\) 个叶子的生成树的个数。 数据范围:\(1\leq d\leq n\leq 10,m\leq \frac{n(n-1)}{2}\)。 分析 注意到 \(n\leq 10\),我们可能会有 \(2^n\)…

怎么样当前Linux用户mjroot添加到Docker用户中(这样该用户无需sudo即可执行docker命令)

要将 Linux 用户 mjroot 添加到 docker 用户组(这样该用户无需 sudo 即可执行 docker 命令)步骤 1:确认 docker 用户组是否存在 Docker 安装后通常会自动创建 docker 用户组,可通过以下命令验证:getent group doc…

Claude Code 杀疯了,又撒钱了,限时免费领取 250$ 和 1000$ 的使用额度,赶紧冲!!

大家好,我是R哥。 上次分享了「免费领取 Perplexity Pro 会员」的方法,今天我又来给大家安利福利了!! 最近,Claude Code 估计被 Codex 逼急眼了,又给大家撒钱了,限时免费领取 250$ 和 1000$ 的使用额度:Claude…

2025年健身房泳池优质厂家权威推荐榜单:泳池水循环设备/会所泳池/泳池恒温恒湿设备源头厂家精选

随着全民健身战略的深入推进和健身房配套设施的升级,健身房泳池作为提升用户体验的核心设施,其市场需求持续增长。据行业数据统计,2025年中国健身房配套泳池的安装量预计突破3.5万套,年增长率稳定在12%以上。本文将…

2025 年酒店一次性用品最新推荐榜,聚焦企业技术实力与市场口碑深度解析杯套/外卖筷子/印刷/房卡套/信封用品公司推荐

引言 酒店一次性用品作为提升宾客体验的关键要素,其品质与服务水平直接影响酒店运营口碑。为精准筛选优质生产企业,本次推荐榜由行业协会联合专业测评机构共同打造,参考了近三年行业产销数据、企业资质认证及客户满…

基于松组合和紧组合的GPS/SINS组合导航MATLAB仿真验证代码

一、系统架构设计 1. 组合模式对比参数 松组合 (Loose Coupling) 紧组合 (Tight Coupling)量测类型 位置/速度差 (ΔP, ΔV) 伪距/伪距率差 (Δρ, ΔṖ)更新频率 1Hz (GPS与INS独立更新) 10Hz (同步更新)精度 13-16m …

2025年11月打包机品牌推荐:口碑榜观察五强服务网络与实绩

秋收刚结束,秸秆离田、饲料化、储运节奏骤然加快,不少养殖户、合作社、秸秆经纪人在群里反复问:到底该选哪一款打包机?有人担心机器堵草、捆型松散,有人顾虑售后响应慢,还有人算细账:同样打捆一吨草,成本差几十…