[题解]SFMOI Round I A~C

news/2024/12/22 1:57:38/文章来源:https://www.cnblogs.com/Sinktank/p/18445821

Portal:https://www.luogu.com.cn/contest/179008

\(\bf{100+50+50+25+5=\color{indianred}225\color{black}\ ,\ rk.\ 184}\)


A - Strange Cake Game

显然对于小W,向下移动蛋糕刀是最有利的;对于小M,向右移动是最有利的。所以双方以最佳状态移动,最终\(x\le y\)的巧克力是小W的。直接统计输出即可。别忘了开long long

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,k,sum;
signed main(){cin>>n>>m>>k;for(int i=1;i<=k;i++){int x,y;cin>>x>>y;if(y>=x) sum++;}cout<<sum;return 0;
}

B1 - Strange Madoka Game

我们第一次提问\(x\),第二次提问\(x+1\)。考虑\(m\)和对方回答的关系。

\(x=6\)举例,我们把上图中每个橙色方块称作一个区块。可以发现,第\(1\)个区块的值与对应的模\(7\)的值相差\(0\),第\(2\)个区块的值与对应模\(7\)的值相差\(1\)(模\(7\)意义下的),第\(3\)个区块则相差\(2\)……

所以我们发现规律:记\(m\bmod x=a,m\bmod (x+1)=b\),那么在区块大小足够的前提下(将\(x\)设为一个很大的值即可保证区块足够大),\((a-b)\bmod (x+1)\)就是所在区块\(-1\),自然\(m\)可以表示为\([(a-b)\bmod (x+1)]\times x+a\)。还是注意开long long

赛时没开long long吃了一发,然后回答没输出感叹号又吃了一发,然后没清空缓冲区又吃了一发(汗

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t;
const int x=399999999;
signed main(){cin>>t;int a,b;while(t--){cout<<"? "<<x<<endl;cin>>a;cout<<"? "<<x+1<<endl;cin>>b;int chunk=(a-b+x+1)%(x+1);cout<<"! "<<chunk*x+a<<endl;}return 0;
}

B2 - Strange Homura Game

这个题也简单。先提问一个很大的\(x\)(比如\(10^{18}\)),假设对方回答为\(a\),那么再询问\(x-a-1\),假设回答为\(b\),那么\(m=b+1\)

这是因为\(x\bmod m=a\),所以\((x-a-1)\bmod m=(m-1)\)

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t;
signed main(){cin>>t;int a,b;while(t--){cout<<"? 1000000000000000000"<<endl;cin>>a;cout<<"? "<<1000000000000000000-a-1<<endl;cin>>b;cout<<"! "<<b+1<<endl;}return 0;
}

C - Strange Train Game

真的好题,思路很巧妙。

我们把所有操作放在一张\(n+1\)个节点的无向图上,将所有\(l_i\)\(r_i +1\)连边。我们有一个结论:
能够交换区间\([l,r]\)而不对其他下标产生影响,当且仅当\(l\)\(r+1\)在一个连通块中。
这是因为\(l\)\(r+1\)在同一连通块中,所以存在\(l\)\(r+1\)的路径,这条路径可能会经过超出\([l,r+1]\)边,但这种

比如下图,\((1,3),(1,7),(8,10),(6,10)\)这些操作所连成的边处于一个连通块中,那么我们可以交换区间\([4,5]\)而不影响其他下标。

所以我们可以贪心考虑每一个位置\(i\),如果\(a_i=b_i\),就忽略掉,否则就找到\(i\)所在连通块中最大的节点\(nxt\),如果\(nxt=i\),就说明无法修改当前点,否则贪心地将\([i,nxt-1]\)的所有位置都进行操作。

为什么每次操作\([i,nxt-1]\)能保证正确性?因为\(nxt-1\)是连通块中最大节点,所以如果\(i\)所在连通块的其他节点\(j\)也需要修改,就会把\([j,nxt-1]\)再进行翻转,就抵消掉了。

点击查看代码
#include<bits/stdc++.h>
#define N 200010
#define int long long
using namespace std;
int n,m,fa[N];
bool op[N];
string a,b;
int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
void merge(int u,int v){u=find(u),v=find(v);if(u<v) fa[u]=v;else if(u>v) fa[v]=u;
}
signed main(){cin>>n>>m>>a>>b;a=' '+a,b=' '+b;for(int i=1;i<=n;i++){if(a[i]==b[i]) fa[i]=i+1;else fa[i]=i;}fa[n+1]=n+1;while(m--){int l,r;cin>>l>>r;merge(l,r+1);}bool cur=0;for(int i=1;i<=n;i++){if(a[i]==b[i]) continue;cur^=op[i],a[i]^=cur;int nxt=find(i);if(a[i]=='0'&&nxt>i){a[i]='1',cur^=1,op[nxt]^=1;}}cout<<a.substr(1,n);
}

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

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

相关文章

11-网络物理隔离技术原理与应用

11.1 概述 1)概念 目的:既能满足内外网信息及数据交换需求,又能防止网络安全事件出现 基本原理:避免两台计算机之间直接的信息交换以及物理上的连通,以阻断两台计算机之间的直接在线网络攻击 2)风险网络非法外联 U盘摆渡攻击 网络物理隔离产品安全隐患 针对物理隔离的攻击…

