hdu 5299(树上删边游戏) Circles Game

Android SurfaceFlinger——概述(一) 对于系统渲染流程的理解是指导 SurfaceFlinger 设计的核心思想,从 Android 4.1 一直到 Android 9.0 都没有太大的变化。只要抓住这五个核心思想,我们阅读 SurfaceFlinger 的难度就会下降不少。下面看一下 SurfaceFlinger 的体系和 Skia 以及 View的绘制流程的关系。framework 面向开发者所有的 View 是便于开发的控件,里面仅仅只是提供了当前 View 各种属性以及功能。 阅读详情

题意:

给你一些圆圈的圆心坐标和半径,保证这些圆圈是包含或者相离的。现在两个人做博弈操作,拿掉一个圆圈,然后这个圆圈所包含的都要移除掉。两个人一直拿下去,直到某个人找不到一个可以移除的圈他就输了。

思路

学习的姿势。这是一个树上删边游戏模型;
首先按照半径升序排序,然后对于每一个圆找第一个包含它的圆,然后连一条边。建树完成。
叶子节点的SG值为0;
中间节点的 SG 值为它的所有子节点的 SG 值加 1 后的异或和;
这里可以建立成森林或者直接一棵树,没有太大区别。建成一棵树估计要方便一些吧。
可以看看爱神的这篇blog;link
以及贾志豪神牛的paper;link

参考code:

/*
 #pragma warning (disable: 4786)
 #pragma comment (linker, "/STACK:0x800000")
 */
#include <cassert>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <vector>
#include <list>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <algorithm>
#include <iterator>
#include <utility>
using namespace std;

template< class T > T _abs(T n) { return (n < 0 ? -n : n); }
template< class T > T _max(T a, T b) { return (!(a < b) ? a : b); }
template< class T > T _min(T a, T b) { return (a < b ? a : b); }
template< class T > T sq(T x) { return x * x; }
template< class T > T gcd(T a, T b) { return (b != 0 ? gcd<T>(b, a%b) : a); }
template< class T > T lcm(T a, T b) { return (a / gcd<T>(a, b) * b); }
template< class T > bool inside(T a, T b, T c) { return a<=b && b<=c; }


#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define F(i, n) for(int (i)=0;(i)<(n);++(i))
#define rep(i, s, t) for(int (i)=(s);(i)<=(t);++(i))
#define urep(i, s, t) for(int (i)=(s);(i)>=(t);--(i))
#define repok(i, s, t, o) for(int (i)=(s);(i)<=(t) && (o);++(i))
#define MEM0(addr) memset((addr), 0, sizeof((addr)))
#define MP(x, y) make_pair(x, y)
#define REV(s, e) reverse(s, e)
#define SET(p) memset(pair, -1, sizeof(p))
#define CLR(p) memset(p, 0, sizeof(p))
#define MEM(p, v) memset(p, v, sizeof(p))
#define CPY(d, s) memcpy(d, s, sizeof(s))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define SZ(c) (int)c.size()
#define PB(x) push_back(x)
#define ff first
#define ss second
#define ll long long
#define ld long double
#define pii pair< int, int >
#define psi pair< string, int >
#define ls u << 1
#define rs u << 1 | 1
#define lson l, mid, u << 1
#define rson mid, r, u << 1 | 1

const int INF = 0x3f3f3f3f;
const double eps = 1e-9;
const int MAXN = 20010;
const int mod = 1000000007;

