ICPC2023 西安站

A. An Easy Geometry Problem

tag: 二分Hash

我们令 \(A_i' = A_i - i\times \frac k 2\)

那么我们可以发现:
\( \begin{aligned}A_{i+r}' - A_{i-r}' &= A_{i+r} - (i+r)\times \frac k 2 - (A_{i-r} - (i-r)\times \frac k 2) \\ & = A_{i+r} - A_{i-r} - kr \end{aligned}\)

所以我们将原本的 \(A_{i+r} - A_{i-r} = kr + b\) 变成了判断 \(A_{i+r}' = A_{i-r}' + b\)

这就可以使用 二分\(Hash\) 进行判断,带修就套一个线段树即可

code
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll NN = 2e5 + 8,MOD = 1e9+7;
int n,q,k,b;
ll a[NN];
ll pw[NN],pwp[NN];
struct Seg
{int l,r;ll tag;ll lsum,rsum;
#define l(x) tree[x].l
#define r(x) tree[x].r
#define tag(x) tree[x].tag
#define ls(x) (x << 1)
#define rs(x) (x << 1 | 1)
#define lsum(x) tree[x].lsum
#define rsum(x) tree[x].rsum
#define len(x) tree[x].r-tree[x].l+1
}tree[NN << 2];
void addlz(int x,int num)
{tag(x) += num;lsum(x) += pwp[len(x)] * num;rsum(x) += pwp[len(x)] * num;
}
void pushdown(int x)
{addlz(ls(x),tag(x));addlz(rs(x),tag(x));tag(x) = 0;
}
void pushup(int x)
{lsum(x) = lsum(ls(x)) + lsum(rs(x)) * pw[len(ls(x))];rsum(x) = rsum(ls(x)) * pw[len(rs(x))] + rsum(rs(x));
}
void build(int x,int l,int r)
{l(x) = l; r(x) = r;if(l == r){lsum(x) = a[l]+b;rsum(x) = a[l];return;}int mid = (l + r) / 2;build(ls(x),l,mid);build(rs(x),mid+1,r);pushup(x);
}
void modify(int x,int l,int r,int num)
{if(l <= l(x) && r(x) <= r){addlz(x,num);return;}int mid = (l(x) + r(x)) / 2;pushdown(x);if(l <= mid) modify(ls(x),l,r,num);if(mid + 1 <= r) modify(rs(x),l,r,num);pushup(x);
}
ll queryl(int x,int l,int r)
{if(l <= l(x) && r(x) <= r) return lsum(x);int mid = (l(x) + r(x)) / 2;ll lans = 0,rans = 0,ans = 0;pushdown(x);if(l <= mid) lans = queryl(ls(x),l,r);if(mid + 1 <= r) rans = queryl(rs(x),l,r);ans = lans + rans * pw[max(0,mid - max(l,l(x)) + 1)];return ans;
}ll queryr(int x,int l,int r)
{if(l <= l(x) && r(x) <= r) return rsum(x);int mid = (l(x) + r(x)) / 2;ll lans = 0,rans = 0,ans = 0;pushdown(x);if(l <= mid) lans = queryr(ls(x),l,r);if(mid + 1 <= r) rans = queryr(rs(x),l,r);ans = rans + lans * pw[max(min(r,r(x))-(mid+1)+1,0)];return ans;
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cin >> n >> q >> k >> b;pw[0] = 1;for(int i = 1; i <= n; ++i) pw[i] = pw[i-1] * MOD;for(int i = 1; i <= n; ++i) pwp[i] = pwp[i-1] + pw[i-1];for(int i = 1; i <= n; ++i) cin >> a[i];for(int i = 1; i <= n; ++i) a[i] = 2 * a[i] - k * i;b *= 2;build(1,1,n);while(q--){int op;cin >> op;if(op == 1){int l,r,num;cin >> l >> r >> num;modify(1,l,r,2*num);}else{int pos;cin >> pos;int l = 1, r = min(pos-1, n-pos), ans = 0;
//            cout << "("<< l << "," << r << "):" << ans << '\n';while(l <= r){int mid = (l + r) / 2;if(queryl(1,pos-mid,pos-1) == queryr(1,pos+1,pos+mid)) l = mid + 1, ans = mid;else r = mid - 1;
//                cout << "("<< l << "," << r << "):" << ans << '\n';}cout << ans << '\n';}}return 0;
}

E. Dominating Point

我们发现,如果暴力枚举的话显然是 \(O(n^3)\) 的,但是因为是 \(01\) 传递状态,我们显然可以使用 \(bitset\) 加速,达到 \(O(\frac {n^3} {32})\)

但是也不知道怎么证明,反正无论如何构造都是远远跑不满的,实测可过

code
#include<bits/stdc++.h>
using namespace std;
const int NN = 5e3 + 8;
bitset<NN> A[NN];
bitset<NN> B[NN];
int n;int main() {ios::sync_with_stdio(false),cin.tie(0); cin >> n;for(int i = 0; i < n; ++i){string s;cin >> s;for(int j = 0; j < n; ++j){A[i][j] = B[j][i] = (s[j] == '1');} }vector<int> ans;for(int v = 0; v < n; ++v){bool flag = 0;for(int w = 0; w < n; ++w){if(v == w) continue;if(A[v][w]) continue;if((A[v] & B[w]).any()) continue;flag = 1;break;}if(!flag) ans.push_back(v);}if(ans.size() < 3) cout << "NOT FOUND\n";else for(int i = 0; i < 3; ++i) cout << ans[i] + 1 << ' ';
}

G. An Easy Math Problem

我们首先只记录 \(p,q\) 互质是产生的 \(\frac p q\) 的值。

其次,我们对于 \(p\leq q\) 这个限制非常难受,于是我们就解散这个性质,最后让求出的答案 \(/2\) 即可

我们最后考虑怎么求答案:

我们记 \(n\) 因式分解后结果为:\(n = p_1^{r_1} \times p_2^{r_2}\times \dots p_k^{r_k}\)

我们对于每个质数和质数的次幂,我们把它们分给 \(p/q\) 的方案数为 \(2\times r_i + 1\)

所以最后的答案为 \(\frac {\prod_{i=1}^k (2\times r_i+1) - 1}{2} + 1\)\(p=1,q=1\) 以上方案中只会被算上一次,所以 \(/2\) 的时候需要单独拎出来)

code
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int q;
ll n;
ll cnt[40],len;
void solve()
{len = 0;cin >> n;for(ll i = 2; i*i <= n; ++i){if(n % i == 0){cnt[++len] = 0;while(n % i == 0) n /= i, ++cnt[len];}}if(n != 1) cnt[++len] = 1;ll r = 1;for(int i = 1; i <= len; ++i){r *= (2 * cnt[i]) + 1;// cout << cnt[i] << ' ';}r = (r + 1) / 2;cout << r << '\n';
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cin >> q;while(q--){solve();}return 0;
}

H. Elimination Series Once More

归并排序的时候,找到当前比赛区间中比这个数大的数的个数(需要被交换出去的数的个数)

如果比该数大的数的个数 \(\leq k\),并且有这么多小于它的数可以被换进来,那么就可以打到这么多轮次

code
#include <bits/stdc++.h>
using namespace std;
const int NN = (1 << 20) + 8;
int n,k;
struct Perm
{int num;int id;bool operator < (const Perm &x) const{return num < x.num;}
}a[NN];
int now[NN];
int ans[NN];
void solve(int l,int r,int dep)
{// printf("in:(%d,%d,%d)\n",l,r,dep);if(l == r) return;int mid = (l + r) / 2;solve(l,mid,dep-1); solve(mid+1,r,dep-1);int i = l, j = mid+1;for(; i <= mid; ++i){while(j != r+1 && a[j].num < a[i].num){now[a[j].id] += mid - i + 1;if(now[a[j].id] <= k && (a[j].num >> dep) > 0) ans[a[j].id] = dep;++j;}now[a[i].id] += r-j+1;if(now[a[i].id] <= k && (a[i].num >> dep) > 0) ans[a[i].id] = dep;}for(; j <= r; ++j){if(now[a[j].id] <= k && (a[j].num >> dep) > 0) ans[a[j].id] = dep;}// for(int i = 1; i <= (1 << n); ++i)// {//     printf("%d ",now[i]);// }// printf("\n");sort(a+l,a+r+1);
}
int main()
{// ios::sync_with_stdio(false),cin.tie(0);cin >> n >> k;for(int i = 1; i <= (1<<n); ++i) cin >> a[i].num, a[i].id = i;solve(1,(1<<n),n);for(int i = 1; i <= (1<<n); ++i) cout << ans[i] << ' ';return 0;
}

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

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

相关文章

2025年10月代理记账公司推荐:五强对比评测榜助创业者精准选合规伙伴

一、引言 对初创企业与成长型公司而言,财税合规既是底线也是成本重心。2025年第三季度全国新设市场主体同比再增7.4%,其中八成小微企业选择外包记账,如何在控制人力成本的同时确保票据、申报、年报、资质、注销各环…

2025年10月代理记账公司实力榜:五强对比评测与合规选型指南

一、引言 对初创企业、成长型公司以及正在扩张的中小企业而言,财税合规既是底线,也是成本管控的关键。2025年第三季度全国新设市场主体同比增长百分之七点四,其中近七成选择将记账、报税、工商变更等事务外包,以降…

140W 火力全开 + 彩屏可视化!正点原子 T90 智能电烙铁,焊接界新标杆来了!焊接效率直接拉满!

140W 火力全开 + 彩屏可视化!正点原子 T90 智能电烙铁,焊接界新标杆来了!焊接效率直接拉满! 在电子焊接工具圈,正点原子的名字早已成为 "专业" 与 "可靠" 的代名词。尤其是此前推出的 T80 智…

2025年10月代理记账公司对比评测榜:秀之宇领衔全生命周期服务排名

一、引言 对初创者、成长型中小企业乃至规模扩张期的财务负责人而言,财税合规与成本控制始终是并行不悖的核心诉求。2025年第三季度国家市场监管总局数据显示,全国新设市场主体同比增长百分之七点四,其中七成以上选…

redis-分级管理及容灾冷处理

redis-分级管理及容灾冷处理分级管理 如果redis主从集群中的slave节点较多时,他们的数据同步会对master节点造成较大的性能压力。此时可以对这些slave节点进行分级管理。设置方式是:让低级别的slave节点指定它slaveo…

2025年国内中厚板供应推荐:全流程服务助力工程高效交付

在基建投资持续加码、制造业智能化升级的2025年,中厚板作为工程建设与机械制造的重要原材料,其供应稳定性、产品质量及定制服务能力成为企业选型的关键。据《中国钢铁工业协会》数据显示,2025年国内中厚板市场需求同…

Redis常用命令指南

一、核心数据结构操作 1. 字符串(String)命令 参数 说明 示例SET key value [EX seconds] 设置键值 SET user:1 "Alice" EX 60 (带过期时间)GET key 获取值 GET user:1INCR key 原子递增 INCR page_viewsMSE…

2025 年塑胶跑道厂家最新推荐排行榜:聚焦优质企业核心优势,助力采购决策

引言 当下,全民健身热潮推动体育场地建设需求激增,塑胶跑道作为核心设施,市场规模不断扩大。但行业快速发展中,部分厂商为逐利降低标准,使用劣质原材料导致跑道异味、褪色、起层,施工不规范也使场地平整度差、寿…

2025年10月益生菌厂家评价榜:五强排名与场景化选购建议

把“益生菌”三个字输入搜索框,跳出的页面往往让人更纠结:工厂照片雷同、菌株编号像密码、价格从几十到上千悬殊。后台留言里,问得最多的三句话是“给娃吃该挑哪家”“代工贴牌会不会踩坑”“月销百万的牌子真的靠谱…

【2025-10-18】连岳摘抄

23:59救烦无若静,补拙莫如勤。——白居易人生最重要的变量,是时间。不善于使用时间,只是当下的一个三维动物。善于使用时间,在时间长河里变换角度观察当下,你则是一个四维动物,丰富从容得多。三维动物,当下解决…

11 个在 GitHub 上最受欢迎的开源无代码 AI 工具

盘点了 11 款融合 AI 的开源无代码工具,涵盖智能建模、流程自动化、Agent 构建与内容生成,帮你快速找到最适合的平台。原文链接:11 个在 GitHub 上最受欢迎的开源无代码 AI 工具 引言 过去一年,AI 与无代码的融合速…

2025 年水泥管源头厂家最新推荐榜单:国标 / 二级 / 钢筋混凝土 / 大口径 / 平口等多类型产品实力企业全方位剖析

引言 当前基础设施建设领域对水泥管的需求持续攀升,无论是市政排水、输水工程,还是农村水利、工业园区建设,水泥管的质量与供应稳定性都直接决定项目成效。但市场上水泥管源头厂家数量繁杂,部分企业存在产品规格不…

什么?就是工业视觉检测里的 “柔性”

什么?就是工业视觉检测里的 “柔性”pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mona…

2025 年灌胶机厂家最新推荐排行榜:真空 / 全自动 / AB 双液等类型设备企业精选指南

引言 当前制造业向高精度、自动化方向加速升级,灌胶机作为电子半导体、汽车制造、医疗设备等领域的核心设备,直接影响产品质量与生产效率。但市场上灌胶机品牌繁杂,设备类型涵盖真空、全自动、AB 双液等多种,不同企…

吴恩达深度学习课程一:神经网络和深度学习 第三周:浅层神经网络 课后作业和代码实践

此分类用于记录吴恩达深度学习课程的学习笔记。 课程相关信息链接如下:原课程视频链接:[双语字幕]吴恩达深度学习deeplearning.ai github课程资料,含课件与笔记:吴恩达深度学习教学资料 课程配套练习(中英)与答案…

2025 年豆腐机厂家最新推荐榜权威发布:豆腐豆皮 / 豆干 / 成型机企业深度解析,附选型指南

引言 豆制品加工行业中,豆腐机的性能直接决定成品品质与生产效益,但当前市场痛点显著。技术层面,部分设备仍沿用传统工艺,依赖人工操作导致效率低下,且成品口感、卫生标准波动大;选型层面,品牌数量超千家,既有…

TCP 和 UDP 协议的通信解析

一、TCP 通信阶段(面向连接) 1. 连接建立阶段(三次握手) sequenceDiagramClient->>Server: SYN(seq=x)Server->>Client: SYN-ACK(seq=y, ack=x+1)Client->>Server: ACK(ack=y+1) 关键步骤…

易基因:华农王应祥/杨存义ChIP-seq等揭示大豆开花时间调控及区域适应性的表观分子机制|NC(IF15.7)

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 近日,华南农业大学生命科学学院王应祥课题组和华南农业大学农学院杨存义课题组合作探究了大豆开花进程的调控机制,特别是组蛋白去甲基化酶GmLDL2(…

SketchUp 的超强搭档​:高效建模坯子插件库 v3.2.1

坯子插件库 v3.2.1:SketchUp 的超强搭档​ 在建筑设计、室内设计等创意领域,SketchUp 凭借其简单易用、直观的特点,成为设计师们手中不可或缺的 3D 建模利器。而对于 SketchUp 2022 - 2024 版本的用户来说,坯子插件…

Gitee DevOps平台:解码中国企业数字化转型的加速引擎

Gitee DevOps平台:解码中国企业数字化转型的加速引擎 在全球数字化转型浪潮中,中国企业的技术升级路径正在形成独特的发展曲线。作为这一进程中的关键支撑,DevOps理念已经从单纯的技术工具演变为企业数字化战略的核…