电路的三态机制——以MUX为例

CMOS 电路一般而言是不提供高阻态状态的,要提供高阻状态就得有特殊的电路安排,可是那样就使芯片上的电路单元不规整划一了……对于像这样的电路的实现,现在采用的策略是将其做成标准件供程序员选用,但不向程序员开放高阻状态,以免滥用——《香山源码剖析》5.1 组合电路电路…

深入 MUX 的三态机制

CMOS 电路一般而言是不提供高阻态状态的,要提供高阻状态就得有特殊的电路安排,可是那样就使芯片上的电路单元不规整划一了……对于像这样的电路的实现,现在采用的策略是将其做成标准件供程序员选用,但不向程序员开放高阻状态,以免滥用——《香山源码剖析》5.1 组合电路电路…

测试H7-TOOL的CANFD助手J1939批量数据传输连续运行30个小时稳定不丢包

根据客户需求做的一个不断电连续运行测试。 测试条件 1、H7-TOOL的CAN/CANFD助手控制一个节点设备 2、使用J1939协议 3、经典CAN方式,波特率250KbpsJ1939测试命令,250ms一次发送接收测试昨天下午三点到今晚9点半,共计30个小时不断电连续测试, 实时记录的文件:现在还在持续运…

征程6 NV12 理论与代码详解

1.引言 使用地平线 征程 6 算法工具链进行模型部署时,如果你的模型输入是图像格式,通常会遇到如下信息。对于初学者,可能会存在一些疑问,比如:nv12 是什么? 明明算法模型是一个输入,为什么看 hbm 模型,有 y 和 uv 两个输入? 为什么 uv 的 valid shape 不是 (1,224,22…

Numpy快速上手

NumPy(Numerical Python的简称)是高性能科学计算和数据分析的基础包。使用PyTorch构建神经网络模型时,通常会使用NumPy实现数据预处理和一些模型指标的计算,飞桨中的Tensor数据可以很方便的和ndarray数组进行相互转换。 NumPy具有如下功能:ndarray数组:一个具有矢量算术运…

工地烟火AI监控识别分析系统

工地烟火AI监控识别分析系统通过yolov7网络模型技术,工地烟火AI监控识别分析系统基于人工智能深度学习视频分析技术,实现对工地或者厂区现场监控区域内的烟火进行实时分析报警。工地烟火AI监控识别分析系统不依赖其他传感设备,直接对厂区及工地现场视频监控区域的画面的烟雾…

作业区域工服穿戴识别系统

作业区域工服穿戴识别系统基于yolov7视频智能图像识别技术,作业区域工服穿戴识别系统利用深度学习技术,不需人为干预自动识别现场施工作业人员未按要求穿工作服行为,代替后台工作人员执勤时的人眼判断,为厂区及工地作业安全生产保驾护航。作业区域工服穿戴识别系统无需新增…

设备仪器仪表盘读数识别系统

设备仪器仪表盘读数识别系统基于YoLov8网络模型智能视觉分析技术,设备仪器仪表盘读数识别系统自动识别指针型仪表读数。设备仪器仪表盘读数识别系统对工业仪表盘数据进行实时读取,不需人为干预当监测到指针仪表读数数据异常时,立即自动抓拍告警提醒后台值班管理人员及时处理…

互联网明厨亮灶智慧监管系统

互联网明厨亮灶智慧监管系统基于AI视觉图像分析技术,互联网明厨亮灶智慧监管系统可以识别餐厅学校食堂后厨人员行为及穿戴是否合规,除此之外,互联网明厨亮灶智慧监管系统对于未经允许出入后厨的人员、不符合规定的着装(如不穿厨师服、不按要求穿戴厨师帽或者佩戴口罩和手套…

防护服穿戴检测识别系统

防护服穿戴检测识别系统基于工厂工作服图片数据识别训练,防护服穿戴检测识别系统自动完成对工厂/工地施工作业现场视频画面操作人员是否按照要求穿戴行为实时分析。防护服穿戴检测识别系统依托于智能视频AI分析,除了防护服穿戴识别以外还可针对现场作业监控区域范围人员偷偷离…

南沙C++信奥赛陈老师解一本通题 1270:【例9.14】混合背包

​【题目描述】一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。求解将哪些物品装入…