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)
上一篇 2022年1月27日 上午10:00
下一篇 2022年1月27日 上午11:00


相关推荐

  • Jmeter参数化实现永久递增

    Jmeter参数化实现永久递增介绍一下 Jmeter 永久递增的方法 相比 Jmeter 的函数 counter 简直完美到哭一 本机安装 mysql 数据库 或者直接用测试环境的测试库二 创建自动化数据库 CREATEDATABA 三 创建自增序列第一步 创建 Sequence 管理表 DROPTABLEIFE CREATETABL

    2026年3月18日
    2
  • 安装mininet详细步骤_Mininet安装

    安装mininet详细步骤_Mininet安装Mininet 安装根据 SDNLAB 上的实验进行安装 连接地址需要注意的是切换到用户目录下进行 clonegithub 上的源码 1 卸载之前安装的 Mininet 最好是先到目录下看是否有这些文件 再进行删除 sudorm rf usr local bin mnsudorm rf usr local bin mnexecsudorm rf usr local lib python

    2026年3月16日
    2
  • busybox 安装方法「建议收藏」

    busybox 安装方法「建议收藏」busyboxpro是一个集成了一百多个最常用linux命令和工具的软件,集成了一个http服务器和一个telnet服务器,Android系统中自带的toolbox工具(/system/bin)比较简单,对于一些命令如find等支持的不好,可以Android系统中加入busybox,就可以使用常见的Linux命令,同时通过busybox可以定制Android的根文件系统。  首先,先把手

    2022年7月25日
    21
  • thread count_ThreadPool

    thread count_ThreadPoolThreadPool类提供一个线程池,该线程池可用于发送工作项、处理异步I/O、代表其他线程等待以及处理计时器。许多应用程序创建的线程都要在休眠状态中消耗大量时间,以等待事件发生。其他线程可能进入休眠状态,只被定期唤醒以轮询更改或更新状态信息。线程池通过为应用程序提供一个由系统管理的辅助线程池使您可以更为有效地使用线程。一个线程监视排到线程池的若干个等待操作的状态。当一个等待操作

    2026年3月4日
    6
  • C++后端开发学习路线及推荐学习时间

    C++后端开发学习路线及推荐学习时间先说一下实习面试的结果吧 本人申请岗位为 C 后端开发 通过面试的公司有 CVTE 搜狐 字节跳动 然后腾讯明天三面 准备去字节了 不要问我为啥去字节 钱多福利好

    2026年3月18日
    3
  • Vuethink正确安装过程

    Vuethink正确安装过程

    2021年10月13日
    42

发表回复

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

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