首页 > 其他分享 >CF1850E Cardboard for Pictures 题解

CF1850E Cardboard for Pictures 题解

时间:2023-08-24 20:22:58浏览次数:44  
标签:__ 题解 CF1850E mid times Pictures int128 aligned check

前言

一个月前的一场悲剧qwq 传送门

没事干写的qwq

热乎着的一道题,昨晚上刚考完,然而这是一场悲剧。。。。

题解

题目大意

给定 \(a_1 ~ a_n\) 和 \(c\) ,求 \((a_1+2\times w)^2+(a_2+2\times w)^2+...+(a_n+2\times w)^2=c\) 时 \(w\) 的最小值

解析

我们来化简一下这个式子:

\((a_1+2\times w)^2+(a_2+2\times w)^2+...+(a_n+2\times w)^2\)

根据完全平方公式 \((a+b)^2=a^2+b^2+2ab\) (对!初一数学!)可得

原式\(=(a_1)^2+(2\times w)^2+2\times a_1\times (2\times w)+(a_2)^2+(2\times w)^2+2\times a_2\times (2\times w)+...+(a_n)^2+(2\times w)^2+2\times a_n\times (2\times w)\)

\(=\begin{aligned}\sum_{i=1}^{i\le n} (a_i)^2+n(2\times w)^2+(\sum_{i=1}^{i\le n} 2\times a_i)\times (2\times w)\end{aligned}\)

所以预处理出 \(\begin{aligned}\sum_{i=1}^{i\le n} (a_i)^2\end{aligned}\)=sum1,\(\begin{aligned}(\sum_{i=1}^{i\le n} 2\times a_i\end{aligned})\)=sum2 即可。

然后考虑二分 \(w\) ,check 函数这样子写:

inline bool check(ll x){
    ll t=x*2;
    return sum1+t*t*n+sum2*t<=c;
}

代码

思路很简单,那么就直接给出代码吧qwq!

#include <bits/stdc++.h>
#define i128 __int128 //不开int128见祖宗
using namespace std;
i128 T,n,c,t,sum1,sum2; //sum1 sum2见上
template<typename T> inline void read(T& n){
    T x=0;bool f=1; //int128特有的快读快写(悲)
    char c=getchar();
    while(c<48||c>57)
        f=c!=45,c=getchar();
    while(c>47&&c<58)
        x=(x<<3)+(x<<1)+(c^48),c=getchar();
    n=f?x:-x;
}
template<typename T> void write(T x){
    if(x<0) putchar(45),x=-x;
    if(x>9) write(x/10);
    putchar(x%10+48);
}
inline bool check(i128 x){
    i128 t=x*2; //check,见上
    return sum1+t*t*n+sum2*t<=c;
}
int main(){
    ios::sync_with_stdio(0);
    read(T);
    while(T--){
        read(n),read(c),sum1=0,sum2=0;
        for(int i=1;i<=n;i++)
            read(t),sum1+=t*t,sum2+=2*t; //预处理
        i128 l=0,r=1e9,mid;
        while(l<=r){ //二分
            mid=l+r>>1;
            if(check(mid)) l=mid+1;
            else r=mid-1;
        }
        write(r),puts("");
    }
    return 0;
}

彩蛋

聊聊赛时的一场悲剧:

还剩最后22分钟时,跟 cyh 交流出了解法,她表示:我不想打了,感觉调不出来了。

但是本蒟蒻上次被 Skipped 的Div.4(5.6那次)可是做了 5 道,可不能成为耻辱,上次加了164Rating!

然后就开始调二分了,然而一直卡题,卡了7次到处改都是WA在Test4。

当时打的是:

#define ll __int128 //C++17,GCCmsys2 64bit能过
...
ll l=0,r=c,mid; //r太大了!!!,l=0用不着
while(l<r){ //PS:原版题解里的l<=r是怕玄学,实际上一样的
    mid=l+r>>1;
    if(check(mid)) l=mid+1;
    else r=mid;
}

时间飞逝,比赛结束,最后一次提交依然没过,难绷。

本来想打一个高精度的,但是感觉时间会炸就没打(实际上如果用python一切都能避免只可惜来不及改了)。

比赛完时突然想到 unsigned __int128 ,改了一下: #define ll unsigned __int128

比赛完之后大概 1:39 分时, CF 服务器终于不卡了,于是又提交上去,过了?

