AtCoder Regular Contest 094 (ARC094) CDE题解

时间:2022-12-12 08:03:22

原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html

$AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$题解

  本次$ARC$可谓是手速场。当时由于博主实在zz导致滚粗,rk89.

  下面是题解。

  总结了一下,三道结论题。样例都不错,猜到结论基本上就可以过掉了。

  严重差评!!!大概要涨不了多少rating了QAQ(暴露了我的Rating是多么低),xza怎么没来??

  (UPD:2018-04-07 21:53):果然没上黄好难受还差12分QAQ。

$C$

题意

  有三个整数$A,B,C$。每次可以选择一个数让他加$2$,或者选择任意两个数让他们同时加$1$,问最少几次使$3$个数相同。

题解

  傻逼结论题。

  假设$A\geq B\geq C$,那么最优策略下,最终的数字大小不会超过$A+1$。

  考虑填掉$B$和$C$的坑,每次填坑效率为$2$,如果坑的总体积为奇数,那么自然要整体再加一层(包括$A$)坑的深度也$+1$。偶数直接填完就可以了。

  由于这个结论太傻逼了,我表示不会证。

  上面的那些全部瞎逼逼,正确的证明大概是:由题意的,本题显然可以这样做QAQ。

代码

#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <algorithm>
using namespace std;
int A,B,C;
int main(){
scanf("%d%d%d",&A,&B,&C);
if (A<B)
swap(A,B);
if (A<C)
swap(A,C);
int ans=A-B+A-C;
if (ans%2)
ans+=3;
ans/=2;
printf("%d",ans);
return 0;
}

$D$

题意

  在$2$次$10^{10^{10}}$人的比赛中,你取得的成绩依次为第$a$名和第$b$名。

  当一个人的成绩为$A$和$B$时,当且仅当$AB<ab$时,他会在综合排名中排在你前面。

  显然同一次比赛的同一个名次只能被一个人拥有。

  现在问综合排名排在你前面的最多有多少人?

题解

  有趣的结论题。

  设$c=ab-1$,考虑到答案中的所有的$A$和$B$,都满足$AB\leq c$。

  设$d=\left\lfloor \sqrt c \right\rfloor$,则对于$A\in[1,d]$都会有唯一且不重复的$B\in[d,c]$来接应,同理,对于$B\in[1,d]$都会有唯一且不重复的$A\in[d,c]$来接应。

  然后我们考虑删减掉一些不能用的。

  第一,是前后两种情况重叠的,就是会出现$A=B=d$的情况,但是算了两次的,要减一。$if (\left\lfloor\frac cd\right\rfloor=d) \rightarrow\ ans=ans-1$

  第二,就是要删掉被你占用的在$[1,d]$的排名。

  所以代码也很短咯。

代码

#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <algorithm>
using namespace std;
typedef long long LL;
int Q;
LL a,b;
LL LLsqrt(LL x){
LL L=0,R=1e9,mid,ans=-1;
while (L<=R){
mid=(L+R)>>1;
if (mid*mid<=x)
L=mid+1,ans=mid;
else
R=mid-1;
}
return ans;
}
int main(){
scanf("%d",&Q);
while (Q--){
scanf("%lld%lld",&a,&b);
if (a>b)
swap(a,b);
LL c=a*b-1;
LL d=LLsqrt(c);
LL ans=d+d;
if (a!=b)
ans--;
if (d!=0)
if (d==c/d)
ans--;
printf("%lld\n",max(ans,0LL));
}
return 0;
}

$E$

题意

  给出长度为$n$的序列$A$、$B$,序列$A$的第$i$项为$A_i$,序列$B$的第$i$项为$B_i$,且$\sum_{i=1}^{n}A_i=\sum_{i=1}^{n}B_i$。

  现在$Tozan$和$Gezan$在进行下面的一系列操作:

  • 如果$A$与$B$相同了,停止操作。
  • $Tozan$让$A$中任意一个正元素减一。
  • $Gezan$让$B$中任意一个正元素减一。
  • 给你一个糖。

  事实上,$Tozan$想给你尽可能多的糖,而$Gezan$恰恰相反,问双方都执行最优策略的情况下,你能得到多少糖。

题解

  又是一道结论题。

  首先判掉答案为0的。

  然后答案显然是$min\{B_i\}\ \ \ (1\leq i\leq n$且$A_i>B_i)$

  为什么呢。

  显然啊

  额

  好吧我说。

  我们只需要分两块证明。

  一个是$Tozan$有办法操作这么多次。

  另一个是$Gezan$有办法不让$Tozan$再继续操作。

  第二个很好证啊,那我只说说第一个。

  假设第$i$个是你选出的不拿光的那个。

  你只要考虑除了你留下的那一个,其他的所有的总的效果是$Tozan$剩下的比$Gezan$剩下的少,那么$Gezan$要努力停止操作必然要让其他剩余的总和变得相等。于是$Tozan$就可以把剩下的都弄光。对于当前的,当$Tozan$弄到$A_i=B_i$的时候,$Gezan$必定刚好可以把其他的都弄完,所以这时会停止操作。显然$Gezan$不会中途去弄$B_i$,因为这样显然亏。

  感觉这个还是要感性理解。

  我感觉舌头要打结了。QAQ

  估计我写的中文没有可读性QAQ。

