「CF 1485A」Add and Divide

Link.

贪心。枚举 \([b,b+\log_{2}\text{range}]\) 然后取个 \(\min\)。

#include<cstdio>
#include<algorithm>
using namespace std;
int t,a,b,ans;
int search(int bas)
{
if(bas>1)
{
int tmp=a,res=0;
while(tmp>0)
{
tmp/=bas;
res++;
}
return res;
}
else return 1e9;
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&a,&b);
if(a==b) printf("%d\n",2);
else if(a<b) printf("%d\n",1);
else
{
ans=1e9;
for(int i=b;i<=b+233;++i) ans=min(ans,search(i)+i-b);
printf("%d\n",ans);
}
}
return 0;
}

「CF 1485B」Replace and Keep Sorted

Link.

每个元素都可以上下摇摆于是预处理前缀差分和和后缀差分和(因为是 strictly increasing 所以要减 \(1\))即可。

#include<cstdio>
int n,m,k,a[100010],fro[100010],rea[100010];
void pre()
{
for(int i=1;i<=n;++i) fro[i]=a[i]-a[i-1]-1;
for(int i=n;i>=1;--i) rea[i]=a[i+1]-a[i]-1;
for(int i=1;i<=n;++i) fro[i]+=fro[i-1];
for(int i=n;i>=1;--i) rea[i]+=rea[i+1];
}
int main()
{
scanf("%d %d %d",&n,&m,&k);
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
pre();
while(m--)
{
int l,r;
scanf("%d %d",&l,&r);
printf("%d\n",k-a[r]+a[l]-1+fro[r]-fro[l]+rea[l]-rea[r]);
}
return 0;
}

「CF 1485C」Floor and Mod

Link.

\[a\bmod b=\lfloor\frac{a}{b}\rfloor=k \\
\rightarrow a=kb+k\rightarrow a=(b+1)k\rightarrow k=\frac{a}{b+1} \\
k<b\rightarrow k^{2}<k(b+1)=a\le x\rightarrow 1\le k\le\sqrt{x} \\
1\le a\le x\rightarrow 1\le(b+1)k\le x\rightarrow1\le b\le\frac{x}{k}-1 \\
\rightarrow\text{ans}=\sum_{k=1}^{\sqrt{x}}\max(0,\min(y,\frac{x}{k}-1)-k)
\]
#include<cstdio>
#include<algorithm>
using namespace std;
const long long zero=0ll;
long long t,x,y,ans;
int main()
{
scanf("%lld",&t);
while(t--)
{
scanf("%lld %lld",&x,&y);
ans=0;
for(long long i=1;i*i<=x;++i) ans+=max(zero,min(y,x/i-1)-i);
printf("%lld\n",ans);
}
return 0;
}

「CF 1485D」Multiples and Power Differences

Link.

  • \((i+j)\bmod 2=1\):\(b_{i,j}=\text{lcm}(1,\cdots,16)\)。
  • \((i+j)\bmod 2=0\):\(b_{i,j}=\text{lcm}(1,\cdots,16)+a_{i,j}^{4}\)。
#include<cstdio>
int n,m,x;
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
{
scanf("%d",&x);
if((i+j)&1) printf("%d ",720720);
else printf("%d ",720720+x*x*x*x);
}
printf("\n");
}
return 0;
}

「CF 1485E」Move and Swap

Link.

blue 因为就是一直往下跑,所以一次操作在哪里不影响。

于是设 \(f_{u}\) 为操作完毕后 red 跑到 \(u\) 的 maximum value。

  • \(v\in\text{son}(u)\) 为 red:此时没发生 swapping,\(f_{u}=f_{v}+|a_{u}-a_{v}|\)。
  • \(v\in\text{son}(u)\) 为 blue:此时发生了 swapping,那么枚举 \(v\) 的同层结点 \(anov\),\(f_{u}=f_{anov}+|a_{u}-a_{anov}|\)。
#include<queue>
#include<cstdio>
#include<algorithm>
using namespace std;
const long long INF=1e18;
vector<int> e[200010],same[200010];
int t,n,dep[200010],fa[200010],leaf;
long long a[200010],f[200010];
void dfs(int x,int las)
{
dep[x]=dep[las]+1;
fa[x]=las;
leaf=max(leaf,dep[x]);
for(int i=0;i<e[x].size();++i)
{
int y=e[x][i];
if(y^las) dfs(y,x);
}
}
void DP(int d)
{
for(int i=d;i>1;--i)
{
long long mn=INF,mx=-INF,one=-INF,ano=-INF;
for(int j=0;j<same[i].size();++j)
{
mn=min(mn,a[same[i][j]]);
mx=max(mx,a[same[i][j]]);
}
for(int j=0;j<same[i].size();++j) f[fa[same[i][j]]]=max(f[fa[same[i][j]]],max(a[same[i][j]]-mn,mx-a[same[i][j]])+f[same[i][j]]);
for(int j=0;j<same[i].size();++j)
{
one=max(one,f[same[i][j]]+a[same[i][j]]);
ano=max(ano,f[same[i][j]]-a[same[i][j]]);
}
for(int j=0;j<same[i].size();++j) f[fa[same[i][j]]]=max(f[fa[same[i][j]]],max(one-a[same[i][j]],ano+a[same[i][j]]));
}
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=2;i<=n;++i)
{
int x;
scanf("%d",&x);
e[x].push_back(i);
e[i].push_back(x);
}
for(int i=2;i<=n;++i) scanf("%d",&a[i]);
dfs(1,0);
for(int i=1;i<=n;++i) same[dep[i]].push_back(i);
DP(leaf);
printf("%lld\n",f[1]);
for(int i=1;i<=n;++i)
{
f[i]=dep[i]=fa[i]=0;
same[i].clear();
e[i].clear();
}
leaf=0;
}
return 0;
}