struct Point{
    int x,y,r;
}point[MAXN];
int cmp(Point a,Point b){
    return a.r < b.r;
}
int dist(int i,int j){
    return (ll)(point[i].x - point[j].x) * (point[i].x - point[j].x) + (point[i].y-point[j].y) * (point[i].y - point[j].y);
}
struct Edge{
    int to,next;
}edge[MAXN];
int head[MAXN],tail;
void add(int from,int to){
    edge[tail].to = to;
    edge[tail].next = head[from];
    head[from] = tail++;
}
int dfs(int from){
    int res = 0;
    for(int i = head[from];i != -1; i = edge[i].next)
        res ^= dfs(edge[i].to)+1;
    return res;
}
int main(){
    //READ("in.txt");
    int t;
    scanf("%d",&t);
    while(t--){
        int n;
        scanf("%d",&n);
        rep(i,0,n-1){
            scanf("%d%d%d",&point[i].x,&point[i].y,&point[i].r);
        }
        sort(point,point+n,cmp);
        tail = 0;
        MEM(head,-1);
        rep(i,0,n-1){
            int flag = 0;
            rep(j,i+1,n-1){
                int rr = (ll)point[j].r * point[j].r;
                int dis = dist(i,j);
                if(rr > dis){  
                    flag = 1;
                    add(j,i);
                    break;
                }
            }
            if(!flag) add(n,i);
        }
        if(dfs(n) != 0)
            puts("Alice");
        else
            puts("Bob");
    }
    return 0;
}
NVIDIA Isaac ROS - 入门教程(一) 欢迎访问 Isaac ROS,这是一套硬件加速、高性能、低延迟的 ROS 2 软件包,用于制造自主机器人,充分利用 Jetson 和其他英伟达平台的强大功能。英伟达 Jetson 平台运行在基于 Ubuntu Linux 的 JetPack 操作系统上。JetPack 5.x 是在 Ubuntu 20.04 Focal 的基础上构建的,这意味着由 ROS 2 Buildfarm 为 Ubuntu 22.04 Jammy 构建的 ROS 2 Humble 的 Debian 包不受支持。由于官方 ROS 2 B 阅读详情

相关推荐

Visionpro 使用CogPMAlignTool工具提取匹配轮廓点

【代码】Visionpro 使用CogPMAlignTool工具提取匹配轮廓点。

weixin_43947315的博客 2091

树上删边游戏及其拓展(公平博弈:克朗原理+费森原理)

参考资料 问题描述 在某一棵树上删除一条边,同时删去所有在删除后不再与根相连的部分 双方轮流操作,无法再进行删除者判定为失败 一个游戏中有多棵树,我们把ta们的根都放在地板上,方便之后的处理 在此,我们讨论的将是公平游戏,即双方都可以删除任意的树边 我们称这个游戏为:Green Hachenbush(树上公平删边游戏) 之所以强调是公平博弈,是因为还有另一种删边游戏,是不公平的,...

Coco_T的博客 4878

英飞凌TC3xx实战:PWM中点触发ADC采集+DMA自动搬运完整配置流程(基于ILLD库)

本文详细介绍了在英飞凌TC3xx系列微控制器上使用ILLD库实现PWM中点触发ADC采集并通过DMA自动搬运数据的完整配置流程。该方案适用于电机控制、电源管理等需要高精度定时采集的场景,通过GTM生成PWM信号、ADC采集和DMA传输实现全硬件自动化流程,显著提升系统效率。

weixin_42536058的博客 527

树上删边游戏(树上博弈)

树上删边游戏  1.游戏规则    从某一棵树上删除一条边,同时删去所有在删除边后不再与根相连的部分。双方轮流进行,无法再进行删除者判定为失败,也就是比你拿掉最后一部分你就赢了。一个游戏中有多棵树,我们把它们的根都挂在天花板上…或者说,放在地板上也行..这么做是为了方便后面的一些解释和处理。    在这篇文章中,我们讨论的将是公平游戏,也就是双方可以删除任意的边,我们称这个游戏为:Green

发神经的猫的专栏 1275

标签传播算法LPA:半监督学习解决标注数据不足的完整实战指南

在机器学习实际工程中,标注数据稀缺往往是制约模型性能的核心瓶颈。半监督学习提供了一条利用海量未标注数据来增强模型泛化能力的有效路径,其中标签传播算法(Label Propagation Algorithm, LPA)因其直观的图结构和优雅的数学原理而备受关注。LPA通过将样本映射为图中的节点,以相似度作为边权重,让已知标签沿着图结构不断扩散,从而实现对未知样本的预测。其背后基于聚类假设与流形假设,能在低标注率场景下显著缓解过拟合问题,提升分类准确率。该技术在文本分类、金融风控、图像识别等存在大量无标注数据的

weixin_29056781的博客 239

Flotherm XT新手必看:5分钟搞定自然对流热仿真(附案例文件)

