zoukankan      html  css  js  c++  java
  • CF1451D Solution

    题目链接

    题解

    博弈论问题。必胜状态(对于先手的),也就是所有一步可以到达的点中至少有一个为必败的点;而必败点则是所有一步可达的点全部为必胜的点。

    因为必败点上面或右面的店一定是必胜点,所以必败点与必胜点不在一条对角线上,也就是说一条对角线上的点都是必败点或必胜点。所以只需检查过原点的对角线最靠近圆周的一点是必败点还是必胜点即可。

    AC代码

    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    signed main()
    {
    	int t,d,k;
    	scanf("%lld",&t);
    	while(t--)
    	{
    		scanf("%lld%lld",&d,&k); int i;
            //寻找原点所在对角线上最靠近圆周的一点
    		for(i=k;2*i*i<=d*d;i+=k); i-=k;
            //判断此点下一步是否出界,也就是此点为必败点还是必胜点
    		if(i*i+(i+k)*(i+k)>d*d) printf("Utkarsh
    ");
    		else printf("Ashish
    ");
    	}
    	return 0;
    }
    
  • 相关阅读:
    docker运行springboot应用
    docer运行node
    Git添加仓库
    安装docker-compose
    centos安装docker
    Centos设置软件源
    ubuntu安装docker
    ubuntu安装阿里云镜像地址
    docker加速器配置
    配置Spring发送邮件
  • 原文地址:https://www.cnblogs.com/violetholmes/p/14220561.html
Copyright © 2011-2022 走看看