题目描述

在一个遥远的国度里有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\n",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\n",  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/16t2]friend的更多相关文章

  1. 「HGOI#2019.4.19省选模拟赛」赛后总结

    t1-Painting 这道题目比较简单,但是我比较弱就只是写了一个链表合并和区间DP. 别人的贪心吊打我的DP,嘤嘤嘤. #include <bits/stdc++.h> #define ...

  2. [hgoi#2019/3/21]NOIP&NOI赛后总结

    前言 今天做的是是2010年提高组和NOI的题目,做过几道原题,但是还是爆炸了,我真的太弱了. t1-乌龟棋 https://www.luogu.org/problemnew/show/P1541 这 ...

  3. [hgoi#2019/3/10]赛后总结

    关于本次hg模拟赛,题目来源于CF1110. t1-无意义运算符(meaning) 题目描述 最大公约数和位运算之间有共同点吗?是时候来研究一下了. 给定一个正整数a,请找到一个闭区间[1,a-1] ...

  4. [hgoi#2019/3/3]赛后总结

    T1--最长公共前缀(lcp) 定义两个字符串S,T 的最长公共前缀lcp(S,T)为最长的字符串R,满足R 既是S 的前缀又是T 的前缀. 给定一个字符串S,下标从1 开始,每次询问给出四个正整数a ...

  5. [hgoi#2019/2/16t3]psolve

    题目描述 Dustar有n道题目要做.他的月薪是m元. 由于题目是一流的难题,所以Dustar不得不找个人来帮(代)助(替)他写作业. 找人写作业不是免费的,但是他们能保证在一个月内做出任何题目.每做 ...

  6. [hgoi#2019/2/16t1]math

    题目描述 解法 我们稍微枚举一下前面几位,可以得到这样的规律. \[X_i=\frac{1}{2^{i+1}-1}\] \[Y_i=\frac{1}{2^{2^i}-1}\] 那么要使\(xm=yn\ ...

  7. [hgoi#2019/2/24]玄学考试

    感想 对于这次考试,真的不想说什么了,太玄学了!!! t1输出比标准输出长,这是什么操作???难道要关文件???但是交到oj上又A掉了.这是什么操作. t2还好,没有出什么意外...但是要吐槽一下出题 ...

  8. [hgoi#2019/2/18]比较水

    T1--调换纸牌(card) Alex有 n张纸牌,每张纸牌上都有一个值ai,Alex把这些纸牌排成一排,希望将纸牌按值从小到大的顺序排好.现在他把这个任务交给你,你只能进行一种操作:选中一张牌,然后 ...

  9. [hgoi#2019/2/17t1]million

    题目描述 面对格鲁的入侵,小黄人们要组建一支队伍,来抵御进攻,现在有编号为1 至n 的小黄人,任命编号为n 的队长,由其挑选队员,当然编号不是随便编的,每一个编号里都包含一个小黄人的个人信息,现在队长 ...

随机推荐

  1. 一个可爱 & 小清新的加载等待Android控件

    https://github.com/Carson-Ho/Kawaii_LoadingView

  2. 阿里云telnet 3306端口失败

    在阿里云的服务器上安装了MySQL, 然后远程访问总是不通. 查询了很久,排查思路如下: 检查mysql是否启动 检查本机3306端口是否处于监听状态 检查阿里云控制台是否开启了安全限制 检查mysq ...

  3. 微信小程序案例:获取微信访问用户的openid

    在微信开发项目中,获取openid是项目常遇的问题,本文通过主要讲解实现在微信小程序中如何获取用户的openid,案例实现非常简单 具体实现方法是通过登录接口获取登录凭证,然后通过request请求微 ...

  4. ES6入门之let、cont

    一.前提 解决ES5中只有全局作用域和函数作用域,没有块级作用域而带来的不合理的场景. let 基本用法 用法和var 一样,只是let声明的变量只有在let命令所在的代码块有效 { let a = ...

  5. Webpack 2 视频教程 002 - NodeJS 安装与配置

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  6. 我就骂你了,我tm还想打你呢

    从地铁出来,一男的抽烟走在我前面,走了一路闻了一路二手烟. 进门,一个园区的,我直接骂了一句:caoni妈的 这哥们瞪着我,我也瞪着他 你骂我干什么 我闻了一路子二手烟 你可以走前面啊 我不走啊 我不 ...

  7. react/React Native 在 import 导入时,有的带花括号{},有的不带原理解析

    在使用import引用模块时,如何正确使用{} 例如:有两个文件,home.js.user.js 一:不使用{}: 当需要在home.js中引入user.js的时候 //home.js 文件中impo ...

  8. C. Vasya and Multisets

    传送门 [http://codeforces.com/contest/1051/problem/C] 题意 给你一堆数,问是否可以分为两堆使得两堆里只出现一下的数字的种类相等,可以输出任意一种分的方式 ...

  9. Microsoft Visual Studio2013安装及单元测试

    和大家分享一下我安装VS2013和单元测试的过程.VS是微软多种编程软件的集合,功能与工作环境更全面,相比VC++6.0来说是一个很大的提升. VS安装: VS的安装和普通软件相同,只是花费的时间很长 ...

  10. Daily scrum 12.21

    今天ui组反映了一个数据库数据类型的问题,开发人员在完成任务后再去处理. Member Today’s task 林豪森 与学霸其他小组交流,处理整合问题 宋天舒 修复数据库问题 张迎春 修复数据库问 ...