题解 | #小球投盒#

小球投盒

https://www.nowcoder.com/practice/e0e8a6f2ba7747b5a9f8a8dc6fa3e9f1

每次 1 操作之后只有两种情况完成目标,同盒子 x 有过 2 操作,或者所有盒子都有过 1 操作

每次 2 操作之后只有两种情况完成目标,同盒子 x 有过 1 操作,或者有其他盒子有过 2 操作

可以使用map维护已经操作过的 1 和 2 操作,注意检查某操作是否存在(某个键是否存在)需要使用 count ,如果直接使用 mp[x]==0 来判断会创建这个元素

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5 + 5;
int __t = 1, n, m, k, x;
void solve() {
    cin >> n >> m;
    map<int, int> mp1, mp2;
    for (int i = 1; i <= m; ++i) {
        cin >> k >> x;
        if (k == 1) {
            mp1[x] = 1;
            if (mp2.count(x) || mp1.size() == n) {
                cout << i << "\n";
                return;
            }
        } else {
            mp2[x] = 1;
            if (mp1.count(x) || mp2.size() > 1) {
                cout << i << "\n";
                return;
            }
        }
    }
    cout << -1 << "\n";
    return;
}
int32_t main() {
#ifdef ONLINE_JUDGE
    ios::sync_with_stdio(false);
    cin.tie(0);
#endif
    // cin >> __t;
    while (__t--)
        solve();
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 14:45
bg是二本双一流硕,目标是Java后端开发岗,投暑期实习0大厂面试,只有极少的大厂测开,可能投的晚加上简历太烂加上0实习?求大佬们给个建议
程序员小白条:别去小厂,初创或者外包,尽量去中小,100-499和500-999,专门做互联网产品的,有公司自研的平台和封装的工具等等,去学习一些业务相关的,比如抽奖,积分兑换,SSO认证,风控,零售等等,目标 Java 后端开发吗?你要不考虑直接走大厂测开?如果技术不行的话,有面试你也很难过的
实习,不懂就问
点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
6
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务