目录
1,题目描述
2,思路
数据结构
算法
3,AC代码
4,解题过程
第一搏
第二搏
第三搏
1,题目描述
- analogously:类似地; 类似; 近似地;
- crush:压坏; 压伤; 挤压变形; 把…挤入,将…塞进(狭小的空间内); 压碎; 捣碎;(通常指年轻人对年长者的短暂的) 热恋,迷恋; 果汁饮料;
2,思路
借鉴大佬@日沉云起【pat甲级1139. First Contact (30)】 ,都给我膜!
数据结构
- vector<int> graph[10005]:存放每个人的朋友(编号的绝对值);
- bool boy[10005]:下标为id(绝对值), true男生 false女生;
- vector<pair<int, int>>ans:存放符合条件的C,D;
算法
- 接受每个编号(字符串形式),构建图时将其转换为绝对值int型,记录性别用bool数组:
- 遍历图(邻接表形式)并排序,注意C和D都不能是A/B中的一个!比如A->B->C->B
3,AC代码
4,解题过程
第一搏
没想太多,unordered_map<int, unordered_set<int>> relation存储每个人的朋友关系,两个for循环加一个find函数。。。
第二搏
忽略了-0000这种情况。。。
认真看了看代码,感觉改起来太难了
但还是决定试一试
flag记录0000/-0000的符号,flagA/flagB/flagC/flagD记录a/b/c/d的符号。。。
多了4分。。。
第三搏
是时候请教大佬了。
用bool数组记录是否为男生,太妙了!
vector<pair<int,int>>存储结果,并且直接调用sort默认排序即可,666!