srm 534

srm 534

大家好,又见面了,我是全栈君。

250


Description

给你一个1*n的棋盘。两人轮流行动,每一个人能够把”o”向右移动到空格子。或者跨越连续两个”o”到空格子。

一个”o”到最右端的时候消失。问谁获胜。

Solution

一个比較有趣的题,我们考虑每一个”o”到最右端的距离。两种行动事实上都是改变距离的奇偶,所以事实上仅仅须要考虑终于状态和距离和的奇偶性就可以。

Code

#include <bits/stdc++.h>
using namespace std;
const int N = 20;
int d[(1 << N) + 10];
class EllysCheckers {
    public:
    string getWinner(string board) {
        int n = board.size();
        int t = 0;
        for (int i = 0; i < n; ++i) {
            if (board[i] == 'o')    t += n - i - 1;
        }
        return t & 1 ? "YES" : "NO";
    }
};

500


Description:

求把一个

n(n1018)
数分解成几个给定的数组中的几个数的乘积形式的方案数,要求从给定数组中选出的数要两两互质。

Solution

非常easy反应到,因为

2×3×...×43>1018
,所以事实上

n
会被分解成不超过15个质数,且每一个质数相应的数组中的数仅仅有一个。就能够状压dp了。
也能够直接用map来dp,能够证明,状态数不会太多。

Code:

#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define F first
#define S second
typedef long long LL;
typedef pair<int, int> pii;
int p[20];
const int N = 505;
LL a[N];
vector<int> b;
map<LL, LL> dp;
map<LL, LL>:: iterator it;
class EllysNumbers {
    public:
        long long getSubsets(long long n, vector <string> special) {
            string s = accumulate(special.begin(), special.end(), string());
            istringstream ss(s);
            int m = 0, x;
            while (ss >> x) a[m++] = x;
            for (int i = 0; i < m; ++i)
                if (__gcd(a[i], n / a[i]) == 1) b.pb(a[i]);
            dp[n] = 1;
            for (int i = 0; i < b.size(); ++i)
                for (it = dp.begin(); it != dp.end(); it++)
                    if (it -> F % b[i] == 0) {
                        dp[it -> F / b[i]] += it -> S;
                    }
            return dp[1];
        }
};

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116012.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • net start命令发生系统错误5和错误1058的解决方法

    net start命令发生系统错误5和错误1058的解决方法文章来源:1.netstart命令netstart命令用于开启服务,格式为:netstart[服务名]2.打开SqlServer的默认实例服务[Win+R]快捷键—>cmd—>netstartmssqlserver提示错误“发生系统错误5”,截图如下:3.错误分析发生这个错误的原因是win7/win8命令提示符管理员和非管理员权限有区别,需要

    2022年7月26日
    1
  • mysql error 1227 42000_mysql导入报错

    mysql error 1227 42000_mysql导入报错今天在学习mysql的时候,一顿蜜汁操作,再次使用mysql的时候发现,不管用啥子命令,都出现了一个报错mysql&amp;gt;selectuser,passwordfrommysql.user;ERROR1142(42000):SELECTcommanddeniedtouser‘root’@‘localhost’fortable‘user’看了一下报错信息,权限不够…

    2022年10月1日
    0
  • 逻辑漏洞之越权、支付漏洞「建议收藏」

    逻辑漏洞之越权、支付漏洞「建议收藏」目录逻辑漏洞Web安全渗透三大核心方向输入输出登录体系、权限认证业务逻辑漏洞分类1、登录体系安全暴力破解cookie安全加密测试登录验证绕过任意注册2、业务一致性安全手机号篡改邮箱和用户名更改订单ID更改商品编号更改用户ID篡改流程顺序3、业务数据篡改金额数据篡改商品数量篡改最大数限制突破金额&优惠组合修改4、密码找回漏洞分析数据包,定位敏感信息分析找回机制修改数据包验证任意密码找回5、验证码突破暴力破解时间、次数突破回显测试验证码绕过测试验证检验机制猜解6、会话权限安全未授权访问水平&垂直

    2022年6月14日
    37
  • 点击导航栏,切换div内容(js+css+html)[通俗易懂]

    点击导航栏,切换div内容(js+css+html)[通俗易懂]**成果展示**代码展示:* &lt;html&gt; &lt;head&gt; &lt;metacharset="utf-8"&gt; &lt;metahttp-equiv="X-UA-Compatible"content="IE=edge"&gt; &lt;title&gt;&lt;/tit

    2022年5月8日
    404
  • vue(21)初识Vuex[通俗易懂]

    vue(21)初识Vuex[通俗易懂]Vuex是做什么的?官方解释:Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex

    2022年7月30日
    5
  • 用EasyBoot轻松做启动光盘

    用EasyBoot轻松做启动光盘原文转自:电脑技术资料园BrianLiu学习之园原版系统安装盘的缺憾——不管是Windows98还是WindowsNT/2000/XP,仅能实现单一系统的初始安装,缺少调试维护、系统恢复、DOS杀毒等工具。虽然市面上出现了N合1光盘,但一般体积庞大,且无法满足自己的需要。  用EasyBoot刻盘正好可以解决这个问题。EasyBoot是一款集成…

    2022年7月26日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号