CF Round 1009 Div3 -ABCD

news/2025/3/13 21:36:44/

A

直接判断即可

LL a,b,c,d;void solve()
{cin >> a >> b >> c >> d;if (a == b && b == c && c == d) cout << "YES" << endl;else cout << "NO" << endl;	
}

B

去掉两个数(a,b),添加一个数(最大为a+b-1),使得a数组中剩下的一个数最大,

这样进行操作,可以发现最后一个数==\suma[i] - (n - 1),操作了n-1次,可以直接用sum+=a[i],最后sum-= n - 1即可

我下面这个赛时的思路就是贪心让最小的两个合并为一个数,以此类推,直到最后,现在看来是不对的,

int n;
LL a[N];void solve()
{cin >> n;for (int i = 1;i <= n;i ++) cin >> a[i];sort(a + 1,a + 1 + n);stack<LL> stk;for (int i = 1;i <= n;i ++) stk.push(a[i]);while(stk.size() >= 2){LL t1 = stk.top();stk.pop();LL t2 = stk.top();stk.pop();LL t3 = t1 + t2 - 1;stk.push(t3);}cout << stk.top()<< endl;
}

C

 令z = x ^ y;

要满足(x + y) > z && (x + z) > y && (y + z) > x, 我们考虑对应x的每一位

x^y=>z

0^0=>0

0^1=>1

1^0=>1

1^1=>1 

对于x来说,尽量保证任意两边之和>第三边,考虑每一位二进制数,也就是说x=1,y=0,此时z=1如果z最大,x+y==z;如果x最大,y+z==x,不合法。如果x=0,y=0,z=0,同样两边和==第三边,不合法。而y=1时,情况就好一些。

所以,不论x的二进制位上是0or1,y最好是1,但也要满足y<x,只需y=(x的最高位1变成0,其余全为1即可)

LL x;void solve()
{cin >> x;LL w = __bit_width(x);//c++20及以上支持,可以计算出一个数的二进制的位数LL y = (1 << (w - 1)) - 1;LL z = x ^ y;if (y < x && (x + y) > z && (x + z) > y && (y + z) > x) cout << y << endl;else cout << -1 << endl;}//eg:
//10010 x
// 1111 y

D

学习了一下大佬的写法      vector<array<LL,2>> a(n);  类私结构体,可以存储每个数据的下标i,x和r的值,不用开两个数组

因为圆的半径的和较小,所以每一个(x,0)的坐标我们可以枚举,所以考虑可以枚举每一个圆,计算每一个圆范围内的x轴的与圆上交点的坐标,利用map对于每一个(x,0)对应的y的上届和下届取一个并集,ans=\sum(2*上届 + 1)


int n,m;void solve()
{cin >> n >> m;vector<array<LL,2>> a(n);for (int i = 0;i < n;i ++) cin >> a[i][0];for (int i = 0;i < n;i ++) cin >> a[i][1];map<LL,LL> minv,maxv;//y的下届,y的上届for (auto [cen,r] : a){for (int i = cen - r;i <= cen + r;i ++){LL y = round(sqrt(r * r - (i - cen) * (i - cen)));//round函数四舍五入取整,有可能会超出圆的范围,所以要y--,保证y在圆上或内(保证y的合法性)while(y * y + (i - cen) * (i - cen) > r * r) y--;maxv[i] = max(maxv[i],y); //上届取并集minv[i] = min(minv[i],-y); //下届取并集}}LL ans = 0;for (auto [x,y] : maxv)ans += maxv[x] - minv[x] + 1;cout << ans << endl;}


http://www.ppmy.cn/news/1578891.html

相关文章

深度学习实验

实验一 numpy创建全连接神经网络 import os import numpy as np import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers, datasets, optimizersos.environ["TF_CPP_MIN_LOG_LEVEL"] "2"# 准备数据 def mnist_datas…

【数据挖掘】通过心脏病数据案例熟悉数据挖掘的完整过程

心脏病数据挖掘过程 一、加载数据源 # 如果没有安装数据源所依赖的库&#xff0c;则先安装数据源所在的python库: pip install ucimlrepo # 引入pandas和ucimlrepo import pandas as pd from ucimlrepo import fetch_ucirepo# fetch dataset Heart Disease dataset的Id为45 h…

ospf的内容解析

当然&#xff0c;以下是您提供的OSPF&#xff08;开放最短路径优先&#xff09;接口配置信息的翻译&#xff1a; --- **OSPF 进程 1&#xff0c;路由器 ID 为 12.1.1.2** **接口信息** 区域&#xff1a;0.0.0.0 &#xff08;未启用 MPLS TE&#xff09; **接口&#xff1a…

[网络爬虫] 动态网页抓取 — Selenium 入门操作

&#x1f31f;想系统化学习爬虫技术&#xff1f;看看这个&#xff1a;[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客 0x01&#xff1a;WebDriver 类基础属性 & 方法 为模仿用户真实操作浏览器的基本过程&#xff0c;Selenium 的 WebDriver 模块提供了一个 WebDriver 类…

《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(33)玲珑宝塔藏珍宝 - 打家劫舍(空间压缩)

《灵珠觉醒:从零到算法金仙的C++修炼》卷三天劫试炼(33)玲珑宝塔藏珍宝 - 打家劫舍(空间压缩) 哪吒在数据修仙界中继续他的修炼之旅。这一次,他来到了一片神秘的玲珑谷,谷中有一座巨大的玲珑宝塔,塔身闪烁着神秘的光芒。谷口有一块巨大的石碑,上面刻着一行文字:“欲…

Python自动点击器开发教程 - 支持键盘连按和鼠标连点

Python自动点击器开发教程 - 支持键盘连按和鼠标连点 这里写目录标题 Python自动点击器开发教程 - 支持键盘连按和鼠标连点项目介绍开发环境安装依赖核心代码解析1. 键盘模拟实现2. 鼠标点击实现 开发要点使用说明注意事项优化建议打包发布项目源码开发心得参考资料成品工具 项…

【MySQL】全面理解Mysql架构

MySQL架构 如图&#xff0c;将MySQL 拆分为 上下两个部分&#xff0c;上层通常叫做 Server层 主要是Mysql 自己实现&#xff0c;下层叫做 存储引擎层&#xff0c;是插件开发模式&#xff0c;Mysql官方最初自己提供了MyISAM&#xff0c;是一种非事务存储引擎&#xff0c;而后有公…

使用 crontab 定时同步服务器文件到本地

https://www.dong-blog.fun/post/1987 1. 安装 sshpass sshpass 是一个可以自动输入密码的工具。如果未安装&#xff0c;运行以下命令安装&#xff1a; • 对于 Debian/Ubuntu 系统&#xff1a; apt update && apt install sshpass• 对于 CentOS/RHEL 系统&#xf…