L2-016 愿天下有情人都是失散多年的兄妹 - dfs

PTA | 程序设计类实验辅助教学平台

思路:

先记录每个人的父母 然后k组查询

分别用dfs搜索两个人的族谱 五服之内出现的人都标记

如果搜索第二个人时 出现已标记的人 说明这两个有共同的祖先

#include <bits/stdc++.h>
using namespace std;const int N=1e5+10;
bool st[N];
bool f=false;
char sex[N];
vector<int> v[N];void dfs(int u,int d)
{if(d>=5) return; //五服之外就returnst[u]=true; //把该点标记for(int i=0;i<v[u].size();i++) //遍历该点的所有长辈 如果有的长辈被标记过 说明两个人有共同的祖先{if(st[v[u][i]]) f=true;dfs(v[u][i],d+1);}
}int main()
{int n;cin>>n;for(int i=0;i<n;i++){int id;cin>>id;char c;cin>>c;sex[id]=c;int fa,ma;cin>>fa>>ma;if(~fa) {sex[fa]='M';v[id].push_back(fa);}if(~ma){sex[ma]='F';v[id].push_back(ma);}}int k;cin>>k;while(k--){int x,y;cin>>x>>y;f=false;memset(st,false,sizeof st); //每次查询 st数组都要清空dfs(x,0);dfs(y,0);if(sex[x]==sex[y]) cout<<"Never Mind"<<endl;else{if(!f) cout<<"Yes"<<endl;else cout<<"No"<<endl;}}
}

L1-017 到底有多二 - 15

PTA | 程序设计类实验辅助教学平台

import java.util.*;public class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);String s=sc.next();int cnt=0,n=s.length();for(int i=0;i<n;i++) if(s.charAt(i)=='2') cnt++;double bei=1;if((s.charAt(n-1)-'0')%2==0) bei*=2; //因为判断负数时n的值会改变 所以这个要放在前面if(s.charAt(0)=='-'){bei*=1.5;n-=1;}System.out.printf("%.2f%%",cnt*1.0/n*bei*100);}
}

L1-018 大笨钟 - 10

PTA | 程序设计类实验辅助教学平台

1、java版

接收字符的过程比较麻烦

import java.util.*;public class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);String[] num=sc.next().split(":");int hh=Integer.parseInt(num[0]),mm=Integer.parseInt(num[1]);if(hh>=0&&hh<=11||hh==12&&mm==0){System.out.printf("Only %02d:%02d.  Too early to Dang.",hh,mm);}elseif(mm==0) {int n=hh-12;while(n-->0) System.out.print("Dang");}else{int n=hh-11;while(n-->0) System.out.print("Dang");}}
}

2、c++版

#include <bits/stdc++.h>
using namespace std;int main()
{int hh,mm;char ch;cin>>hh>>ch>>mm;if(hh>=0&&hh<=11||hh==12&&mm==0) printf("Only %02d:%02d.  Too early to Dang.",hh,mm);else if(mm==0) {int n=hh-12;while(n--) cout<<"Dang";}else{int n=hh-11;while(n--) cout<<"Dang";}
}

L1-020 帅到没朋友 - 20

PTA | 程序设计类实验辅助教学平台

1、java版 - 最后一个点超时 喜闻乐见

思路:

  • 把朋友圈里出现过的id都存入set里,其中要注意如果朋友圈只有一个人,这种情况是不存入朋友圈的
  • 因为输出时,不能重复输出id,且要保证输出顺序,所以用LinkedHashSet
  • 之前set中出现过的id就不输出,否则存入LinkedHashSet的res容器里
  • 最后输出我用了2种方法:一个是把set转化为string数组;一个是直接输出set

 set转化为string数组版:

import java.util.*;public class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt();Set<String> st=new HashSet<>();Set<String> res=new LinkedHashSet<>();while(n-->0){int k=sc.nextInt();if(k==1) //如果朋友圈就他一个人 说明答案也要输出他 也就是不存入set{String s=sc.next();continue;}while(k-->0){String s=sc.next();st.add(s);}}int m=sc.nextInt();int cnt=0;for(int i=0;i<m;i++){String t=sc.next();if(st.contains(t)) continue;cnt++;res.add(t);}if(cnt==0) System.out.print("No one is handsome");else{String[] ans=res.toArray(new String[]{}); //这里是把set转化为string数组for(int i=0;i<ans.length;i++){if(i!=0) System.out.print(" ");System.out.print(ans[i]);}}}
}

 直接输出set版:

import java.util.*;public class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt();Set<String> st=new HashSet<>();Set<String> res=new LinkedHashSet<>();while(n-->0){int k=sc.nextInt();if(k==1) //如果朋友圈就他一个人 说明答案也要输出他 也就是不存入set{String s=sc.next();continue;}while(k-->0){String s=sc.next();st.add(s);}}int m=sc.nextInt();int cnt=0;for(int i=0;i<m;i++){String t=sc.next();if(st.contains(t)) continue;cnt++;res.add(t);}if(cnt==0) System.out.print("No one is handsome");else{   boolean f=true;for(Object x:res){if(f){System.out.print(x);f=false;}else System.out.print(" "+x);}}}
}

