hgoi#2019/2/16--t2--friend

Posted chhokmah

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hgoi#2019/2/16--t2--friend相关的知识,希望对你有一定的参考价值。

技术图片

题目描述

在一个遥远的国度里有n个人,每个人手上写着4个互不相同的数。

这个国度比较奇怪,如果两个人至少有一个数字相同,则他们是一对朋友。

现在这n个人按序号从左到右排成了一排,每个人都想知道在他左边有多少个人是他的朋友,你能帮助他们么?

40分解法

暴力求解,枚举所有的数。

40分代码

#include<bits/stdc++.h>
#define N 100005
using namespace std;
int n;
int a[N][5];
bool vis[N];
int r(){
    int w=0,x=0;char ch=0;
    while(!isdigit(ch))w|=ch=='-',ch=getchar();
    while(isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    return w?-x:x;
}
int main(){
    n=r();
    for(int i=0;i<n;i++) for(int j=1;j<=4;j++) a[i][j]=r();
    for(int i=0;i<n;i++){
        int ans=0;
        memset(vis,0,sizeof(vis));
        for(int j=0;j<i;j++){
            for(int i1=1;i1<=4;i1++) 
                for(int j1=1;j1<=4;j1++){
                    if(a[i][i1]==a[j][j1]&&!vis[j]) ans++,vis[j]=1;
                }
        }
        printf("%d
",ans);
    }
    return 0;
}

100分解法

容斥原理,每次将当前这个人与之前有相同的全部统计出来。

然后在容斥原理算出所有的答案。

Ac代码

#include<bits/stdc++.h>
#define N 55
using namespace std;
int a[N],b[N][N],c[N][N][N],d[N][N][N][N];
int n,x[N];
int r(){
    int w=0,x=0;char ch=0;
    while(!isdigit(ch))w|=ch=='-',ch=getchar();
    while(isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    return w?-x:x;
}
int main(){
    n=r();
    for(int i=0;i<n;i++){
        for(int j=1;j<=4;j++) x[j]=r();
        sort(x+1,x+1+4);
        printf("%d
",  a[x[1]]+a[x[2]]+a[x[3]]+a[x[4]]-
                        b[x[1]][x[2]]-b[x[1]][x[3]]-b[x[1]][x[4]]-b[x[2]][x[3]]-b[x[2]][x[4]]-b[x[3]][x[4]]+
                        c[x[1]][x[2]][x[3]]+c[x[1]][x[2]][x[4]]+c[x[2]][x[3]][x[4]]+c[x[1]][x[3]][x[4]]-
                        d[x[1]][x[2]][x[3]][x[4]]);
        a[x[1]]++,a[x[2]]++,a[x[3]]++,a[x[4]]++;
        b[x[1]][x[2]]++,b[x[1]][x[3]]++,b[x[1]][x[4]]++,b[x[2]][x[3]]++,b[x[2]][x[4]]++,b[x[3]][x[4]]++;
        c[x[1]][x[2]][x[3]]++,c[x[1]][x[2]][x[4]]++,c[x[2]][x[3]][x[4]]++,c[x[1]][x[3]][x[4]]++;
        d[x[1]][x[2]][x[3]][x[4]]++;
    }
    return 0;
}

以上是关于hgoi#2019/2/16--t2--friend的主要内容,如果未能解决你的问题,请参考以下文章

hgoi#20191115

HGOI 20190828 题解

hgoi#20190514

HGOI 20190310 题解

HGOI 20191106 题解

HGOI 20190303 题解