可怜的蚁人进入量子领域后,黄蜂女被灭霸的一个响指带走,导致可怜的蚁人困在了量子领域,为了生存,他们开始建造自己家园。
蚁人为了方便在这里生存,他们建造了自己火车站。某车站有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; }