赛后总结:

 T:这是我们第二次集体去参加学校的比赛,总体来说比上一次去浙江中医药校赛成绩好一点,也算是看到了我们自己的进步?然后呢,今天比赛,我们分头看了三道签到题,E J G,然后彭彭和金姐飞快的A了起来,我。。。看E看了好几遍才看懂。因为太紧张了,所以看到别人A那么快,然后就很想快速读懂题意。然后就开始看别的,直到彭彭和我们说A有点像二分图匹配,然后就开始看A了,然后我们想了一下,m那么大不可能是二分图,就想别的办法。最后和金姐讲了我的思路,然后就开始操作。于是看起了B,接收到题目意思有点问题,想了快两个小时也没想出来。期间金姐也在疯狂A提交。崩溃啊。然后就看了C,这题也有很多读题误区,金姐开始写了。我再读了一遍B,发现题意和我之前想的不一样。。。。啊啊啊然后就和队友说了,我们就想板子模拟大数中。最后没时间了,啥都没做出来。赛后队内总结了经验,交流一下以后读题的分工,还是很有收获的一场比赛。emmm,加油吧。

 J:今天前三题十分顺利,但是在A题上掉进了自己作的坑,疯狂WA,还好最后A出来了。C题感觉能写出来,可是时间不够了,哭~~~还是实力太弱了,继续努力,下次加油!

   P:看J时,浏览前几行后发现跟素数有关,数据范围还特别大就放弃了(其实真正的题目在最后三四行)翻了前面的题目。看了榜,发现J题A的很多,重新看回J题才发现真的是道水题,我就直接做了。接着,跟榜看了A,以为是二分图匹配(然而并不是),就误导了队友,庆幸我的队友不像我……接着帮金姐找A题样例,找了有、、久,但金姐还是A了!剩下两个小时,B,C全都有或多或少的题目理解错误问题,僵持了很久。后来,在谭总的纠正下,我似乎想出了B题,但来不及了,第一次遗憾。

 

题解:

 

A - Thanks, TuSimple!

 ZOJ - 4090 

题意:有n个男孩和m个女孩,他们要组成舞伴,双方有身高要求,0表示希望对方比自己矮,1表示希望对方比自己矮。问最后可以组成几对。

思路:分成4大组。男选1和女选0对应,男选0和女选1对应。看代码就能懂啦。

#include <bits/stdc++.h>
#include<vector>
using namespace std;

#define inf 0x3f3f3f3f
#define mm(a,b) memset(a,b,sizeof(a))
#define ll long long
#define MAXN 1001000
#define mod ((int)1e9+7)
const int N=1e5+50;
using namespace std;
typedef long long int LL;

int work(vector<int>& p,vector<int>& q)
{
    int ans=0;
    sort(p.begin(),p.end());
    sort(q.begin(),q.end());
    while(!p.empty()&&!q.empty())
    {
        if(p.back()>q.back())
            p.pop_back(),ans++;
        q.pop_back();
    }
    return ans;
}

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n,m;
        scanf("%d %d",&n,&m);
        vector<int>boy,gril;
        int h;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&h);
            boy.push_back(h);
        }
        for(int i=0;i<m;i++)
        {
            scanf("%d",&h);
            gril.push_back(h);
        }
        vector<int>p[2],q[2];
        int qq;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&qq);
            p[qq].push_back(boy[i]);
        }
        for(int i=0;i<m;i++)
        {
            scanf("%d",&qq);
            q[qq].push_back(gril[i]);
        }
        printf("%d\n",work(p[0],q[1])+work(q[0],p[1]));
    }
    return 0;
}
View Code

相关文章: