E. Summer Earnings
就是碰见三个圆或者四个圆的时候就想一下怎么用其他的东西等价一下啊。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #include<stdio.h> #include<algorithm> #include<string.h> #include<bitset> #include<math.h> using namespace std; struct node1 { int x,y,id; }s[4000]; struct node { int a,b,w; }G[10000000]; bitset<4000>vis[4000]; int dis( int a, int b) { int res=0; res+=(s[a].x-s[b].x)*(s[a].x-s[b].x); res+=(s[a].y-s[b].y)*(s[a].y-s[b].y); return res; } bool cmp(node x,node y) { return x.w>y.w; } int main() { int n; scanf ( "%d" ,&n); for ( int i=1;i<=n;i++) { scanf ( "%d%d" ,&s[i].x,&s[i].y); s[i].id=i; } int cnt=0; for ( int i=1;i<=n;i++) { for ( int j=i+1;j<=n;j++) { G[++cnt].w=dis(i,j); G[cnt].a=s[i].id; G[cnt].b=s[j].id; } } int ans=0; sort(G+1,G+1+cnt,cmp); for ( int i=1;i<=cnt;i++) { int a=G[i].a,b=G[i].b; bitset<4000> temp; temp=vis[a]&vis[b]; if (temp.any()) { ans=G[i].w; break ; } vis[a].set(b); vis[b].set(a); } printf ( "%lf\n" , sqrt (ans)/2); } |
分类:
数据结构 bitset
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· 【译】.NET 升级助手现在支持升级到集中式包管理
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· Tinyfox 发生重大改版