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

网站建设的收费标准wordpress 家装装修模板下载

网站建设的收费标准,wordpress 家装装修模板下载,南通专业网站排名推广,网页设计与网站建设报告书最近在做博弈题单,遇到了这两个nim问题。 [SDOI2019] 移动金币 被成为阶梯nim,也就是一个 n n n堆石子在不同的阶梯上面,每次操作可以选择一堆中若干个石子合并到低一级的阶梯(如果移动到地面就不能再移动)&#xff0…

最近在做博弈题单,遇到了这两个nim问题。

[SDOI2019] 移动金币 被成为阶梯nim,也就是一个 n n n堆石子在不同的阶梯上面,每次操作可以选择一堆中若干个石子合并到低一级的阶梯(如果移动到地面就不能再移动),不能操作者失败。

这个问题我大概思考了一天就解决了,容易发现n=2时必败态为第一级阶梯为0,因为这样先手移动任何石子下来后手都能移到地面。把n拓展到更大,就会发现偶数级阶梯(现在假设地面为第0级阶梯)的石子时没有意义的,因为如果把偶数的石子移到奇数的石子能形成更好的局面,那么后手就能把这些石子再往移动一级,可以依次从第二级,第四级往下递推思考。

也就是说只用考虑奇数级阶梯的石子,又因为把石子移到偶数级的阶梯以后没有意义,那么就变成了在偶数级阶梯进行经典的nim操作,因此必败态就是所有偶数级阶梯的异或和。

[SDOI2019] 移动金币 被称为k-nim也就是每次可以取不超过k堆的石子。我花了大概一周才解决,感觉非常让人抓狂,最后是在操场上散步突然想到结论的。这个结论现在还没有想好怎么证明,后续补上。

感觉这个问题打表比较困难,不过我想了一种直接打出必败态的方法。

#include <bits/stdc++.h>
#define ll long long
using namespace std;const int V = 8, N = 1e6 + 10;int n, m;
int a[15];
int cnt, b[N][15], f[N], g[N];int calc(int p1, int p2) {int ret = 0;for (int i = 1, j = 1; i <= n; i++) {while (j <= n && b[p1][i] > b[p2][j]) j++;if (j <= n && b[p1][i] == b[p2][j]) {ret++; j++;}}return n - ret;
}void dfs(int k, int last) {if (k == n + 1) {cnt++;g[cnt] = 0;for (int i = 1; i <= n; i++) {b[cnt][i] = a[i];g[cnt] ^= a[i];}f[cnt] = 2;for (int i = 1; i < cnt; i++) {if (f[i] == 1) continue;bool ok = 1;for (int j = 1; j <= n; j++) {if (b[i][j] > b[cnt][j]) {ok = 0; break;}}if (ok && calc(i, cnt) <= m) {f[cnt] = 1; break;}}if (f[cnt] == 1) {cnt--;}return;}for (int i = last; i <= V; i++) {a[k] = i;dfs(k + 1, i);}
}int main() {// freopen("out.out", "w", stdout);ios::sync_with_stdio(false);cin.tie(nullptr);cin >> n >> m;dfs(1, 0);for (int i = 1; i <= cnt; i++) {bool bk = 1;for (int ki = 10; ki >= 0; ki--) {int ret = 0;for (int j = 1; j <= n; j++) {if (b[i][j] >> ki & 1) {ret++;}}if (ret % (m + 1) != 0) {cout << "wa\n";}}if (f[i] == 2) {cout << f[i] << " " << g[i] << " : ";for (int j = 1; j <= n; j++) {cout << b[i][j] << " \n"[j == n];}}}cout << cnt << endl;
}

很早的时候我就想到了如果每一堆都是1,那么必败态就是n%(d+1)=0,说明结论还与n和d有关系(虽然应该和n没有关系,不过我当时就觉得它们有关系)。

然后想到一个比较奇怪的事情,以前学nim的时候我就一直十分不解为什么结论会和xor有关系(因为异或是一个二进制的操作),因为异或实际上是把每位相加再模二,然后就感觉可能会是模数变化(变成d+1)这样操作了肯定就不为全为0了,或者是进制变化(比如变成d+1进制之类的)。

而且前面打表的时候也发现必败态里面往往没有8的出现,所以更加肯定是模数改变。

验证了一下发现是正确的,然后就ac了。

http://www.dtcms.com/wzjs/617221.html

相关文章:

  • 青岛经纬建设工程有限公司网站ckplayer wordpress
  • 网站建设报价单模板下载企业oa系统哪个好
  • 西部数码的vps云主机如何访问网站保定企业网站建站模板
  • 网站关键词排名查询工具天元建设集团有限公司三层九中心
  • 河北中冶润丰建设股份有限公司网站台州做网站最好的
  • 网站建设中最有效网站推广方式管理咨询公司主要做什么
  • 织梦网站栏目设计网站运营开发托管
  • 网站开发具备知识有哪些人物设计网站
  • 一般网站字体大小室内装修效果大图
  • 做网站编辑器wordpress写文章打不开
  • 朔城网站制作郑州好的网站建设公司
  • 一般做网站带宽选择多大的杭州装饰网站建设方案
  • 网站开发后需要交接哪些材料电子工程院官网
  • 开网站供免费下载qq空间认证的网站后台根目录
  • 网站设计像素个人想做企业网站备案
  • 杭州 网站外包制作图片的软件加字
  • 做一静态网站 多少钱torrentkitty搜索引擎
  • 企业网站需要备案吗wordpress shopify
  • 网站建设合同前期需注意哪些问题seo推广排名公司
  • 乡镇网站建设内容规划关于百度网站的优缺点
  • 做网站公司在深圳可以建网站的路由器
  • 那些做黑网站的都是团体还是个人网上接单设计平台哪个好
  • 主机网站义乌上溪镇
  • 做热点图现在用什么网站网站设置一键登录怎么办
  • 响应式h5网站多少钱wordpress json 插件安装
  • 太湖云建站网站建设有哪些好的印花图案设计网站
  • 青岛网站维护公司普通电脑如何做网站服务器吗
  • 程序员能转行做网站维护不iis部署网站 红叉
  • 寺庙做网站wordpress调用上传图片
  • 特级a做爰网站在ps中网站界面应做多大