笔试强训Day15 二分 图论

embedded/2024/10/20 17:15:07/

平方数

题目链接:平方数 (nowcoder.com)

思路:水题直接过。

AC code:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{long long int n; cin >> n;long long int a = sqrtl(n);long long int b = a + 1;if( abs(n - a * a) > abs(n - b * b))cout << b * b;else cout << a * a;return 0;
}

分组

题目链接:E-分组_牛客小白月赛40 (nowcoder.com)

思路:

题目中要求人数最多的小组人尽量少,即可二分每个小组人数。

注意如果小组人数大于 最多人的那个最大值 是不可以的。

多关注下边界条件即可。

AC code:

#include<iostream>
#include<unordered_map>
#include<algorithm>
using namespace std;
unordered_map<int,int> mp;
int n,m;
int cnt;bool check(int x)
{int k = 0;//小组数for(auto it : mp){if(it.second > x)k +=(it.second + x - 1) / x;//向上取整elsek ++;}if(k > m) return 0;return 1;
}int main()
{cin >> n >> m;int maxx = -2e9;for(int i = 0; i < n; i ++){int x; cin >> x;mp[x]++;maxx = max(maxx, mp[x]);}int l = 0, r = 1e5 + 10; // 二分小组人数while(l < r){int mid = l + r >> 1;if(check(mid)) r = mid;else l = mid + 1;}if(r <= maxx)cout << r << endl;else cout << -1 << endl;return 0;
}

AB13 【模板】拓扑排序

题目链接:【模板】拓扑排序_牛客题霸_牛客网 (nowcoder.com)

思路:

模板题 根据入度是否为零 依次入队即可。

AC code:

#include<iostream>
#include<cstring>
using namespace std;const int N = 100010;int h[N], e[N], ne[N], idx;int q[N], d[N]; // d[N] 入度int n, m;void add(int a, int b) {e[idx] = b;ne[idx] = h[a];h[a] = idx ++;
}
void topsort() {int hh = 0, tt = -1;for (int i = 1; i <= n; i++)if (d[i] == 0) q[++tt] = i;while (hh <= tt) {int a = q[hh++];for (int i = h[a]; i != -1; i = ne[i]) {int j = e[i];d[j]-- ;if (!d[j]) q[++tt] = j;}}if (tt == n - 1)for (int i = 0; i < n; i++) cout << q[i] << " ";elsecout << -1;}
int main() {memset(h, -1, sizeof(h));cin >> n >> m;for (int i = 1; i <= m; i++) {int a, b;cin >> a >> b;add(a, b);d[b]++;}topsort();return 0;
}


http://www.ppmy.cn/embedded/35967.html

相关文章

pip install 过程中报错:Microsoft Visual C++ 14.0 is required.

这是因为电脑中缺少这个组件导致的,我们将这个组件安装上即可解决问题。 安装报错关键信息:Microsoft Visual C++ 14.0 is required. 目录 一、下载组件 二、 安装步骤 一、下载组件 阿里网盘:VisualStudioSetup.exe:

SSH文件传输

一、设置SSH密钥对&#xff0c;实现记住密码 要避免每次使用scp或ssh时都输入密码&#xff0c;你可以设置SSH密钥对&#xff08;一对公钥和私钥&#xff09;&#xff0c;并将公钥添加到远程服务器上。这样&#xff0c;你的系统可以通过密钥自动验证身份&#xff0c;而无需手动…

Mac M1 解决安装grpcio不可用

问题描述&#xff1a; 使用 pip 已经更新 grpcio 至最新版&#xff0c;调用时还是报错 如下图&#xff1a; Traceback (most recent call last):File "/Users/yu/anaconda3/envs/dify2/lib/python3.10/site-packages/flask/cli.py", line 245, in locate_app__imp…

自动获得IPv4地址:概念、原理、应用与未来趋势

随着互联网的飞速发展&#xff0c;IP地址作为设备在网络中的唯一标识&#xff0c;扮演着越来越重要的角色。IPv4地址&#xff0c;作为目前主流的IP地址类型&#xff0c;其分配与获取方式对于网络设备的连通性和网络管理的效率具有决定性影响。虎观代理小二将带大家一起探讨“自…

【Qt】按钮类控件

文章目录 1 :peach:Push Button:peach:2 :peach:Radio Buttion:peach:3 :peach:Check Box:peach:4 :peach:Tool Button:peach: 1 &#x1f351;Push Button&#x1f351; 使⽤ QPushButton 表⽰⼀个按钮&#xff0c;这也是当前我们最熟悉的⼀个控件了&#xff0c;QPushButton …

数据交换和异步请求(JSONAjax))

目录 一.JSON介绍1.JSON的特点2.JSON的结构3.JSON的值JSON示例4.JSON与字符串对象转换5.注意事项 二.JSON在Java中的使用1.Javabean to json2.List to json3.Map to JSONTypeToken底层解析 三.Ajax介绍1.介绍2.Ajax经典应用场景 四.Ajax原理示意图1. 传统web应用2.Ajax方法 五.…

《21天学通C++》(第十八章)STL list和forward_list

std::list的特点 1.插入和删除操作高效&#xff1a;在任意位置插入或删除元素的开销是 O(1)&#xff0c;不需要像 std::vector 那样可能需要移动大量元素。 2.不支持随机访问&#xff1a;访问 std::list 中的元素需要从头开始遍历到所需位置&#xff0c;访问特定元素的时间复杂…

数字孪生—物联网技术

数字孪生涉及到诸多技术领域&#xff0c;物联网技术在数据孪生项目中具有重要的应用价值&#xff0c;主要体现在以下几个方面&#xff1a; 1.数据采集和实时监测&#xff1a;物联网技术可以用于实时采集各种设备、传感器和设施的数据&#xff0c;包括温度、湿度、压力、振动等…