代码

#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N=200005;
int n;
struct Node{
int a,b;
}x[N];
bool pd(){
for (int i=1;i<=n;i++)
if (x[i].a!=x[i].b)
return 0;
return 1;
}
int main(){
LL tot=0;
scanf("%d",&n);
for (int i=1;i<=n;i++){
scanf("%d%d",&x[i].a,&x[i].b);
tot+=x[i].a;
}
if (pd()){
printf("0");
return 0;
}
int ans=2e9;
for (int i=1;i<=n;i++)
if (x[i].a>x[i].b)
ans=min(ans,x[i].b);
printf("%lld",tot-ans);
return 0;
}

$F$

暂时不会啊(挖坑待填)

AtCoder Regular Contest 094 (ARC094) CDE题解的更多相关文章

  1. AtCoder Regular Contest 094

    AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...

  2. AtCoder Regular Contest 077 被虐记&amp&semi;题解

    直到\(7:58\)才知道今天\(8:00\)有\(AtCoder\)的菜鸡来写题解啦. C - pushpush 题目: 给定一个长为\(n\)的序列,第\(i\)次操作做如下的事 : 将\(a_i ...

  3. AtCoder Regular Contest 094 D Worst Case【思维题】

    https://arc094.contest.atcoder.jp/tasks/arc094_b 题意: 在2次超多人的比赛中,你取得的成绩依次为第A名和第B名.一个人的成绩为a和b时,当且仅当ab& ...

  4. AtCoder Regular Contest 094 D Worst Case

    Worst Case 思路: 使 a <= b 当 a == b 时 或者 a == b - 1 时,答案显然为 2 * (a - 1) 否则找到最大的 c ,使得 c * c < a * ...

  5. &ast;AtCoder Regular Contest 094 F - Normalization

    $n \leq 200000$的abc字符串,现能进行如下变换零次或若干次:选一个$i<n$且$s_i \neq s_{i+1}$,把$s_i$和$s_{i+1}$替换成abc三个字母中除了这两 ...

  6. AtCoder Regular Contest 128 部分题题解

    关于鄙人罚坐两小时那件事...该开始看A题,这不就是个DP记录路径吗?Wrong了,嗯,我没用double,又Wrong,怎么回事,使劲检查自己的算法和细节问题,一个小时过去了,...这没错啊,又反复 ...

  7. AtCoder Regular Contest 096

    AtCoder Regular Contest 096 C - Many Medians 题意: 有A,B两种匹萨和三种购买方案,买一个A,买一个B,买半个A和半个B,花费分别为a,b,c. 求买X个 ...

  8. AtCoder Regular Contest 061

    AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...

  9. AtCoder Regular Contest 092

    AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...

随机推荐

  1. SecureCRT 常用命令

    常用命令:一.ls 只列出文件名 (相当于dir,dir也可以使用) -A:列出所有文件,包含隐藏文件. -l:列表形式,包含文件的绝大部分属性. -R:递归显示. --help:此命令的帮助. 二. ...

  2. 使用 Eclipse 调试 Java 程序的技巧

    你应该看过一些如<关于调试的N件事>这类很流行的帖子 .假设我每天花费1小时在调试我的应用程序上的话,那累积起来的话也是很大量的时间.由于这个原因,用这些时间来重视并了解所有使我们调试更方 ...

  3. LINUX RHEL AS 4 &plus; ORACLE10G安装详解

    第一部分:LINUX RHEL AS 4 安装 运行提示: 1)按键盘的前后键可以调节光标所在的位置 2)在选项前面的括号中打上*号或者去掉*号,选中这条选项用空格键操作 3)在vi编辑文件时,键盘按 ...

  4. 许可EDM营销是个长期过程

    为什么这么说呢?基于博主自己这三四年的理解,许可EDM营销确实是个长期的过程,这跟一般的EDM营销有一定的区别. 大多数时候不会有立竿见影的效果,而且需要持续地不间断地进行到底,这也是很多企业实施许可 ...

  5. gulp-less插件之less文件编译成css

    gulp 是基于node的,所以第一步要确保你已经安装了node环境,具体怎么安装可以到node官网去看一下(https://nodejs.org/en/) 1.全局按钮gulp 打开node窗口输入 ...

  6. bash 读入文件

    Suppose we have a file contains the following information, termed input_file: A       0 B       1 C ...

  7. nginx、fastCGI、php-fpm关系梳理(转载参考)

    nginx.fastCGI.php-fpm关系梳理 还可以参考:http://www.cnblogs.com/skynet/p/4173450.html   前言: Linux下搭建nginx+php ...

  8. &lbrack;Linux&rsqb; PHP程序员玩转Linux系列-升级PHP到PHP7

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  9. 使用Git命令把本地项目上传到github上托管

    (1)在github上,新建一个仓库 (2)打开git-bash,进入项目目录下 (3)git init (4)git add . (5)git status (6)git commit -m &qu ...

  10. Kali&&num;160&semi;Linux安装字典StarDict

     Kali Linux安装字典StarDictStartDict是国外知名的字典框架,也可以加入国内翻译工具的字典.Kali Linux软件源提供该字典框架.用户需要安装qstardict软件包和词库 ...