新闻详情

新闻详情

首页 / 资讯中心 / 详情

打卡信奥刷题(3602)用C++实现信奥题 P11667 [USACO25JAN] Astral Superposition B

发布时间:2026/10/2 18:09:41来源:尧图网络
打卡信奥刷题(3602)用C++实现信奥题 P11667 [USACO25JAN] Astral Superposition B
P11667 [USACO25JAN] Astral Superposition B题目描述注意本题的时间限制为 4 秒通常限制的 2 倍。Bessie 正在使用她超酷的望远镜拍摄夜空中所有星星的照片。她的望远镜能够拍摄到一张N×NN \times NN×N1≤N≤10001 \leq N \leq 10001≤N≤1000的星星照片其中每个像素是一颗星星或者空旷的天空。每颗星星可由恰好一个像素表示并且没有两颗不同的星星位于同一像素内。一夜之间一些奇怪的事情发生在了天空中的星星之上。每颗星星要么消失要么向右移动AAA像素并且向下移动BBB像素0≤A,B≤N0 \leq A,B \leq N0≤A,B≤N。如果一颗星星消失或移动超出照片边界它将不再出现在第二张照片中。Bessie 在星星移动位置之前和之后拍了照片但在 Mootoshop 中进行了一些实验后她不小心将一张照片叠加到了另一张上。现在她可以在两张照片都是天空的位置看到白色white像素在星星仅存在于恰好一张照片的位置看到灰色gray像素而在两张照片中都有星星的位置看到黑色black像素。Bessie 同时记得没有新的星星移动入第二张照片的范围从而她的第一张照片包含了夜空中所有的星星。对于TTT1≤T≤10001 \leq T \leq 10001≤T≤1000个独立的测试用例给定最终的照片求在移动事件发生之前天空中星星的最小可能数量。如果不存在星星的排列可以产生给定的最终照片输出−1-1−1。输入格式输入的第一行包含TTT以下为TTT个测试用例。每个测试用例的第一行包含NNNAAABBB。以下NNN行每行表示叠加后的照片的一行。从上到下第iii行由一个字符串ci,1ci,2…ci,Nc_{i,1}c_{i,2}\dots c_{i,N}ci,1​ci,2​…ci,N​表示其中ci,j∈{W,G,B}c_{i,j} \in \{\texttt{W,G,B}\}ci,j​∈{W,G,B}分别表示颜色为白色灰色以及黑色。输入保证所有测试用例的N2N^2N2之和不超过10710^7107。输出格式对于每一个测试用例输出移动之前存在的星星的最小数量或−1-1−1表示不可能。输入输出样例 #1输入 #11 3 0 0 WWB BBB GGG输出 #17输入输出样例 #2输入 #23 5 1 2 GWGWW WGWWW WBWGW WWWWW WWGWW 3 1 1 WWW WBW WWW 3 1 0 GGB GGW WWW输出 #24 -1 4说明/提示样例解释在样例 #1 中没有移动发生。第一张照片如下. 表示天空* 表示星星..* *** ***第二张照片中最下方一行的星星都消失了如下..* *** ...这是产生叠加后照片的唯一方式所以初始时星星的最小可能数量为777。对于样例 #2在第一个测试用例中初始时至少有444颗星星。如果我们令(r,c)(r,c)(r,c)表示从上到下第rrr行和从左到右第ccc列的交点一种可能性是它们最初位于(1,1)(1,1)(1,1)(3,2)(3,2)(3,2)(2,2)(2,2)(2,2)和(1,3)(1,3)(1,3)。除了位于(2,2)(2,2)(2,2)的星星消失之外其他所有星星都移动了。在第二个测试用例中在给定的移动方式下没有任何初始照片中的星星排列可以产生中间的黑色像素。在第三个测试用例中初始时至少有444颗星星。一种可能性是它们最初位于(1,1)(1,1)(1,1)(1,2)(1,2)(1,2)(1,3)(1,3)(1,3)和(2,1)(2,1)(2,1)。在第二张照片中原先位于(1,1)(1,1)(1,1)的星星消失了原先位于(1,3)(1,3)(1,3)的星星移出了照片边界。其他两颗星星向右移动了111像素。子任务测试点 3AB0AB0AB0。测试点 4-7A1A1A1B0B0B0N≤10N\le 10N≤10。测试点 8-9A1A1A1B0B0B0。测试点 10-12没有额外限制。C实现#includebits/stdc.husingnamespacestd;intT,n,a,b,ans;charg[1010][1010];boolflag,vis[1010][1010];intmain(){ios::sync_with_stdio(0);cin.tie(0);cinT;while(T--){ans0;flag0;memset(vis,0,sizeof(vis));memset(g,0,sizeof(g));cinnab;for(inti0;in;i)cing[i];for(inti0;in;i){for(intj0;jn;j){if(g[i][j]B){vis[i][j]1;if(ibjag[i-b][j-a]!W)vis[i-b][j-a]1;else{flag1;break;}}elseif(g[i][j]G)if(!(ibjag[i-b][j-a]!Wvis[i-b][j-a]))vis[i][j]1;}if(flag){cout-1\n;break;}}if(!flag){for(inti0;in;i)for(intj0;jn;j)if(vis[i][j])ans;coutans\n;}}return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

