D. Meta

编程入门 行业动态 更新时间:2024-10-23 17:35:14

D. <a href=https://www.elefans.com/category/jswz/34/1771351.html style=Meta"/>

D. Meta

Problem - D - Codeforces

题意有点让人看不懂,我琢磨了好久...

题意:

给你一个n行,每一行是一个牌,可以看作是一个整体。这个一行里面有k个元素,元素的范围在0,1,2中任选其一。问你n行中有多少

:五行中有两组满足条件,一组有三行,保证对应的v[i]都相等或者都不等

分析:

因为只有0,1,2组成。所以只有四种搭配

         

因为各不相同,所以必有一组被重新选择

要想凑成两组,必须要有一个被重复,两个不一样。

所以我们就这个必须要选的进行操作

开始枚举两个随意的,另一个必选的就可以被确定下来了,然后进行计数就可以了

这个代码实现的非常漂亮

有很多地方值得去学习

下面放代码(学习的是cup大佬QAQ)

#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#define IOS ios::sync_with_stdio(false), cin.tie(0);
#include<iostream>
#include<map>
#include<set> 
#include<cstdio>
#include<cstring>
#include<vector>
#include<stack>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int,int> PAII;
const int N=2e6+10,M=5050,INF=1e18,mod=998244353;
int get(int x)
{return x*(x-1)/2;
}
signed main(){//IOS;int T;T=1;//cin>>T;while(T--){int n,k;cin>>n>>k;vector<vector<int> > a(n, vector<int>(k));map<vector<int>,int> mp;for(int i=0;i<n;i++){for(int j=0;j<k;j++)cin>>a[i][j];}for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){vector<int> v(k);for(int z=0;z<k;z++) v[z]=(6-a[i][z]-a[j][z])%3;//可以确定必选的每一位数mp[v]++;}}int sum=0;for(int i=0;i<n;i++){sum+=get(mp[a[i]]);}cout<<sum<<"\n";}return 0;
} 
/*
vector< vector<int> > v(m, vector<int>(n) );定义了一个vector容器
元素类型为vector<int>,初始化为包含m个vector<int>对象,每个对象都是一个新创立的vector<int>对象的拷贝,而这个新创立的vector<int>对象被初始化为包含n个0。*/ 

更多推荐

D. Meta

本文发布于:2024-03-14 19:57:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737216.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Meta

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!