蚁人cp数

可怜的蚁人进入量子领域后,黄蜂女被灭霸的一个响指带走,导致可怜的蚁人困在了量子领域,为了生存,他们开始建造自己家园。 

蚁人为了方便在这里生存,他们建造了自己火车站。某车站有N个人上车,其中M对是情侣,当然其余的人都是单身。由于火车不是首发站,车上免不了座位已经被占用。但是对于情侣有如下条件: 

1.上车后情侣需要坐在一起才能继续保持情侣身份(即座位相邻),如果他们没有坐在一起,他们将会分手不再保持情侣(有些恶劣)。 

2.对于单身乘客,如果两个单身乘客坐在一起也可以变成情侣(仅限于本站上车的单身蚁人,且蚁人不存在男女之分,emmm)。 

火车每排座位表:OO|OX (’O’表示座位空闲;’|’表示过道;’X’表示座位已经被占用,’X’的位置不确定)列车有k排座位。 

当然,我们希望看到尽可能多的蚁人情侣出现在这个列车上。

输入第一行输入三个数字:N上车人数,M情侣对数,K车厢座位排数。(1<N,M,K<1000)

接下来K行每行是车站到达此站时每排的座位排布图

输出

如果火车可以承载车站的所有人,请计算出上车后情侣对数和单身人数。(情侣人数要尽可能多!!!)

如果火车无法承载车站的所有人,请输出’-1’表示无法承载车站的所有人。

样例输入 Copy

15 3 6
OO|XX
XO|XX
OX|OO
XX|OX
OO|XX
OX|XX

样例输出 Copy

-1

解析:

我们从题意得知我们是希望在车上得到最多的情侣数量并输出。首先你需要查找座位个数是否满足所有人上车,如果座位数不够则无法上车,输出“-1”即可。其次因为需要情侣数量最多,那么你可以想到只要计算车上的双人座位(即“OO“形式)的个数有多少个,然后跟乘车人数除以2进行比较即可。如果双人座位数量大于乘车人数的/2,则我们选择乘车人数的/2作为CP数量,否则我们选择双人座位数量作为CP数量,最会用总数减去(CP数量*2)即为单身数量。

AC代码:

#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
inline int read() {int x=0,f=1;char c=getchar();while(c!='-'&&(c<'0'||c>'9'))c=getchar();if(c=='-')f=-1,c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return f*x;}
typedef long long ll;
const int maxn = 1e5+10;
char a[maxn][10];
int main()
{
    int n,m,k;
    cin>>n>>m>>k; 
    for(int i=0;i<k;i++){
        scanf("%s",a[i]);
    }
    int sum=0;
    int ans=0;
    for(int i=0;i<k;i++){
        for(int j=0;j<5;j++){
            if(a[i][j]=='O'){
                ans++;
            }
            if(a[i][j]=='O'&&a[i][j+1]=='O'){
                sum++;
            }
        }
    }
    if(ans<n){
        printf("-1
");
    }
    else{
        if(sum>=n/2){
            printf("%d %d
",n/2,n-n/2*2);
        }
        else{
            printf("%d %d
",sum,n-2*sum);
        }
    }
    return 0;    
} 
原文地址:https://www.cnblogs.com/lipu123/p/12170404.html