移动云智算中心解密:GPU算力池化与调度如何降低AI成本 2026/10/2 19:02:10

移动云智算中心解密:GPU算力池化与调度如何降低AI成本

一开始我接到一个朋友的电话,他问:现在大家都在说算力不够,AI项目的GPU租不起,那么“移动云智算中心”到底是干什么的?我当时有点哭笑不得——这个名词拆开每个字都认识,合在一起却让他一头雾水。后来我发现…

阅读更多 →
自动标注三件套实战:Grounded-SAM + autodistill + X-AnyLabeling 构建高效数据流水线 2026/10/2 19:02:04

自动标注三件套实战:Grounded-SAM + autodistill + X-AnyLabeling 构建高效数据流水线

做数据标注这行最烦的就是重复劳动。一个框一个框去点、去拖、去调整顶点,几千张图下来眼睛都快瞎了。手速再快也顶不住数据量增长,而且不同人标注的尺度还不一样,同一个人上午和下午的标准都能飘。我这一年多一直在折腾自动标注这条路&#…

阅读更多 →
金融Agent模板库实战:用Claude搭建可落地的投研自动化工作流 2026/10/2 19:02:04

金融Agent模板库实战:用Claude搭建可落地的投研自动化工作流

打开GitHub趋势榜那天,我看到这个36K星的项目时本来没太在意,毕竟标题已经够直白——Claude金融Agent模板库。可点进去之后,我用了两天时间把里面的示例全部跑了一遍,才发现这类仓库对投资分析自动化的价值被严重低估。这期“每天…

阅读更多 →
Java类和对象核心原理:创建方式、深浅拷贝与面试避坑指南 2026/10/2 19:02:04

Java类和对象核心原理:创建方式、深浅拷贝与面试避坑指南

1. 先搞清楚:什么是类,什么是对象 做Java这么多年,我带过的实习生、转行过来的同事,几乎无一例外都在这两个词上栽过跟头。你要是去面试,十家公司有八家会问“类和对象的区别”,你要是答“类就是对象&#…

阅读更多 →
Grafana嵌入kiosk模式深度解析:URL参数驱动的嵌入式运行契约 2026/10/2 19:02:04

Grafana嵌入kiosk模式深度解析:URL参数驱动的嵌入式运行契约

1. 为什么Grafana嵌入第三方系统不是“加个iframe就完事”——从kiosk模式的四个开关说起你是不是也试过把Grafana面板用<iframe>塞进自己系统的页面里&#xff0c;结果发现&#xff1a;滚动条突兀地横在中间、右上角的“返回首页”按钮像根刺一样扎眼、用户一不小心点到…

阅读更多 →
用Stern-Brocot树求解区间内最小分母分数:从暴力枚举到工程实践 2026/10/2 19:02:04

用Stern-Brocot树求解区间内最小分母分数:从暴力枚举到工程实践

我前段时间被一个小问题卡住了&#xff1a;有两个 0 到 1 之间的小数 (a) 和 (b)&#xff0c;想找一个最小的正整数 (n)&#xff0c;让 (a \times n) 和 (b \times n) 之间刚好夹着一个整数。乍一看像是初中数学&#xff0c;真上手才发现里面全是坑。后来我把问题转化成“在区间…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