「ARC 109A」Hands

Link.

讨论即可,除了煞笔出题人写了个死马的题面。

#include<cstdio>
#include<algorithm>
using namespace std;
int a,b,x,y,ans;
int main()
{
scanf("%d%d%d%d",&a,&b,&x,&y);
if(a>b) printf("%d\n",min(x<<1,y)*max(0,abs(a-b)-1)+x);
else printf("%d\n",min(x<<1,y)*max(0,abs(a-b))+x);
return 0;
}

「ARC 109B」log

Link.

要贪心的取的话,肯定是先把 \(n+1\) 取了,然后我们来二分。

\(1-n\) 分别有 \(n+1\) 到 \(2\) 种方法可以组成他。

然后来考虑怎么 check。

可以知晓,如果没有这一块多的木块,就一定需要 \(n\) 块木头。

然后就按开头那个贪心,把 \(n+1\) 从 \(1\) 分完,剩下的再依次分。

#include<cstdio>
unsigned long long n;
bool check(unsigned long long x)
{
return (x*(x+1)>>1)<=n+1;
}
unsigned long long search(unsigned long long l,unsigned long long r)
{
unsigned long long res=0;
while(l<=r)
{
unsigned long long mid=(l+r)>>1;
if(check(mid))
{
l=mid+1;
res=n-mid+1;
}
else r=mid-1;
}
return res;
}
int main()
{
scanf("%llu",&n);
printf("%llu\n",search(1,2e9));
return 0;
}

「ARC 109C」Large RPS Tournament

Link.

\(2^{k}\)!好耶!!!

考虑倍增 DP。设 \(f_{i,j}\) 为区间 \([i,i+2^{j}-1]\) 的 winner's hand。

设计一个函数 \(\text{tournament}(P,Q)\) 为 \(P\)、\(Q\) 比武后的赢家。

转移即

\[f_{i,j}=\text{tournament}(f_{i,j-1},f_{i+2^{j-1},j-1})
\]

当然你不能直接用 \(2^{k}\) 当成序列来做,反正他是循环节我们直接做 \(k\) 轮最后合并即可。

实际实现时不需要这么写(主要是写不来)(好像可以记忆化?)。

#include<string>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
string s;
int n,k;
char tour(char one,char ano)
{
if(one=='R')
{
if(ano=='R') return 'R';
else if(ano=='P') return 'P';
else return 'R';
}
else if(one=='P')
{
if(ano=='R') return 'P';
else if(ano=='P') return 'P';
else return 'S';
}
else
{
if(ano=='R') return 'R';
else if(ano=='P') return 'S';
else return 'S';
}
}
int main()
{
scanf("%d%d",&n,&k);
cin>>s;
while(k--)
{
string tmp=s+s;
for(int i=0;i<n;++i) s[i]=tour(tmp[i<<1],tmp[i<<1|1]);
}
printf("%c\n",s[0]);
return 0;
}

「ARC 109D」L

图画出来差不多,向目标进发,步数下界就出来了 \(\max\{|x|,|y|\}\)。

这张图是在这里嫖的:

注意特判一些奇怪的情况,具体自己看代码吧吧吧吧。

#include<cstdio>
#include<algorithm>
using namespace std;
int t,onex,oney,anox,anoy,exx,exy,finalx,finaly;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d%d%d",&onex,&oney,&anox,&anoy,&exx,&exy);
finalx=min(onex,min(anox,exx));
finaly=min(oney,min(anoy,exy));
finalx=(finalx<<1)+(finalx!=onex)+(finalx!=anox)+(finalx!=exx)-1;
finaly=(finaly<<1)+(finaly!=oney)+(finaly!=anoy)+(finaly!=exy)-1;
printf("%d\n",max(abs(finalx),abs(finaly))+((finalx==finaly)&&(finalx>1||finalx<0)));
}
return 0;
}

「ARC 109E」1D Reversi Builder

Link.

「ARC 109F」1D Kingdom Builder

Link.

