首页 > 小红的圆移动
头像 Jakeap
发表于 2025-12-26 11:13:23
这是一道模拟加排序的题目理解题目意思,包含原点的圆通过移动任意距离使其不包含原点。那么一开始就不包含原点就不需要考虑也就是距离原点距离d>半径r,那么要保存距离原点距离d<半径r的代价,直接算出结果存到vector中即可。最后对于vector排序,保留最小的k个,将剩余的加和输出即可。一 展开全文
头像 Lambda_L
发表于 2025-12-26 00:12:23
思路首先需要明确几个关键概念:圆包含原点的判定:若圆心 (x,y) 到原点的距离 d = √(x²+y²) 小于半径 r,则该圆包含原点;否则不包含。移动代价计算:代价 = 圆面积 × 移动距离。圆面积为 πr²,移动距离是让圆不再包含原点所需的最小距离。最小代价策略:对于原本包含原点的圆,若需要让 展开全文
头像 RogeAustine
发表于 2025-12-26 00:52:30
// 最烦的就是几何题 // 不过当你对一道题感觉很难受的时候,这也正是你进步的时候 // 算法竞赛只有无限的难受与一瞬间的欢喜 #include <cmath> #include <cstdio> #include <algorithm> #include & 展开全文
头像 在刷代码的肱二头肌很认真
发表于 2025-12-26 14:19:06
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); funct 展开全文
头像 BaiJay
发表于 2025-12-26 08:34:25
把符合条件的园找出来,然后根据需要移动的位置大小排序,需要注意最小移动大小的计算方式,然后根据要移走的园的数量依次移除即可 #include <bits/stdc++.h> #define int long long using namespace std; #define endl ' 展开全文
头像 YunBaichuan
发表于 2025-12-26 09:59:37
思路:模拟,贪心。我们读入数据的时候,先判断当前的圆是否包含了原点。如果包含有原点,那就计算出它的移动代价,并且存放到一个临时数组中。之后就判断一下这个数组的长度是否<=k,如果是直接输出0即可;否则,我们要先把代价从小到大排序,然后取前length - k个元素。 代码: import sy 展开全文
头像 quchen666
发表于 2025-12-26 11:25:50
#include <bits/stdc++.h> using namespace std; typedef long long ll; const double PI = acos(-1); int main() { int n,k; cin>>n>&g 展开全文
头像 IA3000
发表于 2025-12-26 12:58:26
#include <bits/stdc++.h> using namespace std; const int N=1e5+5; const double pi = acos(-1); struct Node{ double x,y,r,v; bool operat 展开全文
头像 ATRI_execution
发表于 2025-12-26 13:41:16
import sys import math from decimal import Decimal, getcontext # 要设置高精度,需要使用decimal模块 getcontext().prec = 50 n, k = map(int, sys.stdin.readline().sp 展开全文
头像 chenlan114
发表于 2025-12-26 16:33:04
#include <bits/stdc++.h> using namespace std; using ll = long long; // 结构体存储每个圆的核心信息 struct C { long double x; // 圆心x坐标 long doubl 展开全文