还我 T5,unsigned 我*************!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

真蚌埠住了,这场玩飘了。

然后根据 czy 在犇犇里说的 r=1e9 就行,改了一下,换回 signed __int128 就过了。。。。。。。

这份也是题解里面的版本。

标签:__,题解,CF1850E,mid,times,Pictures,int128,aligned,check
From: https://www.cnblogs.com/LYXOfficial/p/17655075.html

相关文章

  • NOIP 2023 周赛 3 题解
    A-Permutationsummarization构造一个\(1\dotsn\)的排列使\(\prod\limits_{i=1}^n\operatorname{lcm}(p_i,p_{(i\bmodn)+1})\)最大。solution不难发现上式最大为\(\prod\limits_{i=1}^ni^2\),即让所有\(\operatorname{lcm}(x,y)=x\timesy\),那么只要使相邻两个数互质......
  • 题解 ABC309Ex【Simple Path Counting Problem】
    好好玩的题。设普通生成函数\(F_i\),其中\([z^k]F_i\)表示从所有起点走到\((i,k)\)的方案数。特别地,\([z^k]F_1=\sum\limits_{a\inA}[a=k]\)。注意到\(F_i=(z^{-1}+1+z)F_{i-1}\)几乎成立,但是在\([z^1]F_i\)和\([z^M]F_i\)处不成立。尝试对\(F_i\)进行改造:\[[z^k......
  • 国标GB2818视频平台EasyGBS国标平台与车机设备连接显示未连接成功的问题解决方法
    EasyGBS平台可提供流媒体接入、处理、转发等服务,支持内网、公网的监控设备通过国标GB/T28181协议进行视频监控直播。平台兼容性强,只要设备支持国标GB28181协议,均能快速接入EasyGBS,实现视频的监控直播、视频录像、语音对讲、云存储、检索及回放、告警、级联等。​......
  • 国标视频云服务EasyGBS国标平台与海康4200平台级联后不能播放的问题解决方法
    国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等......
  • CodeForces1741G-Kirill and Company题解
    \(\large\text{CodeForces1741G-KirillandCompany题解}\)题面传送门(有翻译(由黄巨佬提供))思路预处理因为\(k\)很小,所以可以先bfs预处理出家在\(i(2\lei\len)\)的人能捎带上哪些集合的人,在表示集合时用一个\(0\)到\(2^k-1\)的整数\(j\)表示,若\(j\)在二进质下的......
  • Codeforces Round #849 (Div. 4) 题解
    第一次打$\text{Div.4}$,感觉体验还行,差一题AK。##A直接使用if语句判断某个字符是否在字符串$\text{codeforces}$中出现过,幼儿园小朋友都会做。时间复杂度$\mathcal{O}(T)$,空间复杂度$\text{O}(1)$。ACCode##B用两个变量$x,y$记录当前走到哪里。若出现过$x=1,y=1$的......
  • CF36D New Game with a Chess Piece 题解
    前言:都大半年没在洛谷上提交过题解了。SPOJ上有双倍经验,题号为SP7602。我看题解区的大佬们有的正经用博弈论做,有的打表,但是感觉没有讲得很形象,这篇题解将生动讲述打表做法,同时为了让大家在感性理解后,还可以理性理解,会附上证明(这部分参考了别的题解)。正文:Step1:打表找规律......
  • CF54C First Digit Law 题解
    题目传送门\(Solution\):一个比较简单的数位dp处理技巧加上一个暴力的dp。设\(p_i\)为区间\([l_i,r_i]\)中出现\(1\)开头的数的概率。考虑\(solve(x)\)函数为求出\([1,x]\)中开头为\(1\)的个数。显然低于\(x\)的位数的数是全部能取到的,这时候开头为\(1\)......
  • 题解 数数
    题目链接可持久化平衡树看上去很行的样子,但是我不会啊。。。先来考虑一个简化版的问题:求区间\([1,n]\)中\(\leH_i\)的元素个数。这显然是好做的,用权值树状数组就行。回到本题,显然:询问区间\([l,r]\)中\(\leH_i\)的个数,等价与区间\([1,r]\)的答案减去区间\([1,l-1]......
  • 国标视频云服务EasyGBS国标视频平台迁移服务器后无法启动的问题解决方法
    国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等格......