题解:AT_abc389_d [ABC389D] Squares in Circle
假定原点为圆心。
我们只考虑点在第一象限的情况,剩下的情况同理。
因为圆心是原点,所以在圆内的点的横坐标一定在 \(r\) 之内。
枚举点的横坐标 \(x + \frac{1}{2}\),二分最大的 \(y + \frac{1}{2}\),使得点 \((x + \frac{1}{2}, y + \frac{1}{2})\) 到原点的距离 \(\le r\) (因为我们令圆心为原点,所以所有的点都应平移一段)。
此时所有横坐标为 \(x + \frac{1}{2}\) 的在圆内的点分别是:
\]
一共是 \(y + 1\) 个。
将枚举的所有 \(x\) 算出来的答案加起来记为 \(t\)。
因为我们只考虑了第一象限,所以答案是 \(4 \times t + 1\)(需要考虑原点的情况,所以要 $ + 1$)。
#include <bits/stdc++.h>
#define int long long
#define pii pair<int, int>
#define FRE(x) freopen(x ".in", "r", stdin), freopen(x ".out", "w", stdout)
#define ALL(x) x.begin(), x.end()
using namespace std;
inline void cmax(int& x, int c) {
x = max(x, c);
}
inline void cmin(int& x, int c) {
x = min(x, c);
}
int _test_ = 1;
int n, ans;
double dis(double x, double y) {
return (double)sqrt((double)((double)((double)x + 0.5) * (double)((double)x + 0.5) + (double)((double)y + 0.5) * (double)((double)y + 0.5)));
}
void init() {}
void clear() {}
void solve() {
cin >> n;
for (int i = 1; i < n; i++) {
int l = 0, r = n, t = 0;
while (l <= r) {
int mid = (l + r) >> 1;
if (dis(i, mid) <= (double)n) {
t = mid;
l = mid + 1;
} else
r = mid - 1;
}
ans += t + 1;
}
cout << ans * 4 + 1;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
// cin >> _test_;
init();
while (_test_--) {
clear();
solve();
}
return 0;
}
题解:AT_abc389_d [ABC389D] Squares in Circle的更多相关文章
- 算法与数据结构基础 - 字典树(Trie)
Trie基础 Trie字典树又叫前缀树(prefix tree),用以较快速地进行单词或前缀查询,Trie节点结构如下: //208. Implement Trie (Prefix Tree)clas ...
- Making A Circle Out Of Squares
方形画圆 解决方案: 循环偏移5角度画方形 效果图: Python 源码 import turtle; window = turtle.Screen(); window.bgcolor("p ...
- LeetCode题解之Squares of a Sorted Array
1.题目描述 2.问题分析 使用过两个计数器. 3.代码 class Solution { public: vector<int> sortedSquares(vector<int& ...
- [APIO2018] Circle selection 选圆圈(假题解)
题面 自己去\(LOJ\)上找 Sol 直接排序然后\(KDTree\)查询 然后发现\(TLE\)了 然后把点旋转一下,就过了.. # include <bits/stdc++.h> # ...
- POJ3347:Kadj Squares——题解
http://poj.org/problem?id=3347 题目大意:给定一些正方形的边长,让他们尽可能向左以45°角排列(不能互相重合),求在上面看只能看到哪几个正方形. ———————————— ...
- 【题解】Luogu CF1172B Nauuo and Circle
原题传送门 题意:在圆上有n个节点(珂以构成凸多边形),让你给节点编号,使得将题目给你的边(一棵树)没有交叉 我们钦定1为这个树的根节点.任意节点\(x\)的一颗子树的点应该是圆弧上连续的一段(我也不 ...
- 题解【洛谷P2730】魔板 Magic Squares
题面 首先我们可以发现,在每一次 BFS 时按照 \(A→B→C\) 的顺序枚举遍历肯定是字典序最小的. 然后就是普通的 BFS 了. 我们考虑使用 \(\text{STL map}\) 来存储起点状 ...
- D. Circle Game 题解(对称博弈)
题目链接 题目大意 t组数据(t<=100) 给你一个半径d和步数k,你最开始在原点(0,0)每次可以让x坐标增加k,或者y坐标增加k 两人轮流走,求谁最后不能走了,谁就输了,都是最优博弈 输的 ...
- HHKB Programming Contest 2020 D - Squares 题解(思维)
题目链接 题目大意 给你一个边长为n的正方形和边长为a和b的正方形,要求把边长为a和b的正方形放在长度为n的正方形内,且没有覆盖(可以相邻)求有多少种放法(mod 1e9+7) 题目思路 这个思路不是 ...
- CF263B Squares 题解
Content 有 \(n\) 个边长为 \(a_i\) 的正方形,第 \(i\) 个正方形的四个顶点分别是 \((0,0),(0,a_i),(a_i,0),(a_i,a_i)\),我们定义一个点属于 ...
随机推荐
- SQL注入手工注入portswigger labs练习
目录 1 什么是SQL注入 2 QL注入会发生在哪些地方 3 QL注入的类型有哪些 4 QL注入点如何探测 5 QL注入的一般步骤 6 QL注入的防御 7 SQL注入前需要了解的 8 场训练 port ...
- RMI原理及常见反序列化攻击手法
这是对网上一些文章和视频的再总结,可以参考以下资料,师傅们分析的都挺详细了,我这就是记录一下师傅们写的博客. 廖雪峰 - 给了简单的小例子,了解即可 B站视频(白师傅) 先知社区(小阳师傅) - 讲的 ...
- vue-elementui 因滚动条引发的table错位问题
修复后效果 在网上看到的方法都是设置样式属性,试过之后也不生效,也不知道原因 所以就自己用原生js解决了,代码如下 //修错位 x(){ var u = document.getElementsByC ...
- 圆梦:借助云开发 CloudBase实现你的游戏开发梦想
最近我发现AI产品在不断涌现新动向,尤其是一些技术巨头推出的创新产品.例如,今天我们要探讨的是腾讯云开发的云开发 CloudBase,如果你之前没有听说过这个名字,那可能还记得腾讯云推出的另一个产品- ...
- 痞子衡嵌入式:i.MXRT1170上PXP对CM7 TCM进行随机地址短小数据写入操作限制
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170上PXP对CM7 TCM进行随机地址短小数据写入操作限制. 在 MCU 里能够对片内外映射的存储器进行读写操作的主设 ...
- Flutter Package: flutter_animate
Flutter package: flutter_animate A performant library that makes it simple to add almost any kind of ...
- Flutter List映射获取索引
List映射获取索引 通常用List映射时只能获取到element而不能获取到索引,比如 return data.map((e) => Media.fromJson(e as Map<St ...
- Spring JDBCTemplate 增删查功能 (简单易懂)
需要的外部jar包: mysql-connector-javadruid 配置druid <!--配置数据库连接池--> <bean id="dataSource" ...
- Linux命令行/终端连接(隐藏)SSID的WiFi
推荐看完Linux命令行/终端连接隐藏SSID的WiFi(续篇)和本文后,再按照实际情况采用network-manager或者ifupdown 多数Linux系统默认自带有线网络的驱动和配置软件,但是 ...
- kubeadm init问题
1.解析不到对应的主机 [WARNING Hostname]: hostname "k8s-master-01" could not be reached [WARNING Ho ...