当前位置: 首页 > news >正文

AtCoder Beginner Contest 120 题解

题目链接:https://atcoder.jp/contests/abc120

 

A Favorite Sound

分析:答案为

代码:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int a, b, c;
 8     cin>>a>>b>>c;
 9     cout<<min(b / a, c)<<endl;
10     return 0;
11 }
View Code

 

K-th Common Divisor

分析:A、B范围很小,枚举即可。注意要判断A、B的大小,从大到小枚举。

代码:

 1 #include <cstdio>
 2 #include <iostream>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int a, b, k;
 9     scanf("%d %d %d", &a, &b, &k);
10     int imax = max(a, b);
11     int cnt = 0;
12     for(int i = imax; i >= 1; --i)
13     {
14         if(a % i == 0 && b % i == 0)
15             cnt++;
16         if(cnt == k)
17         {
18             printf("%d\n", i);
19             break;
20         }
21     }
22     return 0;
23 }
View Code

 

Unification

分析:因为S串里只有‘0’和‘1’,所以无论如何只要还有‘0’和‘1’同时存在,就一定可以继续该操作。答案就是‘0’和‘1’的数量取最小值的两倍(一次操作两个cube)。

代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     char s[100005];
10     scanf("%s", s);
11     int slen = strlen(s);
12     int zero = 0, one = 0;
13     for(int i = 0; i < slen; ++i)
14     {
15         if(s[i] == '0')
16             zero++;
17         else if(s[i] == '1')
18             one++;
19     }
20     printf("%d\n", min(zero, one)*2);
21     return 0;
22 }
View Code

 

Decayed Bridges

分析:建边后删边判断连通比较麻烦。我们可以考虑倒着建边。当所有边都删完后,。然后倒序加入每一条边,inconvenience减去加入一条边后连通的点对。判断是否在同一个连通集里可以用并查集维护。这里需要开一个数组s记录每一个集合内的点个数,初始所有点为1.之后更新的时候只要更新并查集里的根节点个数即可。每加一条边

代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 
 4 using namespace std;
 5 
 6 typedef long long ll;
 7 
 8 struct bridge
 9 {
10     int a;
11     int b;
12 }dict[100005];
13 
14 int parent[100005], trank[100005];
15 ll sum;
16 ll ans[100005] = {0};
17 ll s[100005];
18 
19 void init()
20 {
21     for(int i = 0; i < 100005; ++i)
22     {
23         parent[i] = -1;
24         trank[i] = 0;
25     }
26 }
27 
28 int find_root(int x)
29 {
30     int x_root = x;
31     while(parent[x_root] != -1)
32         x_root = parent[x_root];
33     return x_root;
34 }
35 
36 int union_set(int x, int y)
37 {
38     int x_root = find_root(x);
39     int y_root = find_root(y);
40     if(x_root == y_root)
41         return 0;
42     else
43     {
44         if(trank[x_root] > trank[y_root])
45         {
46             parent[y_root] = x_root;
47             sum -= s[x_root]*s[y_root];
48             s[x_root] += s[y_root];
49         }
50         else if(trank[y_root] > trank[x_root])
51         {
52             parent[x_root] = y_root;
53             sum -= s[x_root]*s[y_root];
54             s[y_root] += s[x_root];
55         }
56         else
57         {
58             parent[y_root] = x_root;
59             trank[x_root]++;
60             sum -= s[x_root]*s[y_root];
61             s[x_root] += s[y_root];
62         }
63     }
64     return 1;
65 }
66 
67 int main()
68 {
69     init();
70     int n, m;
71     scanf("%d %d", &n, &m);
72     for(int i = 0; i < m; ++i)
73         scanf("%d %d", &dict[i].a, &dict[i].b);
74     for(int i = 0; i <= n; ++i)
75         s[i] = 1;
76     sum = 1ll*n*(n-1)/2;
77     for(int i = m - 1; i >= 0; --i)
78     {
79         ans[i] = sum;
80         int x = dict[i].a;
81         int y = dict[i].b;
82         union_set(x, y);
83     }
84     for(int i = 0; i < m; ++i)
85         cout<<ans[i]<<endl;
86     return 0;
87 }
View Code

 

转载于:https://www.cnblogs.com/Bil369/p/10620817.html

相关文章:

  • 第三章小结
  • 微信小程序_(组件)icon、text、rich-text、progress四大基础组件
  • 处理机调度算法
  • 上周热点回顾(3.25-3.31)
  • 软工第三次团队作业 - 功能规格说明书
  • [北航软工]技术规格说明书
  • PAT甲级1068 Find More Coins【01背包】
  • 【BZOJ2125】—最短路(圆方树+树链剖分)
  • Java学习笔记-正则表达式
  • centos7.5搭建zabbix3.4.x以及mysql定制化监控
  • java ReentrantLock
  • C学习笔记-makefile
  • cocos2dx笔记1:概述
  • 易语言QQpost加好友源码
  • Ansible-----常用功能
  • [数据结构]链表的实现在PHP中
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • JavaScript对象详解
  • React Transition Group -- Transition 组件
  • RxJS: 简单入门
  • spring boot 整合mybatis 无法输出sql的问题
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 百度地图API标注+时间轴组件
  • 给Prometheus造假数据的方法
  • 使用agvtool更改app version/build
  • 算法系列——算法入门之递归分而治之思想的实现
  • hi-nginx-1.3.4编译安装
  • scrapy中间件源码分析及常用中间件大全
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​2021半年盘点,不想你错过的重磅新书
  • # Panda3d 碰撞检测系统介绍
  • #includecmath
  • #每日一题合集#牛客JZ23-JZ33
  • (2)nginx 安装、启停
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十五)使用Nexus创建Maven私服
  • (转)Sublime Text3配置Lua运行环境
  • .CSS-hover 的解释
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net项目IIS、VS 附加进程调试
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • .stream().map与.stream().flatMap的使用
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @在php中起什么作用?
  • [Android Studio 权威教程]断点调试和高级调试
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [CCIE历程]CCIE # 20604
  • [IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口
  • [IE编程] 如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式
  • [iOS]把16进制(#871f78)颜色转换UIColor