Wannafly Camp 2020 Day 5A Alternative Accounts
There are n different accounts on the website, and some of them competed in the recent k contests. However, Mike suspects that there are lots of alternative accounts.
There are axioms believed by everyone that nobody can use two different in one contest simultaneously and each account can be owned by only one person. So different accounts without overlapping contest participation can be owned by the same person.
Mike wants to know the minimum possible number of different people behind these accounts.
k=1
太简单,直接输出个数即可
k=2
max个数即可
k=3
把数字按照它出现的集合分为8类
1类为在所有集合中都出现,这类直接加进答案即可
2,3,4类为在某两个集合中出现,5,6,7类为在某一个集合中出现,8类为没有出现,其中第8类不用计入答案
首先将2类与5类中的一部分“匹配”掉并加入答案,同3-6,同4-7
如果2,3,4类中有剩余,那么这些一定是要被单独算答案的
5,6,7类单独算答案的贡献就是它们的max
我居然把它写RE了(捂脸爪巴爪巴
#include <bits/stdc++.h>
using namespace std;
int n,k,t1,t2,a[9][1000005],s[40];
vector <int> v[9];
int main() {
scanf("%d%d",&n,&k);
for(int i=1;i<=k;i++) {
scanf("%d",&t1);s[i]=t1;
for(int j=1;j<=t1;j++) {
scanf("%d",&t2);
a[i][t2]=1;
}
}
if(k==1) cout<<t1<<endl;
if(k==2) {
cout<<max(s[1],s[2])<<endl;
}
if(k==3) {
for(int i=1;i<=n;i++) {
if(a[1][i]==0 && a[2][i]==0 && a[3][i]==0) v[8].push_back(i);
if(a[1][i]==1 && a[2][i]==1 && a[3][i]==1) v[1].push_back(i);
if(a[1][i]==0 && a[2][i]==1 && a[3][i]==1) v[2].push_back(i);
if(a[1][i]==1 && a[2][i]==0 && a[3][i]==1) v[3].push_back(i);
if(a[1][i]==1 && a[2][i]==1 && a[3][i]==0) v[4].push_back(i);
if(a[1][i]==1 && a[2][i]==0 && a[3][i]==0) v[5].push_back(i);
if(a[1][i]==0 && a[2][i]==1 && a[3][i]==0) v[6].push_back(i);
if(a[1][i]==0 && a[2][i]==0 && a[3][i]==1) v[7].push_back(i);
}
int ans = 0;
ans += v[1].size();
while(v[2].size() && v[5].size()) ++ans, v[2].pop_back(), v[5].pop_back();
while(v[3].size() && v[6].size()) ++ans, v[3].pop_back(), v[6].pop_back();
while(v[4].size() && v[7].size()) ++ans, v[4].pop_back(), v[7].pop_back();
ans += v[2].size() + v[3].size() + v[4].size();
ans += max(v[5].size(), max(v[6].size(), v[7].size()));
cout<<ans<<endl;
}
}
Wannafly Camp 2020 Day 5A Alternative Accounts的更多相关文章
- Wannafly Camp 2020 Day 3I N门问题 - 概率论,扩展中国剩余定理
有一个猜奖者和一个主持人,一共有 \(n\) 扇门,只有一扇门后面有奖,主持人事先知道哪扇门后有奖,而猜奖者不知道.每一轮,猜奖者选择它认为的有奖概率最大(如果有多个最大,随机选一个)的一扇门,主持人 ...
- Wannafly Camp 2020 Day 3F 社团管理 - 决策单调性dp,整体二分
有 \(n\) 个数构成的序列 \({a_i}\),要将它划分为 \(k\) 段,定义每一段的权值为这段中 \((i,j) \ s.t. \ i<j,\ a_i=a_j\) 的个数,求一种划分方 ...
- Wannafly Camp 2020 Day 3D 求和 - 莫比乌斯反演,整除分块,STL,杜教筛
杜教筛求 \(\phi(n)\), \[ S(n)=n(n+1)/2-\sum_{d=2}^n S(\frac{n}{d}) \] 答案为 \[ \sum_{d=1}^n \phi(d) h(\fra ...
- Wannafly Camp 2020 Day 2B 萨博的方程式 - 数位dp
给定 \(n\) 个数 \(m_i\),求 \((x_1,x_2,...,x_n)\) 的个数,使得 \(x_1 \ xor\ x_2\ xor\ ...\ xor\ x_n = k\),且 \(0 ...
- Wannafly Camp 2020 Day 2D 卡拉巴什的字符串 - 后缀自动机
动态维护任意两个后缀的lcp集合的mex,支持在串末尾追加字符. Solution 考虑在 SAM 上求两个后缀的 LCP 的过程,无非就是找它们在 fail 树上的 LCA,那么 LCP 长度就是这 ...
- Wannafly Camp 2020 Day 1D 生成树 - 矩阵树定理,高斯消元
给出两幅 \(n(\leq 400)\) 个点的无向图 \(G_1 ,G_2\),对于 \(G_1\) 的每一颗生成树,它的权值定义为有多少条边在 \(G_2\) 中出现.求 \(G_1\) 所有生成 ...
- Wannafly Camp 2020 Day 2I 堡堡的宝藏 - 费用流
感谢这道题告诉我KM求的是 完备 最大权匹配 :( #include <bits/stdc++.h> using namespace std; #define reset(x) memse ...
- Wannafly Camp 2020 Day 2J 邦邦的2-SAT模板
#include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; cout<<n& ...
- Wannafly Camp 2020 Day 2F 采蘑菇的克拉莉丝 - 树链剖分
如果暴力维护,每次询问时需要对所有孩子做计算 考虑通过树剖来平衡修改与询问的时间,询问时计算重链和父树,轻链的贡献预先维护好,修改时则需要修改可能影响的轻链贡献,因为某个点到根的路径上轻重交替只有 \ ...
随机推荐
- 使用MuMu模拟器调试AndroidStudio项目
1.安装一款安卓模拟器 本例使用网易MuMu模拟器,因为目前网络上这类模拟器只有mumu的安卓版本是最新的,为6.0,安卓自带的Virtual Device虽然有很新的版本,但如果pc配置不是很高 ...
- Android布局管理器-使用LinearLayout实现简单的登录窗口布局
场景 Android布局管理器-从实例入手学习相对布局管理器的使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1038389 ...
- 小程序封装request请求
//request.js var host = 'https://www.xxx.com';//请求域名 module.exports = function (type, params, method ...
- List保持顺序去重
Map<String, List<Bean>> orderMap = list.stream().collect(Collectors.groupingBy(Bean::get ...
- Java多线程之互斥锁Syncharnized
public class Bank { private int money; private String name; public Bank(String name, int money) { th ...
- Fhq Treap [FhqTreap 学习笔记]
众所周知 Fhq Treap 是 fhq 神仙研究出来的平衡树- 具体实现 每个点实现一个 \(\text{rnd}\) 表示 rand 的值 为什么要 rand 呢 是为了保证树高为 \(\log ...
- css过渡——实现元素的飞入飞出
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 洛谷题解 P1744 【采购特价商品】
原题传送门 题目描述 中山路店山店海,成了购物狂爱与愁大神的"不归之路".中山路上有n(n<=100)家店,每家店的坐标均在-10000~10000之间.其中的m家店之间有通 ...
- 【新人赛】阿里云恶意程序检测 -- 实践记录10.20 - 数据预处理 / 训练数据分析 / TF-IDF模型调参
Colab连接与数据预处理 Colab连接方法见上一篇博客 数据预处理: import pandas as pd import pickle import numpy as np # 训练数据和测试数 ...
- SP7258 SUBLEX - Lexicographical Substring Search - 后缀自动机,dp
给定一个字符串,求本质不同排名第k小的子串 Solution 后缀自动机上每条路径对应一个本质不同的子串 按照 TRANS 图的拓扑序,DP 计算出每个点发出多少条路径 (注意区别 TRANS 图的拓 ...