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为还需要的蜡烛数, ...
随机推荐
- c程序设计语言 by K&R(三)结构
一.类型定义 typedef typedef int Length; typedef char* String; typedef struct tnode* Treeptr; typedef int ...
- Redis入门 - C#|.NET Core封装Nuget包
经过前面章节的学习,可以说大家已经算Redis开发入门了.已经可以去到项目上磨砺了. 但是今天我还想和大家分享一章:封装自己的Redis C#库,然后打包成Nuget包. 首先要说明的是:不是要自己开 ...
- Java中使用BigDecimal进行double类型的计算(高精度,可保留几位小数)
Java中 小数直接进行乘除运算,会出现精度问题导致计算结果有误需要使用 BigDecimal 类型辅助运算,保证精度无误源码: import java.math.BigDecimal;import ...
- MyBatis——案例——删除(单个删除与批量删除)
删除一个 1.编写接口方法:Mapper接口 参数:id 结果:void /** * 删除 */ int deleteById(int id); 2.编写sql语句:SQL映射 ...
- .NET 7+Angular 4 轻量级新零售进销存系统
前言 给大家推荐一个专为新零售快消行业打造了一套高效的进销存管理系统. 系统不仅具备强大的库存管理功能,还集成了高性能的轻量级 POS 解决方案,确保页面加载速度极快,提供良好的用户体验. 项目介绍 ...
- 解密prompt系列39. RAG之借助LLM优化精排环节
RAG的部分我们之前讨论过信息召回的多样性,信息密度和质量,主要集中在召回,融合,粗排的部分.这一章我们集中看下精排的部分.粗排和精排的主要差异其实在于效率和效果的balance.粗排模型复杂度更低, ...
- js自动调用 click 事件
// 进入页面立即触发 (()=>{ // 兼容IE if(document.all) { document.getElementById("aid").click(); } ...
- day04-常用DOS命令
打开cmd的方式 开始-W-windows系统-命令提示符 win键+R键 鼠标在任意文件夹上, shift+鼠标右键 资源管理器的地址栏前面加cmd,然后回车 管理员方式运行:选择命令提示符右键以管 ...
- 国产东方通消息队列TongLINKQ8.1服务端安装步骤
一.服务端安装 groupadd tlq # 新建组 useradd -m -g tlq tlq # 新建tlq用户并指定组tlq cd /home/tlq/ # 切换到安装目录并上传安装包 tar ...
- js常用函数 _01 关于 model()、substr() 和 正则表达式的使用
js常用函数 _01 关于 model().substr() 和 正则表达式的使用 1.model() Bootstrap 模态框(Modal)插件 模态框(Modal)是覆盖在父窗体上的子窗体.通常 ...

