codeforces 1475 C Ball in Berland

news/2024/5/18 23:39:27 标签: 算法, 枚举, 容斥原理

原题链接

在这里插入图片描述
在这里插入图片描述

题意

有n个男的m个女的,还有k对关系(a,b)表示第a个男的可以和第b个女的跳舞.现在要求你从k对关系里选出两对不干扰的男女,不干扰即是指同一个人不能出现在两对关系里,问选出两对关系的方案数有多少个.

思路

  1. 我们可以选出一对,来枚举另一对,然后求出总和,因为枚举也会计算另一对,所以结果/2
  2. 如何枚举另一对,对于另一对,不能和a,b相同,即不能与a,b有关,可以利用补集来求,(a,b)在k对关系中,统计与a出现的次数cnta,b出现的次数cntb,那么cnta+cntb-1就是除去要枚举的这对,k对中与a,b有关系的对数,然后k-(cnta+cntb-1)就是与(a,b)没有关系的对数

代码

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int N = 2e5 + 10;

int t, m, n, k;
int a[N], b[N], cnta[N], cntb[N];

int main() {

    cin >> t;
    while (t--) {
        memset(cnta, 0, sizeof cnta);
        memset(cntb, 0, sizeof cntb);
        cin >> m >> n >> k;
        for (int i = 1; i <= k; i++) {
            scanf("%lld", &a[i]);
            ++cnta[a[i]];
        }
        for (int i = 1; i <= k; i++) {
            scanf("%lld", &b[i]);
            ++cntb[b[i]];
        }
        ll sum = 0;
        for (int i = 1; i <= k; i++) {
            sum += (k - (cnta[a[i]] + cntb[b[i]] - 1));
        }
        cout << sum / 2 << endl;

    }

    return 0;
}

http://www.niftyadmin.cn/n/1572449.html

相关文章

java 入门 博客_【免费开源】一个简单漂亮的Java博客系统-适合初学ssm者 forestblog.liuyanzhao.com...

关于项目该博客是基于SSM实现的一个个人博客系统&#xff0c;适合初学SSM和个人博客制作的同学学习。主要涉及技术包括的包括 Maven、Spring、SpringMVC、MyBatis、Redis、JSP等最新写了一篇该项目的毕业设计论文&#xff0c;需要的朋友可以联系 博主提供该项目的讲解&#xff…

codeforces 1475 D Cleaning the Phone 贪心+二分

原题链接 题意 清内存&#xff0c;每个应用都有ai的内存和bi的价值。 t组数据&#xff0c;每组两个整数n,m&#xff0c;分别表示n个应用和需要清理s的内存&#xff0c;接着一行是n个数表示应用内存ai&#xff0c;接着一行是n个数表示应用价值bi&#xff0c;问你在清理的内存不…

java 网页数据采集_利用Java怎么对网页数据进行获取

利用Java怎么对网页数据进行获取发布时间&#xff1a;2021-01-22 17:00:37来源&#xff1a;亿速云阅读&#xff1a;87作者&#xff1a;Leah这篇文章将为大家详细讲解有关利用Java怎么对网页数据进行获取&#xff0c;文章内容质量较高&#xff0c;因此小编分享给大家做个参考&am…

codeforces 1475 E Advertising Agency (组合数)

题面 题意 t组样例&#xff0c;每组n个数&#xff0c;给定一个k&#xff0c;问选取k个数组成最大的值&#xff0c;有多少种组合方案 思路 E题比D题简单太多&#xff0c;一定要先看数据范围啊&#xff01;&#xff01;&#xff01;&#xff01;&#xff0c;数据范围很小&#…

codeforces 1475 F Unusual Matrix (构造)

题面 题意 给你 a , b 两个矩阵&#xff0c;问通过翻转&#xff08;0变1&#xff0c;1变0&#xff09;能否使a变成b翻转必须是整行或者整列翻转 思路 像这种翻转题&#xff0c;一般先看规律&#xff0c;我们会发现&#xff0c;每行或每列只需要翻转0或者1次&#xff0c;因为翻转…

java gui 颜色从html_关于swing:用于显示网页和返回HTML的Java GUI

我需要一个如下工作流程&#xff1a;// load xyz.com in the browser window// the browser is live, meaning users can interact with itbrowser.load("http://www.google.com");// return the HTML of the initially loaded pageString page browser.getHTML();/…

java将图书信息写入原有文件里_Java保存图书信息

在本章《Java字节流的使用》和《Java字符流的使用》中已经详细介绍了字节、字符输入/输出流的应用&#xff0c;利用输出流我们可以将一些数据保存到磁盘文件中&#xff0c;利用输入流可以读取磁盘文件中的内容。本节将综合使用文件输入/输出流完成存储图书并将图书信息再读取出…

AHOI2009 维护序列 (线段树+懒标记)

原题链接 思路 题意让维护区间&#xff0c;涉及操作有区间修改和区间查询&#xff0c;很明显的线段树懒标记再看需要维护的信息&#xff0c;就是线段树的节点&#xff0c;首先肯定有左右两个端点 l , r &#xff0c;然后就是区间和 sum ,再有就是懒标记区间加add&#xff0c;区…