2021-01-25 cf #697 Div3 C题(超时,换思路减少复杂度)
题目链接:https://codeforces.com/contest/1475/problem/C
题意要求:需组成的2对,男的序号不能重,女的序号不能重
比如这例
输入: |
行1--测试个数 行1` --男生个数p,女生个数q,成对数k 接下两行`--分别为这k对男女序号(上下为一对) |
1 |
输出: |
合法的组队对数 |
4 |
- (1,2) and (3,4);
- (1,3) and (2,2);
- (1,3) and (3,4);
- (2,2) and (3,4).
解析:
当时,题意明白的很快,但代码太暴力了,O(n^2)复杂度,而且n<=2e5,结果超时;
其实,这个不难想,每组寻找匹配的组时,只要分别去除了男女的重合序号,
但需注意的是:
- 每组寻找时,会把所有的选一遍,所以最后合法的组数需要/2;
- sum = sum + k - 男重 - 女重 + 1//最后+1是因为前面男重和女重都把自己减去了一遍,需要+1补齐;
上代码:
#include<iostream> using namespace std; typedef long long ll; const int N = 2e5 + 10; int main()
{
int t;
cin >> t;
while(t --)
{
int a1[N], b1[N];
int p, q, k, a[N], b[N]; for(int i = 0; i < N; i ++)//初始化
a1[i] = 0,b1[i] = 0; scanf("%d%d%d", &p , &q , &k);
for(int i = 0; i < k; i ++) scanf("%d", &a[i]), a1[a[i]] ++;
for(int i = 0; i < k; i ++) scanf("%d", &b[i]), b1[b[i]] ++; ll sum = 0;
for(int i = 0; i < k; i ++)
sum = sum + k - a1[a[i]] - b1[b[i]] + 1;
printf("%lld\n", sum/2);
}
return 0;
}
//相比而言,开始这个太傻了
// for(int i = 0; i < cou-1; i ++)
// for(int j = i+1; j < cou; j ++)
// if(a[i] != a[j] && b[i] != b[j])
// sum ++;
2021-01-25 cf #697 Div3 C题(超时,换思路减少复杂度)的更多相关文章
- Noip模拟61 2021.9.25
T1 交通 考场上想了一个$NPC$.应该吧,是要求出图里面的所有可行的不重复欧拉路 无数种做法都无法解出,时间也都耗在这个上面的,于是就考的挺惨的 以后要是觉得当前思路不可做,就试着换一换思路,千万 ...
- CF #575 Div3
// 比赛链接:https://codeforces.com/contest/1196 // CF 2019.7.24 // 本想Div3手速场上分,结果卡在C题,掉了不少分. // 自闭了这么久,今 ...
- 25道经典Java算法题
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 [Java] 纯 ...
- Codeforces Round #354 (Div. 2)-C. Vasya and String,区间dp问题,好几次cf都有这种题,看来的好好学学;
C. Vasya and String time limit per test 1 second memory limit per test 256 megabytes input standard ...
- PAT 甲级 1145 Hashing - Average Search Time (25 分)(读不懂题,也没听说过平方探测法解决哈希冲突。。。感觉题目也有点问题)
1145 Hashing - Average Search Time (25 分) The task of this problem is simple: insert a sequence of ...
- Codeforces Round #575 (Div. 3) 昨天的div3 补题
Codeforces Round #575 (Div. 3) 这个div3打的太差了,心态都崩了. B. Odd Sum Segments B 题我就想了很久,这个题目我是找的奇数的个数,因为奇数想分 ...
- 【模拟8.01】matrix(DP杂题,思维题)
很神的题,感谢lnc大佬的指点. 先设1-LL[i]统称左区间,RR[i]-m为右区间 用L[i]统计从1-i列,出现的左区间端点的前缀和,R[i]是右区间.... f[i][j]中j表示当前在第i列 ...
- cf Canada cup A题
A. Jumping Ball time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- 贪心 CF 332 C 好题 赞
题目链接: http://codeforces.com/problemset/problem/332/C 题目意思: 有n个命令,要通过p个,某主席要在通过的p个中选择k个接受. 每个任务有两个值ai ...
随机推荐
- 使用SymPy
最近工作的原因,需要进行一些积分运算,通过一些搜索得知了SymPy,记录一下使用历程. 1. SymPy介绍 SymPy是关于Symbolic Mathematics的Python库,它旨在成为一个功 ...
- K8S原来如此简单(三)Pod+Deployment
上篇我们已经安装好k8s1.23集群,现在我们开始使用k8s部署我们的项目 Pod Pod 是一组容器集合,是可以在 Kubernetes 中创建和管理的.最小的可部署的计算单元.这些容器共享存储.网 ...
- python3判断一个数是否为素数
while True: num = int(input('请输入一个数:')) for i in range(2,num):#判断在num之前的数能不能把num整除 if(num%i == 0): p ...
- CentOS Stream 8 安装 Zabbix6.0 -- LNMP环境(nginx-1.20,mariadb-10.6,php-7.4)
镜像下载.域名解析.时间同步请点击阿里云开源镜像站 zabbix6.0 LTS版本出来了,前段时间刚安装了5.4,今天打算在虚拟机上安装6.0测试,安装6.0的要求php版本不低于7.2,mariad ...
- ClickHouse镜像在阿里云镜像站首发上线
镜像下载.域名解析.时间同步请点击阿里云开源镜像站 简介 ClickHouse是开源.高性能的列式OLAP的数据库管理系统(DBMS).使用SQL进行实时分析. ClickHouse可以做用户行为分析 ...
- PhpMyadmin后台拿webshell方法总结
前言: phpmyadmin后台拿webshell的方法主要分为两个方法: (1) .通过日志文件拿webshell; (2) .利用日志文件写入一句话;(这个方法可能在实际操作中会遇到困难): 本地 ...
- bzoj4241/AT1219 历史研究(回滚莫队)
bzoj4241/AT1219 历史研究(回滚莫队) bzoj它爆炸了. luogu 题解时间 我怎么又在做水题. 就是区间带乘数权众数. 经典回滚莫队,一般对于延长区间简单而缩短区间难的莫队题可以考 ...
- Hashmap如何同步?
当我们需要一个同步的HashMap时,有两种选择: ●使用Collections.synchronizedMap(..)来同步HashMap. ●使用ConcurrentHashMap的 这两个选项之 ...
- (转载)一篇文章带你分清楚JWT,JWS与JWE
是JWS(JSON Web Signature),也往往导致了人们对于JWT的误解,但是JWT并不等于JWS,JWS只是JWT的一种实现,除了JWS外,JWE(JSON Web Encryption) ...
- sleep 方法和 wait 方法有什么区别?
这个问题常问,sleep 方法和 wait 方法都可以用来放弃 CPU 一定的时间,不同点 在于如果线程持有某个对象的监视器,sleep 方法不会放弃这个对象的监视器, wait 方法会放弃这个对象的 ...