「CF 1485F」Copy or Prefix Sum

Link.

Solution Set -「CF 1485」的更多相关文章

  1. Diary / Solution Set -「WC 2022」线上冬眠做噩梦

      大概只有比较有意思又不过分超出能力范围的题叭.   可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics   任意一个 ...

  2. Solution Set -「ARC 107」

    「ARC 107A」Simple Math   Link.   答案为: \[\frac{a(a+1)\cdot b(b+1)\cdot c(c+1)}{8} \] 「ARC 107B」Quadrup ...

  3. Solution -「CF 1342E」Placing Rooks

    \(\mathcal{Description}\)   Link.   在一个 \(n\times n\) 的国际象棋棋盘上摆 \(n\) 个车,求满足: 所有格子都可以被攻击到. 恰好存在 \(k\ ...

  4. Solution -「CF 1622F」Quadratic Set

    \(\mathscr{Description}\)   Link.   求 \(S\subseteq\{1,2,\dots,n\}\),使得 \(\prod_{i\in S}i\) 是完全平方数,并最 ...

  5. Solution -「CF 923F」Public Service

    \(\mathscr{Description}\)   Link.   给定两棵含 \(n\) 个结点的树 \(T_1=(V_1,E_1),T_2=(V_2,E_2)\),求一个双射 \(\varph ...

  6. Solution -「CF 923E」Perpetual Subtraction

    \(\mathcal{Description}\)   Link.   有一个整数 \(x\in[0,n]\),初始时以 \(p_i\) 的概率取值 \(i\).进行 \(m\) 轮变换,每次均匀随机 ...

  7. Solution -「CF 1586F」Defender of Childhood Dreams

    \(\mathcal{Description}\)   Link.   定义有向图 \(G=(V,E)\),\(|V|=n\),\(\lang u,v\rang \in E \Leftrightarr ...

  8. Solution -「CF 1237E」Balanced Binary Search Trees

    \(\mathcal{Description}\)   Link.   定义棵点权为 \(1\sim n\) 的二叉搜索树 \(T\) 是 好树,当且仅当: 除去最深的所有叶子后,\(T\) 是满的: ...

  9. Solution -「CF 623E」Transforming Sequence

    题目 题意简述   link.   有一个 \(n\) 个元素的集合,你需要进行 \(m\) 次操作.每次操作选择集合的一个非空子集,要求该集合不是已选集合的并的子集.求操作的方案数,对 \(10^9 ...

  10. Solution -「CF 1023F」Mobile Phone Network

    \(\mathcal{Description}\)   Link.   有一个 \(n\) 个结点的图,并给定 \(m_1\) 条无向带权黑边,\(m_2\) 条无向无权白边.你需要为每条白边指定边权 ...

随机推荐

  1. 【技术积累】Python中的PyTorch库【一】

    PyTorch库介绍 PyTorch是一个基于Python的科学计算库,用于构建深度学习神经网络.它主要由两个部分组成:一个是PyTorch Tensor库,提供了类似于NumPy的数组操作,但是支持 ...

  2. 南洋才女,德艺双馨,孙燕姿本尊回应AI孙燕姿(基于Sadtalker/Python3.10)

    孙燕姿果然不愧是孙燕姿,不愧为南洋理工大学的高材生,近日她在个人官方媒体博客上写了一篇英文版的长文,正式回应现在满城风雨的"AI孙燕姿"现象,流行天后展示了超人一等的智识水平,行文 ...

  3. MQ系列13:消息大量堆积如何为解决

    MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 MQ系 ...

  4. docker部署springboot项目到服务器

    docker部署springboot demo到vps docker安装 首先检查docker是否安装 docker version 出现上述界面就是安装成功 如果没有安装docker的话,运行以下命 ...

  5. 2023-06-25:redis中什么是缓存穿透?该如何解决?

    2023-06-25:redis中什么是缓存穿透?该如何解决? 答案2023-06-25: 缓存穿透 缓存穿透指的是查询一个根本不存在的数据,在这种情况下,无论是缓存层还是存储层都无法命中.因此,每次 ...

  6. 使用 nuxt3 开发简约优雅的个人 blog

    起因 很早前我就有过搭建个人博客的想法,但是我希望使用纯前端实现,这样就不需要付出额外的后端维护成本,维护成本又低,而且更加安全.网上也有很多博客框架但是也不符合我的需求,所以我使用了nuxt3 + ...

  7. Oracle将用户权限移植到另一个用户上

    问题描述:往往有些需求,A用户依赖于B用户创建,A用户想要获取B用户的权限,oracle没找到有命令可以直接继承,只能写一些语句来代替 1.查询用户下的权限有哪些 SET PAGESIZE 100 S ...

  8. Python史上最全种类数据库操作方法,你能想到的数据库类型都在里面!甚至还有云数据库!

    本文将详细探讨如何在Python中连接全种类数据库以及实现相应的CRUD(创建,读取,更新,删除)操作.我们将逐一解析连接MySQL,SQL Server,Oracle,PostgreSQL,Mong ...

  9. Linux 概念:grub2

    GRUB 2是许多发行版的缺省efi模式引导加载程序. grub2 与 grub 的区别 官方手册:https://www.gnu.org/software/grub/manual/grub/html ...

  10. rsync 命令

    linux上的rsync命令详解 15个rsync命令实施 -z: --compress 使用压缩机制 -v: --verbose 打印详细信息 -r: --recursive 以递归模式同步子目录 ...