Codeforces Round 901 (Div
C. Jellyfish and Green Apple
题解
显然\(n \% m =0\),答案一定为\(0\)
如果\(n > m\),我们显然可以将\(n / m\)的苹果分给每个人,然后再处理$n % m $
如果\(n < m\),我们一定会将所有苹果一直对半切直到\(n > m\),所以答案每次对半切一定会加\(n\)
直到\(n \%m = 0\)的时候结束
那么什么情况下无解呢?
我们考虑每次对半切会使得\(n :=n * 2\),也就是说如果一个质因子\(p,p\neq 2\)在\(m\)中存在,但是在\(n\)中不存在,那么\(n\)不管怎么翻倍,永远不会出现\(n \%m = 0\)
那么这个该如何判断呢?
我们可以通过\(\frac{m}{gcd(n,m)}=2^i\)来判断
int n, m;
int lowbit(int x) { return x & -x; }
void solve()
{
    cin >> n >> m;
    if (n % m == 0)
    {
        cout << 0 << endl;
        return;
    }
    n = n % m;
    int r = m / gcd(n, m);
    if (r != lowbit(r))
    {
        cout << -1 << endl;
        return;
    }
    int ans = 0;
    while (true)
    {
        while (n * 2 < m)
        {
            ans += n;
            n <<= 1;
        }
        ans += n;
        n <<= 1;
        if (n % m == 0)
            break;
        n = n % m;
    }
    cout << ans << endl;
}
D. Jellyfish and Mex
\(1 \leq n \leq 5000\)
题解:\(DP\)
我们考虑\(dp\)
显然对于\(a_i > mex\)部分我们可以不用管
如果当前数组\(a\)的\(mex\)为\(g\),我们想使得\(x,x < g\)成为\(mex\),那么代价为\(g \times (cnt[x] - 1) + x\)
我们定义状态为:\(dp[i]\):代表通过删除操作使得\(mex = i\)的最小代价
转移方程为:
\[dp[mex] = 0 \\
dp[i] = min \sum_{j = i + 1}^{mex}(dp[j] + j \times (cnt[i] - 1) + i)
\]倒序遍历\(i\)即可
- 显然答案为\(dp[0]\)
int n, a[N];
// dp[i] 代表通过删除操作使得 mex = i 的最小代价
void solve()
{
    cin >> n;
    map<int, int> mp;
    for (int i = 1; i <= n; ++i)
    {
        cin >> a[i];
        mp[a[i]]++;
    }
    int mex = -1;
    for (int i = 0;; ++i)
        if (!mp.count(i))
        {
            mex = i;
            break;
        }
    vector<int> dp(mex + 10, INF);
    dp[mex] = 0;
    for (int i = mex - 1; i >= 0; --i)
        for (int j = i + 1; j <= mex; ++j)
            dp[i] = min(dp[i], dp[j] + j * (mp[i] - 1) + i);
    cout << dp[0] << endl;
}
Codeforces Round 901 (Div的更多相关文章
- Codeforces Round #366 (Div. 2) ABC
		Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ... 
- Codeforces Round #354 (Div. 2) ABCD
		Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ... 
- Codeforces Round #368 (Div. 2)
		直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ... 
- cf之路,1,Codeforces Round #345 (Div. 2)
		cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ... 
- Codeforces Round #279 (Div. 2) ABCDE
		Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ... 
- Codeforces Round #262 (Div. 2) 1003
		Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ... 
- Codeforces Round #262 (Div. 2) 1004
		Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ... 
- Codeforces Round #371 (Div. 1)
		A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ... 
- Codeforces Round #268 (Div. 2) ABCD
		CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ... 
- 贪心+模拟 Codeforces Round #288 (Div. 2) C. Anya and Ghosts
		题目传送门 /* 贪心 + 模拟:首先,如果蜡烛的燃烧时间小于最少需要点燃的蜡烛数一定是-1(蜡烛是1秒点一支), num[g[i]]记录每个鬼访问时已点燃的蜡烛数,若不够,tmp为还需要的蜡烛数, ... 
随机推荐
- 技术储备--SPI接口硬件协议栈芯片W5500使用
			整体思路: 移植官方软件包代码, 配置好底层的SPI收发函数以及片选脚操作, 至于临界区操作函数,根据实际情况进行添加,也可以不加. 这就移植好了,就可以在我们自己的板子上跑官方的示例程序了. 官方软 ... 
- Dos常用命令 - Dir
			Dos命令,用于扫描当前目录创建目录清单 dir /s /b /ad >> "目录清单.txt" 解释: 将 dir /s /b /ad 生成的目录 追加写入目录清单. ... 
- ModbusTCP通信协议分析
			前言 大家好!我是付工.前面给大家介绍了一系列关于RS485与Modbus的知识. 终于有人把RS485说清楚了 终于有人把Modbus说明白了 通透!终于把ModbusRTU弄明白了 今天跟大家聊聊 ... 
- 树莓派2 CentOS7.9 安装配置笔记
			1. 镜像下载与安装 http://isoredirect.centos.org/altarch/7/isos/armhfp/找到https://mirrors.tuna.tsinghua.edu.c ... 
- USB编码方式(NRZI)及时钟同步方式
			1.概述 在同步通讯系统中,两个设备通讯则需要同步信号,同步信号分为时钟同步信号和自同步信号两种,时钟同步方式在通讯链路上具有时钟信号(IIC.SPI),自同步方式在通讯链路中没有同步信号(PCIE. ... 
- efcode相关操作
			1. 下载 tool dotnet tool install -g dotnet-ef 2. 第一次迁移日志 dotnet ef migrations add init1 3. 更新数据库 datne ... 
- 46.使用过vuex和vue-router吗
			使用过,vuex是状态管理工具,它的数据可以被所有的组件获取,方法可以被所有的组件调用 : vuex 的内部的运行机制:state提供了数据驱动视图,dispath派发actions 执行异步操作, ... 
- Linux中ln 链接命令的用法
			ln的语法 Usage: ln [OPTION]... [-T] TARGET LINK_NAME (1st form) or: ln [OPTION]... TARGET (2nd form) or ... 
- KubeSphere 社区双周报| 2024.08.30-09.12
			KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ... 
- 游戏引擎数学库 Plane
			0 前言 平面的表达方式有很多,常用的就两种.向量形式的点法式,标量形式的平面方程.两者可以互相转化. \[(\mathbf{p}-\mathbf{p_0})\cdot\mathbf{n}=0 \] ... 
 
			
		
