- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
浅浅复习 (我想说,国家队论文yyds😍) 之前学的一点博弈论的皮毛,然后又上某谷练习了一下 (切了几个水题,感觉全靠直觉/_ \) ,我觉得我可以进一步学习博弈论的知识了(双击助力蒟蒻助力Alice薄纱Bob🌹) 。
给出一个有 N个点的树,有一个点作为树的根节点。游戏者轮流从树中删去边,删去一条边后,不与根节点相连的部分将被移走。谁无法移动谁输.
叶子节点的SG值为0;中间节点的SG值为它所有子节点的SG值加1后的异或和 。
当树枝在一个顶点上时,用一个非树枝的杆的长度来替代,相当于他们的n异或之和 。
Flynn and oooccc1 are playing game some day. The game is played on a rooted graph which is an undirected graph with every edge attached by some path to a special vertex called the root or the ground. The ground is denoted in the figure that follows by a dotted line. You could see it from the figure. On each step, one player could chop out one edge, and removing that edge and anything not connected to the ground. The one who have nothing to chop with fails. Flynn is the one who is going to move. Help him by telling him if it is possible to win by carefully choose the edge to chop with. 。
There are a few cases. Process to the end of file Each case starts with N (1 <= N <= 1000) stand for the number of points. The next line give N numbers, the i-th (i = 0 … N-1) of which represents its father nodes. The root nodes was the one with value -1. 。
Print “YES” if could win if play optimally, and “NO” otherwise. 。
8 -1 1 2 2 -1 5 6 6 。
NO 。
ZSTU 。
#include <bits/stdc++.h>
#define int long long
const int N = 1e3 + 5;
std::vector<int> u[N];
int dfs(int v,int fa){
int result = 0;
for(auto son:u[v]){
if(son == fa) continue;
result = result ^ (dfs(son,v) + 1);
}
return result;
}
signed main(){
std::ios::sync_with_stdio(0);
std::cin.tie(0);std::cout.tie(0);
int n,sum = 0;
while (std::cin>>n){
for(int i = 0;i <= n;i ++){
u[i].clear();
}
std::vector<int> root;
for(int i = 0;i < n;i ++){
int t;
std::cin>>t;
if(t == -1){//根节点
root.push_back(i);
}else{
u[t].push_back(i);
}
}
sum = 0;
for(auto i:root){
sum = sum ^ dfs(i,-1);
}
if(sum) std::cout<<"YES\n";
else std::cout<<"NO\n";
}
}
就是根据定理来算出每棵树根节点的SG值,再通过局势加(XOR),判断局势。还是比较好理解的,我就不过多描述了😊 绝对不是因为懒 。
通过上面的讨论 (对神犇blog的借鉴和学习(~ ̄(OO) ̄)ブ) ,我们现在已经知道如何将一个树上删边游戏转化为nim游戏。 众所周知 树是连通无回路的无向图,那我们不妨将题目的条件修改一下 。
给定一个无向连通图,有一个点作为图的根。两人轮流操作,每人每次可以从图中选择一条边删去,不与根节点相连的部分将被移走。无法操作者输.
(环上的点可以融合,且不改变图的SG值。) 一般来说,我们可以把一个带有奇数边的环等价成一个端点和一条边,而偶数边的环等价于一个点.
Harry and Sally were playing games at Christmas Eve. They drew some Christmas trees on a paper
Then they took turns to cut a branch of a tree, and removed the part of the tree which had already not connected with the root. A step shows as follows
Sally always moved first. Who removed the last part of the trees would win the game. 。
After a while, they all figured out the best strategy and thought the game was too simple for them. Harry said, “The Christmas trees should have some gifts in them!” So Sally drew some gifts (simple polygons) in the initial trees
You may assume the initial picture is a tree with some simple polygons, in which each edge is involved in at most one polygon. We also know that every polygon has only one node involved in the main tree (the hanging point of the giftJ) .In every sub-tree (connected subgraph), there was one and only one node representing the “root”. According to these assumptions, following graphs will never appear
Sally and Harry took turns (Sally was always the first person to move), to cut an edge in the graph, and removed the part of the tree that no longer connected to the root. The person who cannot make a move lost the game. 。
Your job is to decide who will finally win the game if both of them use the best strategy. 。
The input file contains multiply test cases. The first line of each test case is an integer N (N<100), which represents the number of sub-trees. The following lines show the structure of the trees. The first line of the description of a tree is the number of the nodes m (m<100) and the number of the edges k (k<500). The nodes of a tree are numbered from 1 to m. Each of following lines contains 2 integers a and b representing an edge <a, b>. Node 1 is always the root. 。
For each test case, output the name of the winner. 。
2 2 1 1 2 4 4 1 2 2 3 2 4 3 4 。
Sally 。
蒟蒻还不会缩点QAQ,先放着,后面再填坑 。
用到的两个公理没有给出证明,绝对 不 是因为我不会,这里给出我看到的引用在我这篇随笔并且质量比较高的资料的链接或者名称(文档放不了链接啊QAQ) 。
注:我建议按顺序阅读,神犇随意 这个感觉是神犇学习之后,总结的精华 https://blog.csdn.net/wu_tongtong/article/details/79311284 这个是神犇的参考资料(也是本蒟蒻的参考资料) https://wenku.baidu.com/view/379e8baaa58da0116d174924.html? wkts =1690806601160 这个是《Game Theory》的部分译文 https://blog.sina.com.cn/s/blog_8f06da990101252l.html 最后是一篇论文 《组合游戏略述——浅谈 SG 游戏的若干拓展及变形》 石家庄二中 贾志豪 。
最后插个题外话,虽然但是,这个博主真的超级宝藏!!!!总结了IOI国家集训队的部分论文集,还有超多高质量的blog,狠狠泪目😭 。
https://blog.csdn.net/weixin_45697774/article/details/104837003?spm=1001.2014.3001.5506 。
最后此篇关于学不会的博弈论——进阶篇的文章就讲到这里了,如果你想了解更多关于学不会的博弈论——进阶篇的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
MySQL表的增删改查(进阶) 1. 数据库约束 约束类型 说明 示例 NULL约束 使用NOT NULL指定列不为空 name varchar(20) not null, UNIQUE唯一约束 指定
多线程(进阶) 1. 常见的锁策略 1.1 乐观锁 悲观锁 乐观锁 : 总是假设最好的情况,每次去拿数据的时候都认为别人不会修改数据,但是在对数据提交更新的时候,再去判断这个数据在这个期间是否有别人对
我相信在正确编码的系统中-错误(作为错误或异常)应该是不可能的(DB/memcached服务器故障导致查询失败)。我们的代码不应依赖任何假设才能正常工作,并且应尽可能地证明其正确性。 但是,为了确保我
1. 前言 泛型代码让你能根据你所定义的要求写出可以用于任何类型的灵活的、可复用的函数。你可以编写出可复用、意图表达清晰、抽象的代码。 泛型是 Swift 最强大
一、创建质量配置及关联项目 1.新建一个java代码质量配置 2.为配置添加规则 确认有4条规则了 为项目更换扫描配置 二、创建质量阈关联项目 1.
完整jenkinsfile 、sharelibrary 及jenkins配置见最后 一、gitlab push分支自动匹配 1.添加Generic Webhook插件参数,获取本次提交的分支信息
1.gitlab创建新应用 2.jenkins安装gitlab插件 3.插件安装完成后全局安全配置中使用并配置gitlab认证 4.注销重新登录后自动使用gitlab当前登录
一、部署jenkins master 1.创建Deployment YAML文件 apiVersion: apps/v1 kind: Deployment metadata: name: je
一、docker安装nexus wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum clean all
一、新建library文件 build.groovy package org.devops // 构建类型 def Build(buildType,buildShell){
一、制品获取 1.安装及配置插件 配置插件(jenkins项目中) 2.选择对应的制品 3.修改jenkins file // 新增以下代码 String artifactU
1.github创建OAuth 2.jenkins安装并配置github认证插件 jenkins配置使用github认证 3.注销重新登录
一、添加测试Maven项目 1.新建一个gitlab项目 2.导入simple-java-maven-app仓库代码(可以去github或者Gittree上都有) 3.配置mvn 国内源
一、添加AnsiColor插件 二、查看插件语法 1.打开任意pipline项目配置,找到流水线语法,并点击 跳转连接,选择插件,查看帮助 三、修改sharelibrary脚本,优
一、Pipeline概念 1 node/agent(节点) 节点是一个机器,可以是Jenkins的master节点也可以是slave节点。通过node指定当前job运行的机器(这个是脚本式语法)。
一、插件备份和恢复 1.安装备份插件 重启系统后查看 2.配置周期备份 点击进入,点击Settings Backup only builds marked to keep
一、.部署LDAP 这里使用容器部署,手动部署参考:https://www.cnblogs.com/panwenbin-logs/p/16101045.html 1.安装docker wget -
由于sonarqube开源版本不支持多分支管理,在扫描所有分支的时候都会指定同一个sonar项目,不便于我们查看 一、下载开源插件 项目地址:https://github.com/mc1arke/
一、手动测试 注意此版本已经内置包含Java语言扫描插件,不再需要单独安装 1.clone代码 git clone git@192.168.1.128:root/demo-maven-serv
我有下一种情况。 从 PHP 表单中我只获得公司 ID 我需要使用该公司 ID 排列所有用户名 我需要数组并将具有该用户名的所有日志导出到表 我的问题是,当我尝试下一步时: $sql2 = "SELE
我是一名优秀的程序员,十分优秀!