首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【第8题】这是一道排列组合题

【第8题】这是一道排列组合题

作者头像
小码匠
发布2023-08-31 13:59:16
发布2023-08-31 13:59:16
21100
代码可运行
举报
运行总次数:0
代码可运行

题目:ABC159 - D - Banned K

题目原文请移步下面的链接

  • https://www.luogu.com.cn/problem/AT_abc159_d
    • 参考题解:https://www.luogu.com.cn/problem/solution/AT_abc159_d
  • 标签:数学容斥原理

题解

思路(和思路无关的废话)
  • 这是一道看题就有思路的题;
  • 这是一道让我非常喜悦的题,我可以虐他了;
  • 这是一道经典的排列组合题;
  • 这是一道提交了3次才过的【普及-】题;
  • 这是一道OI圈中【不开long long见祖宗】题;
  • 这是一道最近10分钟就可以AC的题;
  • 这是一道最近不会在做如此简单的题。
代码
代码语言:javascript
代码运行次数:0
运行
复制
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;

void best_coder() {
    int n;
    scanf("%d", &n);
    unordered_map<int, LL> um;
    vector<int> v(n);
    for (int i = 0; i < n; ++i) {
        scanf("%d", &v[i]);
        ++um[v[i]];
    }
    LL cnt = 0;
    for (auto i : um) {
        if (i.second > 1) {
            cnt += i.second * (i.second - 1) / 2;
        }
    }
    for (auto i : v) {
        if (um[i] > 1) {
            printf("%lld\n", cnt - (um[i] - 1));
        } else {
            printf("%lld\n", cnt);
        }
    }
}

void happy_coder() {
}

int main() {
    // 提升cin、cout效率
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    // 小码匠
    best_coder();

    // 最优解
    // happy_coder();

    // 返回
    return 0;
}

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小码匠和老码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目:ABC159 - D - Banned K
  • 题解
    • 思路(和思路无关的废话)
    • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档