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

牛客周赛 Round 50

A题:小红的最小最大

思路:

大水题

code:

inline void solve() {int a, b, c; cin >> a >> b >> c;if (min(a, b) + c > max(a, b)) cout << "YES\n";else cout << "NO\n";return;
}

B题:小红的四则运算(easy) 

思路:

大水题

code:

inline void solve() {int ans = 0;int a, b, c; cin >> a >> b >> c;int cur = a + b + c;ans = max(ans, cur);cur = a * b + c;ans = max(ans, cur);cur = a + b * c;ans = max(ans, cur);cur = a * b * c;ans = max(ans, cur);cur = a * (b + c);ans = max(ans, cur);cur = (a + b) * c;ans = max(ans, cur);cout << ans << endl;return;
}

C题:小红的四则运算(hard) 

思路:

大水题

code:

inline void solve() {int ans = 0;int a, b, c; cin >> a >> b >> c;int cur = a + b + c;ans = max(ans, cur);cur = a * b + c;ans = max(ans, cur);cur = a + b * c;ans = max(ans, cur);cur = a * b * c;ans = max(ans, cur);cur = a * (b + c);ans = max(ans, cur);cur = (a + b) * c;ans = max(ans, cur);cout << ans << endl;return;
}

D题:小红的因式分解 

思路:

十字相乘大法。

注意正的可以表示为两个负的相乘。

code:

inline void solve() {ll a, b, c;cin >> a >> b >> c;if (c == 0) {cout << 1 << ' ' << 0 << ' ' << a << ' ' << b << endl;return;}vector<PLL> l, r;function<void(ll, vector<PLL>&)> add = [&](ll x, vector<PLL>& e) {for (ll i = min(1ll, x); i < max(0ll, x + 1); i ++ ) {if (x % i == 0) {e.push_back({i, x / i});e.push_back({-i, -x / i});}}};add(a, l), add(c, r);bool ok = false;for (auto [l1, l2] : l) {for (auto [r1, r2] : r) {if (l1 * r1 + l2 * r2 == b) {ok = true;cout << l1 << ' ' << r2 << ' ' << l2 << ' ' << r1 << endl;break;}}if (ok) break;}if (!ok) cout << "NO\n";return;
}

E题:小红的树上移动 

思路:

学过期望和逆元应该就会做了。

期望等于各个值乘以它的概率的和,对于此题,我们只需统计下每层的叶节点数量和节点数量即可。

inline void solve() {mod = 998244353;int n; cin >> n;vector<vector<int>> e(n + 1);for (int i = 1; i < n; i ++ ) {int u, v; cin >> u >> v;e[u].push_back(v), e[v].push_back(u);}vector<int> dep(n + 1), cnt(n + 1), tot(n + 1);function<void(int, int)> dfs = [&](int u, int pre) {dep[u] = dep[pre] + 1;tot[dep[u]] += 1;if (e[u].size() == 1 && u != 1) cnt[dep[u]] += 1;for (auto v : e[u]) {if (v == pre) continue;dfs(v, u);}};dfs(1, 0);ll ans = 0, lv = 1;for (int i = 1; i <= n; i ++ ) {if (cnt[i]) {ll gai = lv * cnt[i] % mod * inv(tot[i]) % mod;ans = (ans + (i - 1) * gai % mod) % mod;lv = lv * (tot[i] - cnt[i]) % mod * inv(tot[i]) % mod;}}cout << ans << endl;return;
}

http://www.lryc.cn/news/394712.html

相关文章:

  • 后端之路——登录校验
  • 无线网卡怎么连接台式电脑?让上网更便捷!
  • 【45 Pandas+Pyecharts | 去哪儿海南旅游攻略数据分析可视化】
  • Vue3项目给ElementPlus设置中文的两个方案
  • C#开发单实例应用程序并响应后续进程启动参数
  • STM32智能机器人导航系统教程
  • Android 15 适配之16K Page Size :为什么它会是最坑的一个适配点
  • 下载linux的吐槽
  • 【HTML入门】第四课 - 换行、分割横线和html的注释
  • 基于Hadoop平台的电信客服数据的处理与分析④项目实现:任务15:数据生产
  • Kotlin中的数据类型
  • 提高交易决策质量,Anzo Capital昂首资本只需两个交易策略
  • Ubuntu TensorRT安装
  • spring mvc学习
  • 第4集《修习止观坐禅法要》
  • IPython 日志的开关:精通 %logoff 命令的实用指南
  • Redis 分布式集群方案 Cluster
  • Redis的两种持久化方案
  • Spring中常见知识点及使用
  • Excel 宏录制与VBA编程 ——VBA编程技巧篇二 (合并内容相同连续单元格、取消合并单元格并在每个单元格中保留内容)
  • 理解和应用工业设备字典文件:一篇详细指南
  • Python酷库之旅-第三方库Pandas(010)
  • 海康威视监控web实时预览解决方案
  • ubuntu运行qq音乐闪退
  • 人脸检测(Python)
  • Offer150-23:链表中环的入口节点
  • 【linux】服务器创建RAID1
  • 记录自己Ubuntu加Nvidia驱动从入门到入土的一天
  • 基于现有Docker镜像构建新的Docker镜像
  • Java 静态变量、静态代码块、普通代码块、构造方法的执行顺序