赛后总结:
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!
题意:有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; }