本文为Flotherm XT新手提供了自然对流热仿真的快速入门指南,通过详细的步骤解析和实用技巧,帮助用户在5分钟内完成从建模到后处理的全流程。重点介绍了环境设置、几何建模、材料属性、网格划分等关键环节,并附有案例文件供参考学习,助力工程师快速掌握热仿真技术。

weixin_30839881的博客 612

POJ.3710.Christmas Game(博弈论 树上删边游戏 Multi-SG)

题目链接 \(Description\) 给定n棵"树",每棵"树"的节点可能"挂着"一个环,保证没有环相交,且与树只有一个公共点。 两人轮流从树上删边,删去一条边后,不与根相连的一部分会被移除。最后无法移动的人输。问谁能赢。 \(Solution\) 如果没有环,那就是典型的树上删边游戏 考虑环,没有共用边且与树只有一个交点,那这是一个从树上某点\(x\)连出最后又连回这个点的简单环。 删除环上...

weixin_30512043的博客 262

SE (3) -Transformers:三维旋转 - 平移等变注意力网络

E (3) 变换器,这是一种用于三维点云和图的自注意力模块变体,在连续三维旋转平移下具有等变性。注意力机制的计算量会随着点云规模的增大呈二次方增长,因此引入邻域的概念是很有必要的:每个点不再关注所有其他点,而只关注其最近的邻点。注意力机制此前已在图的领域中以内部注意力、自注意力、顶点注意力或图注意力等名称被引入 [17, 31, 32, 12, 26]。等变性意味着当输入数据发生旋转或平移时,模型的输出也会以相应的、可预测的方式进行变换,从而保证模型性能的稳定性和可预测性。

qq_49786473的博客 1479

图博弈,树上删边博弈

参考自:《组合游戏略述——浅谈SG游戏的若干拓展及变形》 无向图删边游戏: 树的删边游戏 规则如下: * 给出一个有N个点的树,有一个点作为树的根节点。 * 游戏者轮流从树中删去边,删去一条边后,不与根节点相连的部分将被移走。 * 谁无路可走谁输。 定理: 叶子结点的SG值为0,中间节点的SG值为它的所有子节点的SG值加一后的异或和。 Fusion

Sothan 2225

Airtest进阶使用篇-提高脚本稳定性+批量运行脚本

Airtest进阶篇,主要分享如何提高脚本稳定性+如何批量运行脚本生成测试报告!

程序员小杨哥的博客 2569

让 OData V4 界面更聪明:SAP UI5 中的 Side Effects 全解析

摘要:在OData V4应用中,字段修改常触发联动更新(Side Effects)。SAP UI5支持通过后端PATCH响应隐式返回或前端显式请求(requestSideEffects)两种方式处理。最佳实践包括:在validateFieldGroup事件中触发同批次请求,使用$$patchWithoutSideEffects避免重复刷新,并在草稿场景优化响应体。注解定义触发规则,而前端负责执行时机,二者配合可减少网络开销并保证数据一致性。Fiori elements进一步扩展了Side Effects在批

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 177

HDU 5299 Circles Game(树的删边游戏)

2015 Multi-University Training Contest 1 HDU 5299 Circles Game(树的删边游戏)

追梦赤子心 1385

Autosar CAN 网络管理测试用例(3)——Repeat Message Timer 时间测试

Autosar CAN 网络管理测试用例(3)——Repeat Message Timer 时间测试

蚂蚁小兵 2461

【HDU5299】Circles Game,圆的扫描线+树上删边游戏

.

xiaoyimi的博客 676

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【北京集训测试赛(五)/HDU5299】圆圈游戏(Circles game)-树上删边-圆的扫描线

Problem遗产 题目大意 一个平面上n个圆,任两个圆只会相离或包含,给出每个圆位置与半径。 alice&&bob轮流取圆,每取一个就可以取出这个圆以及被这个圆包含的圆。 没圆取的人输,alice先取,问谁有必胜策略。 Solution Method #1 首先我们考虑一个暴力一点的写法: 先将圆半径从小到大排序,然后枚举两个圆,判断是否包含关系。 ...

dichengting7485的博客 187

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

HDU 5299 Circles Game

HDU 5299 思路: 圆扫描线+树上删边博弈 圆扫描线有以下四种情况,用set维护扫描线与圆的交点,重载小于号 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/stdc++.h> using namespace std; #...

weixin_34221773的博客 135

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