Solution Set -「ARC 109」的更多相关文章

  1. 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 ...

  2. 「ARC 139F」Many Xor Optimization Problems【线性做法,踩标】

    「ARC 139F」Many Xor Optimization Problems 对于一个长为 \(n\) 的序列 \(a\),我们记 \(f(a)\) 表示从 \(a\) 中选取若干数,可以得到的最 ...

  3. Solution -「ARC 104E」Random LIS

    \(\mathcal{Description}\)   Link.   给定整数序列 \(\{a_n\}\),对于整数序列 \(\{b_n\}\),\(b_i\) 在 \([1,a_i]\) 中等概率 ...

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

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

  5. Solution -「ARC 101D」「AT4353」Robots and Exits

    \(\mathcal{Description}\)   Link.   有 \(n\) 个小球,坐标为 \(x_{1..n}\):还有 \(m\) 个洞,坐标为 \(y_{1..m}\),保证上述坐标 ...

  6. Solution -「ARC 110D」Binomial Coefficient is Fun

    \(\mathcal{Description}\)   Link.   给定非负整数序列 \(\{a_n\}\),设 \(\{b_n\}\) 是一个非负整数序列且 \(\sum_{i=1}^nb_i\ ...

  7. Solution -「ARC 124E」Pass to Next

    \(\mathcal{Description}\)   Link.   有 \(n\) 个人站成一个环,初始时第 \(i\) 个人手里有 \(a_i\) 个球.第 \(i\) 个人可以将自己手中任意数 ...

  8. Solution -「ARC 126E」Infinite Operations

    \(\mathcal{Description}\)   Link.   给定序列 \(\{a_n\}\),定义一次操作为: 选择 \(a_i<a_j\),以及一个 \(x\in\mathbb R ...

  9. Solution -「ARC 126F」Affine Sort

    \(\mathcal{Description}\)   Link.   给定 \(\{x_n\}\),令 \[f(k)=\left|\{(a,b,c)\mid a,b\in[0,c),c\in[1,k ...

  10. Solution -「ARC 125F」Tree Degree Subset Sum

    \(\mathcal{Description}\)   Link.   给定含有 \(n\) 个结点的树,求非负整数对 \((x,y)\) 的数量,满足存在 \(\exist S\subseteq V ...

随机推荐

  1. C++面试八股文:C和C++有哪些区别?

    某日小二参加XXX科技公司的C++高级工程师开发岗位1面: 面试官:请问C和C++的区别有哪些? 小二:C++是C的超集. 面试官:还有吗? 小二:... 面试官:面试结束,回去等消息吧. 小二:淦. ...

  2. 文件系统考古2:1984 - BSD Fast Filing System

    今天继续与大家分享系列文章<50 years in filesystems>,由 KRISTIAN KÖHNTOPP 撰写. 我们将进入文件系统的第二个十年,即1984年,计算机由微型计算 ...

  3. 使用yaml进行数据驱动

    一.需求描述 1.请求登陆接口,从登陆接口的响应头数据中获取token值,并写入yml文件: 2.读取写入yml文件中的token值作为下个接口的传参,请求查询物料列表接口,查看查询结果. yaml_ ...

  4. unity添加Mysql的dll以及发布的问题

    最近在做一个unity项目中,要读取数据库,还是MySql的数据库.遇到了很多问题,写出来供大家参考一下. 关于unity引用第三方的Mysql.data.dll的问题: 这个地方有一个难点,正常的C ...

  5. 逍遥自在学C语言 | 指针和数组的关联

    前言 指针和数组之间存在着紧密的关系.在本文中,我们将探讨指针和数组的关系.指针算术和数组遍历.多维数组与指针以及指针数组和数组指针. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 ...

  6. 计算机网络那些事之 MTU 篇 pt.2

    哈喽大家好,我是咸鱼 在<计算机网络那些事之 MTU 篇 >中,咸鱼跟大家介绍了 MTU 是指数据链路层能够传输的最大数据帧的大小 如果发送的数据大于 MTU,则就会进行分片操作(Frag ...

  7. 2023年icpc大学生程序设计竞赛-nhr

    icpc的省赛是在洛阳举办,第一次出省,还是两天,第一次离开郑州去别的城市比赛,心情更多的是激动,非常感谢老师给了这次机会,第一天20号,打完热身赛之后回寝室,和队友一起看了一下去年省赛的题,感觉还是 ...

  8. NodeJS:安装CNPM

    安装命令 npm install -g cnpm --registry=https://registry.npm.taobao.org 使用命令 cnpm install [name] 参考连接 ht ...

  9. 管于pyinstaller 打包完成后不能运行的问题

    方案一: 进入项目路径,在cmd窗口输入python 文件名.之后查看结果,看是否有模块未安装,或者是未导入模块.因为pyinstaller打包时,是按照被打包文件上的导入的库名进行打包的,所以需要将 ...

  10. 从MybatisPlus回归Mybatis

    从MybatisPlus回归Mybatis 之前写项目一直习惯使用MyBatisPlus,单表查询很方便:两张表也很方便,直接业务层处理两张表的逻辑.但什么都图方便只会害了你. 但连接的表比较复杂的时 ...