CF1475-C. Ball in Berland

题意:

一个班级有\(a\)个男生和\(b\)个女生,现在这个班级有\(k\)对男女愿意一起出席毕业典礼,这里注意\(k\)对男女中可能会有某个男生或女生出现在多个\(pair\)中。

你从这\(k\)对中找出两对,使得这两对中的男生不相同、女生不相同,即一个男生或女生不可能在一个典礼中出现在两对中。

让你求出一共有多少种可能的组合方式。


思路:

枚举这\(k\)对,假设每对描述为\((b_i, g_i)\),那么\(k\)减去与\(b_i,g_i\)配对的人的数量\(N_{(b_i,g_i)}\),就是确定了\((b_i,g_i)\)之后可能的情况数。

那么答案\(ans=\frac{\sum_{i=1}^kN_{b_i,g_i}}2\),之所以要除以2是因为每个情况都会被计算两遍,比如对于枚举\((b_i,g_i)\)的时候会枚举到\((b_j,g_j)\),那么枚举到\((b_j,g_j)\)的时候同样也会枚举到\((b_i,g_i)\)。


AC代码:

#include <cstdio>
#include <cstring>
#include <iostream> typedef long long ll; const int Maxn = 200005; int in[Maxn][2];
/*
* in[i][0]:第i组的男生的编号
* in[i][1]:第i组的女生的编号
*/
int degree[2][Maxn];
/*
* degree[0][i]:与第i个男生配对的数量
* degree[1][i]:与第i个女生配对的数量
*/ void solve() {
memset(degree, 0, sizeof degree);
int a, b, k;
scanf("%d %d %d", &a, &b, &k);
for (int i = 0; i < k; i++) {
scanf("%d", &in[i][0]);
degree[0][in[i][0]]++;
}
for (int i = 0; i < k; i++) {
scanf("%d", &in[i][1]);
degree[1][in[i][1]]++;
}
ll ans = 0;
for (int i = 0; i < k; i++) {
int u = in[i][0];
int v = in[i][1];
ans += k - degree[0][u] - degree[1][v] + 1;
// +1 是因为当前枚举的pair被减掉两次
}
printf("%lld\n", ans / 2);
} int main() {
// freopen("/Users/chant/in.txt", "r", stdin);
int T;
scanf("%d", &T);
while (T--) {
solve();
}
return 0;
}

CF1475-C. Ball in Berland的更多相关文章

  1. Codeforces Round #277.5 (Div. 2)

    题目链接:http://codeforces.com/contest/489 A:SwapSort In this problem your goal is to sort an array cons ...

  2. Codeforces Round #697 (Div. 3)

    A.Odd Divisor 题意:问一个数是不是含有奇数因子 思路:就直接给这个数循环除以2,看看最后剩下的数是不是0,如果不是就有奇数因子,如果是就没有 想不到:1)当时想着用log2来解决问题,后 ...

  3. CF 370B Berland Bingo

    题目链接: 传送门 Berland Bingo time limit per test:1 second     memory limit per test:256 megabytes Descrip ...

  4. CodeForces 489B BerSU Ball (贪心)

    BerSU Ball 题目链接: http://acm.hust.edu.cn/vjudge/contest/121332#problem/E Description The Berland Stat ...

  5. B. Berland Bingo

    Lately, a national version of a bingo game has become very popular in Berland. There are n players p ...

  6. Codeforces Round #277.5 (Div. 2)B——BerSU Ball

    B. BerSU Ball time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  7. Codeforces Round #277.5 (Div. 2)---B. BerSU Ball (贪心)

    BerSU Ball time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  8. Yet Another Ball Problem

    Yet Another Ball Problem time limit per test 3 seconds memory limit per test 256 megabytes input sta ...

  9. Codeforces Round #277.5 (Div. 2) B. BerSU Ball【贪心/双指针/每两个跳舞的人可以配对,并且他们两个的绝对值只差小于等于1,求最多匹配多少对】

    B. BerSU Ball time limit per test 1 second memory limit per test 256 megabytes input standard input ...

随机推荐

  1. window10系统安装

    准备工作: 一个U盘,大概8GB左右的存储,用于存放windows镜像文件与驱动精灵离线版网卡驱动以及相关的应用应用软件等. window10镜像文件(iso文件) 微PE工具软件 软件下载: 前提: ...

  2. Q-Q图原理详解及Python实现

    [导读]在之前的<数据挖掘概念与技术 第2章>的文章中我们介绍了Q-Q图的概念,并且通过调用现成的python函数, 画出了Q-Q图, 验证了Q-Q图的两个主要作用,1. 检验一列数据是否 ...

  3. Mysql 中写操作时保驾护航的三兄弟!

    这期的文章主要是讲述写操作过程中涉及到的三个日志文件,看过前几期的话可能你或多或少已经有些了解了(或者从别的地方也了解过).比如整个写操作过程中用到的两阶段提交,又或者是操作过程中涉及到的日志文件,但 ...

  4. 控制tomcat日志文件的输出到catalina.out

    在catalina.sh中直接把下面的内容注释掉即可:

  5. Bitter.Core系列二:Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore ORM 之数据库连接

    Bitter.Core NETCore 相当的简单易用,下面附上使用示例: 数据中连接:请在你的NETCORE 项目中 创建:Bitter.json 配置文件,然后追加如下配置内容: MSSQL 连接 ...

  6. 利用Mixins扩展类功能

    8.18 利用Mixins扩展类功能 - python3-cookbook 3.0.0 文档 https://python3-cookbook.readthedocs.io/zh_CN/latest/ ...

  7. CF 板刷总结

    CF 板刷总结 这件事的开始要从万圣节那一天说起.当然,万圣节只用于描述时间,我显然是不参加任何万圣节活动的对吧. 以下是一些我觉得有必要拿出来讲的,有技术含量的题.会持续更新,断更了记得来催更. C ...

  8. http、https比较

    HTTP 超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据, 互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准. 设计HTTP的初衷是 ...

  9. Language Guide (proto3) | proto3 语言指南(开篇)

    前言 近日在学习gRPC框架的相关知识时接触到Protobuf(protocol-buffers,协议缓冲区),proto3等知识.网上很多文章/帖子经常把gRPC与proto3放在一起,为避免初学者 ...

  10. SpringMVC 中 @ControllerAdvice 注解

    SpringMVC 中 @ControllerAdvice 注解 1.@ControllerAdvice 1.1 全局异常处理 1.2 全局数据绑定 1.3 全局数据预处理 原文地址: 江南一点雨:S ...