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];
        }
};

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 高并发情况下你还在用Random生成随机数?

    高并发情况下你还在用Random生成随机数?不是吧,阿sir

  • yum彻底卸载软件包(包含依赖)

    yum彻底卸载软件包(包含依赖)概述yum命令安装软件包会同时安装需要的依赖包,但yumremove却只卸载这个文件包本身,如果需要删除安装时附加的依赖包,则可以使用yumhistory的相关操作实现回滚。具体操作查看yum操作(事务)历史[root@localhost~]#yumhistorylist或yumhistoryLoading”fastestmirror”pluginConfigtime:0.007Yumversion:3.4.3ID|Loginuser

  • BigDecimal加减乘除运算

    BigDecimal加减乘除运算java.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:第一种:BigDecimal(doubleval)TranslatesadoubleintoaBigDecimal.第二种:BigDecimal(Stringval)TranslatestheStringrepresentationofaBig

  • IDEA 如何快速创建 Springboot 项目[通俗易懂]

    IDEA 如何快速创建 Springboot 项目[通俗易懂](1)打开IDEA,左上角选择:File->New->Project(2)首选选择弹窗左侧的SpringInitializr,然后选好择你的JDK,点击Next。(3)填写并选择:1,2处:是Maven工程的两个属性唯一标识,随意填。3处:类型选择Maven项目4处:语言选择Java5处:打包方式选择Jar6处:Java版本选择81-6处确定好后,选择Next。(4)左侧选择Web后,勾选SpringWe…

    2022年10月11日
  • electron调用go_opencv scalar

    electron调用go_opencv scalarglub一般都是很轻量的编译。go太重了,改一小个部分,就编译的话,多数是编译失败。而且很消耗性能,还没想到完美的优化办法。暂时用个定时器监听2秒,停止1秒,如此循环,会减少些“无效”的编译varwatch=require(‘glob-watcher’);varexec=require(‘child_process’).exec;varsys…

    2022年10月25日
  • 天翼云IP_天翼网关ip地址

    天翼云IP_天翼网关ip地址在很多应用场景中,需要在云平台中搭建高可用集群,就这需要用到虚拟IP地址功能。今天就来谈一谈虚拟IP地址及它的应用场景。一、高可用集群在谈虚拟IP地址前,我们先了解一下什么叫高可用集群。高可用集群(HighAvailabilityCluster),或者叫故障转移集群(FailoverCluster),它是指通过集群软件,将几台服务器组合为一个集群系统提供服务,这些服务器中同一时间内一般只有一台在提供服务(称之为主节点或者Master节点),其…

    2022年10月20日

发表回复

您的电子邮箱地址不会被公开。

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