AtCoder Beginner Contest 216 D - Pair of Balls(搜索)

atcoder-cli:AtCoder命令行工具 atcoder-cli 命令行工具 获取比赛信息 创建比赛项目目录使用自定义模板自动配置 与 提交没有指定网址的代码 自动下载样本输入/输出 要求 node.js (可选,但推荐) 安装 $ npm install -g atcoder-cli 用法 $ acc login # login your atcoder account $ acc session # check login status $ # your login session will be saved to a local file, but your password won't be saved $ # to delete the session file, use `acc logout` $ acc new abc001 # "abc001/" directory will be created $ cd abc001/ $ acc contest # show the contest information $ acc tasks # show task list $ acc add $ cd a/ $ 立即下载

题目大意

有n种颜色,每种颜色有2个小球,现在将这2n个小球分别放到m个容器里,当两个容器的顶部小球颜色相同时,可以把这两个小球拿出容器,问可不可能把2n个小球从m个容器中拿出来。

思路

因为每个容器的小球是满足先输入的先出容器的,所以用m个队列存每个容器里小球的情况。

用一个数组vis[ i ]记录当前第 i 种颜色的小球是否出现过在某个容器的顶部,再用一个map记录当前第 i 种颜色的小球第一次出现在哪个容器的顶部。

枚举每一个容器,如果容器 i 的顶部小球对应的颜色出现过,即vis[ ] = 1的话,用map找到顶部小球对应颜色第一次出现的容器,删除该容器和容器 i 的顶部小球,并对两个容器继续重复判断顶部小球对应的颜色是否出现过。

这种方法的时间复杂度是O(n)的,但是空间复杂度会很大,不过还是能满足题目要求的。

#include <bits/stdc++.h>
using namespace std;

const long long INF = 0x3f3f3f3f3f3f3f3fLL;
unordered_map<int, int>mp;
queue<int> q[200005];
int vis[200005];
void dfs(int i)
{
    int pos = mp[q[i].front()];
    q[pos].pop();
    q[i].pop();
    while(!q[pos].empty() && vis[q[pos].front()])
    {
        dfs(pos);
    }
    if(!q[pos].empty())
    {
        vis[q[pos].front()] = 1;
        mp[q[pos].front()] = pos;
    }
}
int main()
{
    int n, m;
    scanf("%d%d", &n, &m);
    memset(vis, 0, sizeof(vis));
    for(int i = 1; i <= m; i++)
    {
        int k;
        scanf("%d", &k);
        while(k--)
        {
            int a;
            scanf("%d", &a);
            q[i].push(a);
        }
    }
    for(int i = 1; i <= m; i++)
    {
        while(!q[i].empty() && vis[q[i].front()])
        {
            dfs(i);
        }
        if(!q[i].empty()) //记录栈顶元素时记得不要越界了
        {
            vis[q[i].front()] = 1;
            mp[q[i].front()] = i;
        }
    }
    int flag = 0;
    for(int i = 1; i <= m; i++)
    {
        if(!q[i].empty()) //如果所有的队列都为空,说明全部小球都拿出来了
        {
            flag = 1;
            break;
        }
    }
    if(flag)
    {
        printf("No\n");
    }
    else
    {
        printf("Yes\n");
    }
    return 0;
}

红外避障模块介绍 该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接回输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~30cm,工作电压为3.3v-5v。该模块测距离2~~30cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;1.VCC外接3.3v-5v电压(可以直接与5v单片机和3.3v单片机相连). 阅读详情

相关推荐

私有化大模型部署:企业AI应用的核心架构

私有化大模型部署不是“一次性项目”,而是企业AI的“长期主义”投资——它需要企业投入时间、金钱和精力,但回报是数据安全、定制化能力、核心竞争力的提升。就像“自家厨房”一样,私有化大模型可能初期麻烦,但一旦搭建起来,就能为企业“做”出符合自己口味的“特色菜”,而这些“特色菜”,正是企业在激烈竞争中的“护城河”。愿你能构建属于自己的“AI大脑”,让技术真正赋能业务,让复杂变简单,让深奥变通透。附录:私有化大模型部署架构图(注:可根据企业需求调整,此为通用架构)