2、c++版

#include <bits/stdc++.h>
using namespace std;int main()
{int n;cin>>n;set<string> st;while(n--){int k;cin>>k;string s;if(k==1){cin>>s;continue;}while(k--){cin>>s;st.insert(s);}}int m,cnt=0;cin>>m;set<string> res;while(m--){string s;cin>>s; //要根据输入顺序输出if(!st.count(s)&&!res.count(s)) //如果朋友圈中无记录且答案不重时{if(cnt==0)cout<<s;else cout<<" "<<s;res.insert(s);cnt++;}}if(cnt==0) cout<<"No one is handsome";
}

【PTA-训练day6】L2-016 愿天下有情人都是失散多年的兄妹+ L1-011 帅到没朋友相关推荐

  1. PTA:7-106 愿天下有情人都是失散多年的兄妹 (25分)(bfs,dfs)

    7-106 愿天下有情人都是失散多年的兄妹 (25分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对 ...

  2. 7-57 愿天下有情人都是失散多年的兄妹 (25 分)(深搜)

    7-57 愿天下有情人都是失散多年的兄妹 (25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对 ...

  3. 【CCCC】L2-016 愿天下有情人都是失散多年的兄妹 (25分),,搜索公共祖先

    problem L2-016 愿天下有情人都是失散多年的兄妹 (25分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚. ...

  4. 7-13 愿天下有情人都是失散多年的兄妹 (25 分)

    7-13 愿天下有情人都是失散多年的兄妹 (25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对 ...

  5. L2-016 愿天下有情人都是失散多年的兄妹 (25 分)(C语言)(并查集)(dfs)(测试点坑)

    题目 L2-016 愿天下有情人都是失散多年的兄妹 (25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请 ...

  6. 天梯赛 L2-016 愿天下有情人都是失散多年的兄妹 (25 分)[测试点1 3 4][未填坑]

    L2-016 愿天下有情人都是失散多年的兄妹 (25 分) 思路: 在录入的时候用map和结构体储存性别,父母ID, 判断的时候先判断性别,再用dfs搜索第一个人五服之内的关系,并将关系任务ID存储到 ...

  7. 天梯赛:L2-016 愿天下有情人都是失散多年的兄妹 (25 分)

    题目详情 - L2-016 愿天下有情人都是失散多年的兄妹 (25 分) (pintia.cn) 题解:对于每个给出的编号进行层序遍历,把遍历到的元素存进集合里.如果两个集合存在交集,就代表它们存在公 ...

  8. 7-2 愿天下有情人都是失散多年的兄妹

    7-2 愿天下有情人都是失散多年的兄妹 样例 24 00001 M 01111 -1 00002 F 02222 03333 00003 M 02222 03333 00004 F 04444 033 ...

  9. 7-12 愿天下有情人都是失散多年的兄妹.

    7-12 愿天下有情人都是失散多年的兄妹(25 分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对有 ...

最新文章

  1. phpstudy本地调试运行TP5的后台源码
  2. 不是我放弃AI,是AI放弃了我!!
  3. ×××论坛应该为访问者更大的价值
  4. 经济学中的定量分析python_(转)Python中的结构化数据分析利器-Pandas简介
  5. 语音合成(TTS)应用方案一二三
  6. ik做尾巴摆动 maya_Maya表达式控制动力学动画之尾巴(图文)
  7. 中级维修电工实训装置
  8. 如何给澳洲路局写信refound罚金,遇到交通罚款怎么办
  9. 如何通过手机拍照生成三维模型
  10. 【读过的书】《好看的皮囊千篇一律,有趣的灵魂万里挑一》
  11. Wooboo斥千万巨资 加快手机程序整合步伐
  12. YOLOv5-优化器和学习率调整策略
  13. C# 中的委托和事件[转自张子扬]
  14. 最新 | 用深度强化学习打造不亏钱的交易机器人(附代码)
  15. Win7(Win2003)下安装Node.js(版本号:v0.11.0)提供下载
  16. 各串口设备节点/dev/tty* 的区别
  17. [奔跑吧 Linux内核][学习记录]编译内核-实验1-2-[环境以及参考]
  18. linux强行安装软件,linux软件安装
  19. (附源码)计算机毕业设计ssm电影售票管理系统
  20. mbus经典电路设计分析

热门文章

  1. python作业-5
  2. 八、在创业公司工作的心理历程
  3. springboot实战项目——个人博客系统
  4. 浅谈微分求导+泰勒展开+生成函数
  5. C#List子类转List父类或者Obj对象转List
  6. 输入年份和月份,判断是否闰年?并根据月份判断是什么季节和有多少天
  7. 如何使用python获取Windows 10精美的桌面壁纸
  8. ESP8266 + MAX7219 做一个简易的自动同步的倒计时时钟
  9. 蓝桥杯魔方旋转问题(python)
  10. moveit和gazebo的联合抓取仿真