博弈,$SG$函数,规律,线段树。

这个问题套路很明显,先找求出$SG$函数值是多少,然后异或起来,如果是$0$就后手赢,否则先手赢。修改操作和区间查询的话可以用线段树维护一下区间异或和。

数据那么大,一看就知道$SG$有规律......

先写个小数据的$SG$找规律:

bool f[200];
int sg[200];int SG(int x)
{memset(f,0,sizeof f);for(int i=x-1;i>=x/2;i--){if(x-i>i) break;f[sg[i]]=1;}for(int i=0;i<=100;i++){if(f[i]==1) continue;return i;}
}

View Code

会发现是这样的东西:

LL SG(LL x)
{if(x%2==0) return x/2;return SG(x/2);
}

View Code

注意:$FZU$上$\% lld$会出问题,我用Visual C++交才过的。

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<iostream>
using namespace std;
typedef long long LL;
const double pi=acos(-1.0),eps=1e-8;
void File()
{freopen("D:\\in.txt","r",stdin);freopen("D:\\out.txt","w",stdout);
}
template <class T>
inline void read(T &x)
{char c = getchar(); x = 0;while(!isdigit(c)) c = getchar();while(isdigit(c)) { x = x * 10 + c - '0'; c = getchar();  }
}LL SG(LL x)
{if(x%2==0) return x/2;return SG(x/2);
}const int maxn=100010;
int n,m;
LL s[4*maxn];void build(int l,int r,int rt)
{s[rt]=0;if(l==r){scanf("%lld",&s[rt]);s[rt]=SG(s[rt]);return;}int m=(l+r)/2;build(l,m,2*rt);build(m+1,r,2*rt+1);s[rt]=s[2*rt]^s[2*rt+1];
}void update(int p,LL v,int l,int r,int rt)
{if(l==r) { s[rt]=v; return;}int m=(l+r)/2;if(p<=m) update(p,v,l,m,2*rt);else update(p,v,m+1,r,2*rt+1);s[rt]=s[2*rt]^s[2*rt+1];
}LL get(int L,int R,int l,int r,int rt)
{if(L<=l&&r<=R) return s[rt];int m=(l+r)/2;LL x1=0,x2=0;if(L<=m) x1=get(L,R,l,m,2*rt);if(R>m) x2=get(L,R,m+1,r,2*rt+1);return x1^x2;
}int main()
{while(~scanf("%d%d",&n,&m)){build(1,n,1);for(int i=1;i<=m;i++){int p,L,R; LL x;scanf("%d%lld%d%d",&p,&x,&L,&R);x=SG(x); update(p,x,1,n,1);LL y=get(L,R,1,n,1);if(y) printf("daxia\n");else printf("suneast\n");}}return 0;
}

转载于:https://www.cnblogs.com/zufezzt/p/5824607.html

FZU 2240 Daxia Suneast's problem相关推荐

  1. FZU Problem 2240 Daxia Suneast's problem(博弈+[单点更新,区间查询]线段树)

    此文章可以使用目录功能哟↑(点击上方[+])  FZU Problem 2240 Daxia & Suneast's problem Accept: 0    Submit: 0 Time L ...

  2. fzu 2238 Daxia Wzc's problem

    Problem 2238 Daxia & Wzc's problem Accept: 38    Submit: 136 Time Limit: 1000 mSec    Memory Lim ...

  3. FZU 2238 - Daxia Wzc's problem(Lucas)

    Problem 2238 Daxia & Wzc's problem Accept: 42    Submit: 166 Time Limit: 1000 mSec    Memory Lim ...

  4. FZU 2238 Daxia Wzc's problem

    Daxia在2016年5月期间去瑞士度蜜月,顺便拜访了Wzc,Wzc给他出了一个问题: Wzc给Daxia等差数列A(0),告诉Daxia首项a和公差d; 首先让Daxia求出数列A(0)前n项和,得 ...

  5. FZU 2238 Daxia Wzc's problem【规律+lucas】

    Daxia在2016年5月期间去瑞士度蜜月,顺便拜访了Wzc,Wzc给他出了一个问题: Wzc给Daxia等差数列A(0),告诉Daxia首项a和公差d; 首先让Daxia求出数列A(0)前n项和,得 ...

  6. FZU 2239 Daxia Yayamao's problem 斜率优化

    题目链接点这里 我们先把a从小到大排序,询问x从小到大排序 我们可以发现,对于某对 ai和a(i+1)..如果我们有xi,此时取a(i+1)可以使xi的函数值最大的话,那么对于任意大于xi的x,取a( ...

  7. FZU Problem 2238 Daxia Wzc's problem(Lucas定理求组合数)

    此文章可以使用目录功能哟↑(点击上方[+])  FZU Problem 2238 Daxia & Wzc's problem Accept: 0    Submit: 0 Time Limit ...

  8. FZU-2239 Daxia Yayamao's problem(斜率优化)

    Daxia & Yayamao's problem FZU - 2239 题解:f(x)=A*x+B 如果j>k,Aj>Ak,Aj*x+Bj>=Ak*x+Bk,则(Bj-Bk ...

  9. FZU Problem 2238 Daxia Wzc's problem

    Daxia在2016年5月期间去瑞士度蜜月,顺便拜访了Wzc,Wzc给他出了一个问题: Wzc给Daxia等差数列A(0),告诉Daxia首项a和公差d; 首先让Daxia求出数列A(0)前n项和,得 ...

最新文章

  1. SD卡读写扇区注意事项(转)
  2. 【洛谷 - 快来签到】(数学,公式,溢出爆longlong的处理)
  3. SpringMVC 中设置日期字符串转换格式
  4. QT 网络编程(1)
  5. phpcmsV9 邮箱配置(含图文教程) - 案例篇
  6. ajax跨越html,ajax跨域的解决方案
  7. python中如何导入数据包_如何在python中发送数据包?
  8. Win10彻底关闭Antimalware Service Executable占用内存过高问题
  9. redis实战之事务与持久化
  10. Python基本语法(快速入门)
  11. 沙盘erp模拟人机对抗如何将公司经营6年
  12. Ubuntu20.04下载安装CMake
  13. 年会将近,如何用Excel做个抽奖界面?
  14. java 保存微信表情_【java】【mysql】存储微信表情emoji表情
  15. 2021世界人工智能大会(WAIC2021):深思考人工智能获颁工信部人工智能产业创新“揭榜优胜单位”!
  16. pytorch——weights_init(m)
  17. web前端面试题之魂(js)
  18. 一键式统计6.0通透
  19. html5 canvas创建弹性碰撞动画
  20. CAE(Convolutional Auto-Encode) 卷积自编码

热门文章

  1. 经典问题(20)天平与砝码问题
  2. 如何用用Shader展现物体被遮挡时的渲染效果
  3. 电脑如何查看ip地址和路由器网关? 查看网关ip地址的方法
  4. 计算机的ip能与网关一样,网关和ip地址一样吗
  5. 2021-08-30王道 数据结构 第5章 树与二叉树 p185 第10题
  6. Springboot 循环依赖
  7. C++的cin.get()
  8. Query parameters 查询参数
  9. matlab弧度转角度函数
  10. 500粉丝,播放却超800w,B站这些被“埋没”的UP主做对了什么?