当前位置: 首页 > news >正文

登封市建设局网站网页制作教程哔哩哔哩

登封市建设局网站,网页制作教程哔哩哔哩,wordpress设置阅读全文,运维工程师简历目录 1 基础知识2 模板3 工程化 1 基础知识 (一) Nim游戏: n n n堆物品,每堆有 a i a_i ai​个,两个玩家轮流取走任意一堆的任意个物品,但不能不取。取走最后一个物品的人获胜。 结论:如果这n…

目录

  • 1 基础知识
  • 2 模板
  • 3 工程化

1 基础知识

(一)
Nim游戏: n n n堆物品,每堆有 a i a_i ai个,两个玩家轮流取走任意一堆的任意个物品,但不能不取。取走最后一个物品的人获胜。

结论:如果这n个数异或之和为0,则先手必败,否则先手必胜。
代码表示为,

#include <iostream>using namespace std;int main() {int n;cin >> n;int res = 0;while (n--) {int x;cin >> x;res = res ^ x;}if (res) puts("Yes");else puts("No");return 0;
}

(二)
集合Nim游戏:在Nim游戏的基础上,对每次取走的石子做了限制,每次取走的石子数必须在集合 S S S内。判断是否先手必胜。

抽象建模为,
有向图游戏和SG函数:在一个有向无环图中,只有一个起点,上面有一个棋子,两个玩家轮流沿有向边推动棋子,不能走的玩家判负。

定义mex函数的值为,不属于集合S中的最小非负整数,即:
m e x ( S ) = m i n { x } ( x ∉ S , x ∈ N ) mex(S)=min\{x\} \ (x\notin S, x\in N) mex(S)=min{x} (x/S,xN)
例如mex({0,2,3}) = 1, mex({1,2}) = 0。

对于状态 x x x和它的所有 k k k个后继状态 y 1 , y 2 , ⋯ , y k y_1,y_2,\cdots,y_k y1,y2,,yk,定义SG函数:
S G ( x ) = m e x { S G ( y 1 ) , S G ( y 2 ) , ⋯ , S G ( y k ) } SG(x)=mex\{SG(y_1), SG(y_2), \cdots, SG(y_k)\} SG(x)=mex{SG(y1),SG(y2),,SG(yk)}

而对于由n个有向图组成的组合游戏,设它们的起点分别为 s 1 , s 2 , ⋯ , s n s_1,s_2,\cdots,s_n s1,s2,,sn,则有定理:当且仅当这 n n n个数 S G ( s 1 ) , S G ( s 2 ) , ⋯ , S G ( s n ) SG(s_1),SG(s_2),\cdots,SG(s_n) SG(s1),SG(s2),,SG(sn)的异或和不为0时,这个游戏是先手必胜的,否则,是先手必败的。

C++代码如下,

#include <iostream>
#include <unordered_set>
#include <cstring>using namespace std;const int N = 110, M = 1e4 +10;
int n, m;
int s[N]; //每次可以取的石子数目
int f[M]; //这堆有x个石子,求sg[x]的值int sg(int x) {if (f[x] != -1) return f[x];unordered_set<int> S;//x能走到的结点的sg函数值for (int i = 0; i < n; ++i) {if (x - s[i] >= 0) S.insert(sg(x-s[i]));}for (int i = 0; ; ++i) {if (S.count(i) == 0) {f[x] = i;break;}}return f[x];
}int main() {cin >> n;for (int i = 0; i < n; ++i) cin >> s[i];int res = 0;memset(f, -1, sizeof f);cin >> m;while (m--) {int x;cin >> x;res ^= sg(x);}if (res) puts("Yes");else puts("No");return 0;
}

2 模板

暂无。。。

3 工程化

题目1:拆分Nim游戏,取走一堆,放回两堆规模更小的石子。

解题思路:重点在于如何确认某一堆的sg值,这样考虑遍历两堆规模更小的石子,就是它的下一步状态,求得它们的sg值,进行mex操作,即可得到这堆石子的sg值。

C++代码如下,

#include <iostream>
#include <unordered_set>
#include <cstring>using namespace std;const int N = 110;int n;
int f[N]; //sg值int sg(int x) {if (f[x] != -1) return f[x];//x可以走到的状态的sg值unordered_set<int> S;for (int i = 0; i < x; ++i) {for (int j = 0; j <= i; ++j) {S.insert(sg(i) ^ sg(j));}}//mex操作for (int i = 0; ; ++i) {if (!S.count(i)) {return f[x] = i;}}
}int main() {memset(f, -1, sizeof f);cin >> n;int res = 0;for (int i = 0; i < n; ++i) {int x;cin >> x;res ^= sg(x);}if (res) puts("Yes");else puts("No");return 0;
}
http://www.yayakq.cn/news/370918/

相关文章:

  • 昆明最新消息今天百度seo怎么做
  • 成都网站建设公司官网临海商用高端网站设计新感觉建站
  • 响应式网站建设哪家好广东网站建设教程
  • 百度做网站教程提高网站关键词排名
  • 有关网站建设文章wordpress首页设置
  • 电子拜年贺卡在线制作网站新乡网站seo
  • 响应式网站模板免费如何设计一个简单的网页
  • 网站上的高清图怎么做本地部署iis部署网站
  • php网站建设设计方法深圳企业网站建设怎么做
  • 南京网站设计公司哪儿济南兴田德润怎么联系知名网站建设托管
  • 服装网站建设优点有哪些资料网站怎么做的
  • 网站集群建设是什么网站可以做图片
  • 长沙建站工作室出售已备案的域名合法吗
  • 公共图书馆门户网站建设总结二手商标网
  • 网站引导页面制作的四个任务名称wordpress更改后台路径
  • 网站登记备案 个人滨州建设局网站
  • 免费的网站给一个中国万网官网首页
  • 定制网站建设济南百度爱采购
  • 网络设计网站邮箱在线登录
  • 台州网站注册 公司wordpress子模板
  • 忻州建设厅官方网站wordpress资讯类主题破解版
  • 网站备案流程做的网站打开显示无标题
  • 深圳网站设计公司行业WordPress添加下载弹窗
  • 做可动模型的网站建设银行校招网站入口
  • 360网站收录提交入口wordpress怎么挣钱
  • 佛山模板建站定制网站wordpress 页面和文章
  • 网站建设 深圳学校网站建设行业现状
  • 高端网站建设 南京dw做旅游网站教程
  • 网站建设服务杭州电子商务专升本需要考些什么科目
  • 建设微网站平台百度搜索什么关键词能搜到网站