hdu5299 Circles Game

圆的扫描线+树上删边游戏

AaronPolaris 1788

HDU - 5299 Circles Game 题解

题意 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5299 给出n个不会相交不会相切的圆。Alice先手,和Bob进行博弈,每次操作可以选择一个圆,把这个圆和它所包含的圆给删掉,最后不能操作的人输。 思路 就是一个树上删边游戏,但是直接做复杂度O(n²)会TLE,所以需要圆的扫面线处理,把圆的关系转换成图,由大的圆连向它所包含的圆建边。 圆的扫描线...

JoneySun的博客 260

HDU 5299 L - Circles Game 树上删边博弈

HDU 5299 L - Circles Game 树上删边博弈 There are n circles on a infinitely large table.With every two circle, either one contains another or isolates from the other.They are never crossed nor tangent. Alice and Bob are playing a game concerning these circles.Th

Sothan 502

组合游戏(Circles Game,HDU 5299)

很容易想到这是一个组合游戏。每个子游戏都是一棵有根树上的游戏,最后的答案就是每个子游戏SG值的Nim和。 有根树上的游戏就是给你一颗有根树,每次操作可以随便选取一个节点,并把这个节点所在的子树都删掉,不能操作者输。 那怎么计算每棵树的SG值呢?一开始尝试用经典的递推法去求,但是发现树的结构种类太多,不可能穷举,每种结构的后续状态也非常多,也不可能用每个后续节点来转移,而且记录树的信息很多,没有

xl2015190026的博客 1072

【SG博弈】HDU 5299 Circles Game

通道:http://acm.hdu.edu.cn/showproblem.php?pid=5299 题意:n个不相交相切的圆,每次操作删圆及其内部的圆,不能删者败。 思路:建边,然后树上SG即可。 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <set> ...

154

hdu 5299——Circles Game

题意:给定n个嵌套的圆,每次可以删除圆以及该圆包含的所有圆,不能删除者输。思路:把每个圆看成一个点,把圆的包含关系看成一条单向边,那么就化成了一棵树。 然后就是裸的树上删边游戏模型了。 对于树上删边游戏: 1. 叶子节点的sg为0 2. 中间节点的sg为所有儿子节点的sg+1的异或和实际上该题目为树上删边游戏的变形。#include <bits/stdc++.h> using namespa

坚持不懈 440

【HDU】5299Circles Game -扫描线+树上删边博弈

套路扫描线+删边博弈

远行客 319

hdu 5299 Circles Game 2015 Multi-University Training Contest 1

这一题开始以为是取石子游戏的Nim和,后来发现有一种case不满足,比如圆A包含B和C,但B和C在A内是相离的,玩家就无法仅删除两个圆,所以和任意取石子的Nim和就不一样了。 圆之间的包含关系可以转化成一个树,如果A包含B,则B是A的子节点。根节点是一个无穷大的圆。先按照半径从大到小排序,可以保证后添加的圆只会被之前的圆包含或者和之前的圆分离。这里用DFS建树复杂度应该是N^2,但不造为何也过了

TimeForMiracles 612

[多校2015.01.1012 博弈] hdu 5299 Circles Game

题意: 在无限大的平面内给你n个圆,两个圆之间只可能是包含或者相离 A和B每次选择一个圆,删除这个圆连通它所包含的所有圆 谁不能选择圆删除了,谁就输了 思路: 所有圆可以构造成一棵树,然后按树上SG博弈来做就好了。 树的删边游戏 规则如下:     给出一个有 N 个点的树,有一个点作为树的根节点。     游戏者轮流从树中删去边,删去一条边后,不与根节点相连的部分将被移走。

Enmity_Dark 826

HDU 5299 Circles Game

平均情况O(nlogn)O(nlogn)的建树,但是在最坏情况下可以退化成O(n2)O(n^2) 下面是题解的建图方式,最后的博弈用树上SG就行 // whn6325689 // Mr.Phoebe // http://blog.youkuaiyun.com/u013007900 #include <algorithm> #include <iostream> #inc

Mr.Phoebe的专栏 710
上一篇: hdu 5289(二分+RMQ) Assignment
下一篇: hdu 5305(爆搜+二染色) Friends
Notdeep__acm
博客等级 码龄12年 20粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值