AI天才研究院 1022

AtCoder Beginner Contest 216 D(构图 + 拓扑排序)

首先感谢大佬博客的题解,拓扑排序yyds! 大佬博客 题解: 对于每一个圆筒内的球,只有上边的拿走之后才能拿走下一个,从上到下连单向边 例如1->2->3,1拿走2才能拿,2拿走之后3才能拿 对于所有圆筒,最后可以构建一个有向图,如果出现环的话,肯定不能满足题目要求 例如1->2->3->1,1拿走2才能拿走,2拿走3才能拿走,3拿走1才能拿走,这就矛盾了 对于2n个点,拿n次才能恰好拿完,如果出现环的情况,拓扑排序的答案必定不是n 代码如下: int h[N], ne[2 *

weixin_52278699的博客 347

FastAPI + LLM 实战:5分钟搞定本地模型API服务部署(含避坑指南)

本文详细介绍了如何使用FastAPI和LLM(大语言模型)快速部署本地API服务,涵盖环境准备、模型集成、性能优化及避坑指南。通过实战示例,帮助开发者在5分钟内完成从零到生产的部署过程,提升AI应用开发效率。

weixin_29062963的博客 103

AtCoder Beginner Contest 216 D - Pair of Balls 大模拟

D 参考 dfs那里很妙:队列i和local成对子,一起pop后要继续搜loca,因为i在退出dfs后会继续在while里判断,如果还有又进dfs; #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; #define pb push_back #define fi first #define se second #define mem(a,x) me

karshey的博客 332

图解5G HARQ-ACK反馈:从DCI解析到PUCCH发送的完整数据流

本文详细解析了5G通信系统中HARQ-ACK反馈机制的完整流程,从DCI解码到PUCCH发送的实战指南。重点介绍了HARQ-ACK码本生成、DCI关键参数解读以及PUCCH资源映射等核心技术环节,帮助工程师深入理解5G NR中的数据传输可靠性保障机制。

weixin_27722377的博客 396

CUDA&PCL 点云体素下采样

CUDA&PCL 点云体素下采样

dayuhaitang1的博客 1268

At coder——C - Skill Up (简单搜索)

添加链接描述 本题数据量不大,可以直接dfs,但是我一时没有想起来全部遍历的搜索是怎样的(懵逼了!走四个方向能想出来,走n个方向就想不出来了我好菜) 用一个数组存每次的学习进度,每次学习了一本书之后就把这本书的价值加到存价值的遍历上,然后遍历存学习进度的数组看是否都符合题目的要求,不符合的话就出来后继续下一步深搜,符合的话就让当前的费用与当前存的最小费用比取最小存下然后退出,进入下一次的搜索 #include<iostream> #include<string.h> #include

NGUP_LEE的博客 794

179、瑞芯微RK3588在边缘盒子中的多摄同步架构——基于PLL的帧同步与曝光同步的实测调优

第一,RK3588的多摄同步,硬件上确实支持,但软件配置的坑比想象的多。第三,传感器的tPD差异是最大的不确定因素,选型时尽量选同一批次,而且要在量产前做全温测试——我遇到过低温下tPD变化超过3微秒的情况,直接导致同步失效。我遇到过一批IMX415,tPD差异达到±8微秒,直接超出SYNC控制器的补偿范围,最后只能挑芯片,把差异小的装到同一台设备里。别用100MHz,虽然分辨率更高,但高频信号在PCB走线上更容易引入EMI,边缘盒子的结构件往往没有很好的屏蔽,实测100MHz下同步信号边沿抖动明显增大。

zzfmlxs的博客 36

AtCoder题解集锦

AtCoder题解集锦 自己从全网整理的一些优质AtCoder题解,目前只有ABC(AtCoder Beginner Contest)的C~F。不定期更新。 如您有更多需求,欢迎私信我或在评论区留言! 用法 表格查找 找到对应比赛的行 找到对应题目的列 该位置即为对应的题解 题号查找 在浏览器中按下搜索快捷键Ctrl+F,调出搜索窗口。 输入对应的题号,如244F 找到对应题解 标题查找 在浏览器中按下搜索快捷键Ctrl+F,调出搜索窗口。 输入题目标题,如Shortest Good

天生我材必有用,千金散尽还复来。 1万+

国科大学习资料--现代数字信号处理I(张颢)--2020年期末考试试卷

国科大学习资料–现代数字信号处理I(张颢)–2020年期末考试试卷 国科大学习资料–现代数字信号处理I(张颢)–2020年期末考试试卷 国科大学习资料–现代数字信号处理I(张颢)–2020年期末考试试卷 =========================================================================================================================================================

无名何许人的博客 3574

你学Simulink--基于储能系统的建模与仿真场景:飞轮储能系统在电网调频中的作用仿真

本文详细介绍了利用Simulink+Simscape搭建飞轮储能系统(FESS)电网调频仿真模型的全过程。主要内容包括:系统工作原理及调频作用分析,基于Simulink的模块化建模步骤(飞轮、电机/发电机、功率电子接口等组件搭建),调频控制策略实现(频率检测、功率指令生成和模式切换),以及仿真参数设置与结果分析方法。该模型可有效模拟FESS在电网频率调节中的快速响应特性,为新能源存储和智能电网研究提供重要仿真工具,同时可通过参数优化和算法改进进一步提升系统性能。

xiaoheshang_123的博客 168

AtCoder Beginner Contest 216 D - Pair of Balls (思维建图 拓扑排序判断有向图是否有环)

原题链接 题意: 有nnn个数,每个数都会出现两次。mmm个柱子,并给出柱子上的数。当且仅当两个相同的数都处于柱子的最上面时,才能够将两个数删除。问最后能否将柱子的数都删除。 思路: 思维建图,对于一个柱子上的数1,21,21,2,从111向222连单向边,表明只有111拿走了222才能拿走。 最后得到有向图,如果有环的话,就是NoNoNo。比如1−>2−>3−>11->2->3->11−>2−>3−>1说明只有111拿了222才能拿,222拿了333才

我们都有光明的未来 617

大数据安全 | 期末复习(上)| 补档

大数据定义:无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

知识库搭建ing 2588

AtCoder Beginner Contest 231 E 贪心 DFS 记忆化搜索

题目 有N种货币,每种对应ai元,a1一定等于1,且ai-1一定是ai的倍数。 求出完成一笔X元的交易所需的最小货币数。 即支付钱加找钱所需的货币数加起来最小。 题解思路 贪心策略 用这个付完,即不找零。 要么用这个多付钱(前提是本来有多,否则就是白费的搜索)然后求最小的找零数。 在这两种情况中取min 因为a是从1开始的,所以必然能取到数。 这题复杂度一言难尽,居然能这么暴力。 AC代码 #include <bits/stdc++.h> //#include <unordered_map

从你的全世界路过 525

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

D - Yet Another Recursive Function(记忆化搜索)[ AtCoder Beginner Contest 275]

0≤N≤1018数据范围很大所以不可能从前到后递推得到答案。

m0_60593173的博客 361

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

AtCoder Beginner Contest 188

ABC都很水 D 很裸的差分题 #include <bits/stdc++.h> #define IO \ ios::sync_with_stdio(false); \ // cin.tie(0); \ // cout.tie(0); using namespace std; typedef long long LL; typedef unsigned long long ULL; co

一个小菜鸡的博客 321

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

AtCoder 329. E - Stamp (搜索 + 思维

【代码】AtCoder 329. E - Stamp (搜索 + 思维。

weixin_73227648的博客 565

Atcode搜索

因为是bfs,所以简单的证明可以知道,如果一条路径到达一个已经到达过的点,且血量还小于等于visit时,那么即使完成了任务,其步数也不会时最优的。反之,如果到达一个点,其血量值可以更大,那么这就一种可能的路径,并不是重复到达。第一个问题就交由bfs来解决。因为之后我们要使得到达这个点的能量最大才可以走这个点,如果设置为0,假如到达终点的时候能量恰好为0,那么我们在终点的上一个点能量为1,就无法向终点走了,因为终点的0并不大于visted数组,所以visited设置为-1.

m0_73862548的博客 676

【AtCoder ABC310D】Peaceful Teams 题解(深度优先搜索+暴力枚举+剪枝)

有N位运动员,其中Ai​与Bi​1≤i≤M)两人不能在同一小组,现在,我们给定小组数T请你分配他们到任意一个小组。注意小组不能为空。请求出所有不同的方案的数量。

HEX9CF的技术博客 1130

AtCoder - abc184_f(折半搜索+二分)

这里写自定义目录标题欢迎使用Markdown编辑器功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdow

weixin_51619205的博客 394

ABC326 D-F

ABC326补题

qq_73994342的博客 431

AtcoderABC233场

其中pos表示当前处理的袋子索引,seki表示当前累积的乘积。当pos等于N时,表示已经处理完所有袋子,判断seki和X是否相等,如果相等则计数器加一。如果该差值大于等于0,则说明已经满足条件,不需要再贴任何10日元的邮票;如果该差值小于0,则需要将其除以10并向上取整,得到所需的10日元邮票数量。我们要从每个袋子中选择一个球,使得所选球的数字乘积等于给定的X。Takahashi已有X日元邮票,计算出Takahashi至少需要再贴多少个10日元的邮票才能使得信封上的邮票总价值达到Y日元。

m0_73618658的博客 273

atcoder一些题目复盘以及思路

题目大意:对于任意一个数,考虑它的二进制表示,从最低位开始删除连续的零,直到首次遇见1时停止也就说,对于函数f凡是。(该式子括号内容易理解,写出来同余式,移项即可,括号外又mod则是为了处理括号内为。的数的集合,(对于x从0枚举到25一定可以讨论完a中的所有数)那么。具有相同结果的变量其函数值一定相同,于是考虑从。的和那么现在要做的就是如何处理这个和。,遍历数组a,引入数组cnt维护可以与当前。匹配的数的个数,val维护可以与当前。意义下的补数,并且该补数的值为。匹配的数的和,则容易得出。

2201_75845839的博客 539

AtCoder Beginner Contest 340

选择用vector,如果是操作1,就pushback。用dikjstra算法即可,一个很板的题。很简单的记忆化搜索,按照题意模拟即可。如果是操作2,直接从后往前找第k个。单点查询,区间修改,懒惰标记。

louisdlee的博客 543

AtCoder:Colorful Balls(思维 & 数论)

D - Colorful Balls Time limit : 2sec / Memory limit : 256MB Score : 1000 points Problem Statement Snuke arranged N colorful balls in a row. The i-th ball from the left has color ci a

junior19的博客 1343

ABC D - Pair of Balls (模拟+思维+队列)

链接 // Problem: D - Pair of Balls // Contest: AtCoder - AtCoder Beginner Contest 216 // URL: https://atcoder.jp/contests/abc216/tasks/abc216_d // Memory Limit: 1024 MB // Time Limit: 2000 ms // // Powered by CP Editor (https://cpeditor.org) #include <b

林苏泽 464
上一篇: Codeforces Round #740 (Div. 2) B. Charmed by the Game
下一篇: AtCoder Beginner Contest 217 D - Cutting Woods(set + 二分查找)
路过放个屁
博客等级 码龄6年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值