首页 > 其他分享 >题解|2024暑期牛客多校03

题解|2024暑期牛客多校03

时间:2024-07-23 22:30:00浏览次数:9  
标签:体力 03 gcd i8 题解 ll 多校 turn hi

【原文链接】

比赛链接:2024牛客暑期多校训练营3

A.Bridging the Gap 2

题目大意

n n n个人过河,第 i i i 个人初始有 h i h_i hi​ 点体力。
由于船的限制,每次过河(或返回)至少需要乘坐 l l l 人(来划船),至多可以乘坐 r r r 人,每个乘船的人都会消耗 1 1 1 点体力。体力为 0 0 0 的人无法乘船。
求对于给定的条件,是否能够使所有人过河。

解题思路

假设初始所有人在左岸,考虑一种贪心模拟的做法:

  • 从在左岸的所有人中选取 l l l 个体力最大的人划船,带 r − l r-l r−l 个体力最小的人去右岸。
  • 从在右岸的所有人中选取 l l l 个体力最大的人划船返回左岸。
  • 重复以上步骤,直到所有人都到达右岸,或者无法继续。

这个过程中,除去最后一次划到右岸的 r r r 个人,每次能运输的人数为 r − l r-l r−l 。
最低往返的次数为 t u r n = ⌈ n − r r − l ⌉ turn = \lceil \dfrac{n-r}{r-l}\rceil turn=⌈r−ln−r​⌉ ,且最优,因为往返越少对体力的要求越低。

对于个人,除自己前往右岸的1点体力,多余的体力可以用于划船带人,往返一次需要2点体力。
因此第 i i i 个人能够参与的往返次数为 ⌊ h i − 1 2 ⌋ \lfloor \dfrac{h_i-1}{2}\rfloor ⌊2hi​−1​⌋ 。
由于只存在 t u r n turn turn 次往返,因此第 i i i 个人能够参与的往返次数为 min ⁡ ( ⌊ h i − 1 2 ⌋ , t u r n ) \min(\lfloor \dfrac{h_i-1}{2}\rfloor,turn) min(⌊2hi​−1​⌋,turn) 。

计算所有人能够参与的往返次数之和,如果大于等于 t u r n ∗ l turn*l turn∗l ,则按照上述贪心模拟的方法,可以使所有人过河。

参考程序

程序是副机长根据解题思路写的,居然A了()

void solve()
{
    ll n,l,r; cin >> n >> l >> r;
    vector<ll> v(n);
    for(auto&x:v) cin >> x;
    ll turn = (n-r)/(r-l) + ((n-r)%(r-l)!=0);
    ll sum = 0;
    for(auto x:v) sum += min((x-1)/2,turn);
    cout << (sum>=turn*l?"Yes":"No") << endl;
}

B.Crash Test

题目大意

初始距离墙壁的距离为 d d d 。
每次前进有 n n n 种长度可以选择: h 1 , h 2 , ⋯   , h n h_1,h_2,\cdots,h_n h1​,h2​,⋯,hn​。每次前进的长度可以是任意一种长度。
如果选择的长度 h i h_i hi​ 大于当前与墙壁的距离 d ′ d' d′ ,将会退后多余的距离,即新的距离为 h i − d ′ h_i - d' hi​−d′ 。
求在任意次(包括0次)前进后,与墙壁的最小距离。

解题思路

裴蜀定理:对于非0整数 a , b a,b a,b ,对任意整数 x , y x,y x,y 有 g c d ( a , b ) ∣ a x + b y gcd(a,b)|ax+by gcd(a,b)∣ax+by 成立,即 g c d ( a , b ) gcd(a,b) gcd(a,b) 是所有 a , b a,b a,b 的线性组合中,绝对值最小的非0整数。

裴蜀定理扩展到多整数的情况仍然成立。

因此计算出 g = gcd ⁡ i = 1 n ( h i ) g=\gcd\limits_{i=1}^n(h_i) g=i=1gcdn​(hi​) , g g g 的意义是通过对 h i h_i hi​ 的某种线性组合,能够得到的最小前进距离。

然后每一步视为走 g g g ,以此求得不撞墙答案 d % g d\%g d%g 与撞墙答案 g − d % g g-d\%g g−d%g ,取较小值即可。

参考程序

void solve()
{
    ll n,d; cin >> n >> d;
    create_vec(v,n);
    ll g = v[0];
    for(auto x:v) g = __gcd(g,x);
    cout << min(d%g,g-d%g) << endl;
}

D.Dominoes!

//TODO

J.Rigged Games

//TODO

L.Sudoku and Minesweeper

题目大意

经典数独在 9 × 9 9\times 9 9×9 大小的棋盘格内进行,每一行、每一列、 9 9 9 个 3 × 3 3\times 3 3×3 的小方块内,数字 1 − 9 1-9 1−9 恰好出现一次。

扫雷是一款在棋盘格内进行的游戏,中心数字表示周围 8 8 8 格包含地雷的数量。

现给定一个 9 × 9 9\times 9 9×9 数字矩阵表示一个已经完成的合法经典数独,可以将里面的数字替换成地雷,但必须保留至少 1 1 1 个数字,求一个合法的扫雷游戏布局。

解题思路

除了边缘之外,中间 7 × 7 7\times 7 7×7 范围内必然出现数字 8 8 8 。
这是一个特殊的数字,只需要把它保留,其余所有数字全部替换成地雷,就是一个合法的扫雷游戏布局。

参考程序

void solve()
{
    vector<string> vs(9);
    for(auto&s:vs) cin >> s;
    int fl=0,i8,i8;
    FORLL(i,1,7){
        FORLL(j,1,7){
            if(vs[i][j]=='8'){
                i8=i; i8=j; fl=1; break;
            }
        } if(fl) break;
    }
    FORLL(i,0,8){
        FORLL(j,0,8){
            if(i==i8&&j==i8) cout << '8';
            else cout << '*';
        }
        cout << endl;
    }
}

标签:体力,03,gcd,i8,题解,ll,多校,turn,hi
From: https://blog.csdn.net/m0_73786319/article/details/140647635

相关文章

  • P10280 [USACO24OPEN] Cowreography G 题解
    Description奶牛们组了一支舞蹈队,FarmerJohn是她们的编舞!舞蹈队最新而最精彩的舞蹈有\(N\)头奶牛(\(2\leN\le10^6\))排成一行。舞蹈中的每次动作都涉及两头奶牛,至多相距\(K\)个位置(\(1\leK<N\)),优雅地跳起并降落在对方的位置上。队伍中有两种奶牛——更赛牛(Guernsey)和荷......
  • 基因改造 题解
    前言题目链接:Hydro&bzoj。题意简述求匹配串\(S\)中和模式串\(T\)匹配的子串。两个串被定义为匹配的,当且仅当一个串任意交换字符后和另一个串相等。例如\(\texttt{12321}\)和\(\texttt{21312}\)匹配,因为前者交换\(\texttt{1}\)和\(\texttt{2}\)后与后者等价。当然......
  • 2024牛客暑期多校训练营3
    Preface又被隔壁干烂了,这场最抽象的是三个人开局被A卡的死去活来,一直到中期的时候才以WA三发的代价过了这个题封榜后徐神狠狠发力连过两题,使得最后勉强只被打出\(n+1\)而不是\(n+2\),鉴定为我是纯纯的飞舞BridgingtheGap2首先不难发现过程一定是先进行\(T=\rceil\f......
  • [米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-03安路TD结合modelsim仿真
    软件版本:Anlogic-TD5.9.1-DR1_ES1.1操作系统:WIN1064bit硬件平台:适用安路(Anlogic)FPGA实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板板卡获取平台:https://milianke.tmall.com/登录"米联客"FPGA社区http://www.uisrc.com视频课程、答疑解惑!1概述FPGA开发中对设计的代码功能......
  • 代码随想录算法训练营第三天 | Leetcode 203 移除链表元素 Leetcode 206 翻转链表
    前言今天的两道题目都不难,但细节需要注意。如移除链表元素用到的虚拟头节点,翻转链表的思路。翻转链表真是写了忘,忘了写,希望这次能记住。除此之外我决定每天的记录里面增加一个总结八股的部分,将来二刷再翻看文章的时候顺便也能复习八股知识点。Leetcode203移除链表元素题目......
  • 第四十八天 第十章 单调栈part01 739. 每日温度 496.下一个更大元素 I 503.下一个更大
     739.每日温度 使用单调栈:注意栈中的递增递减顺序。classSolution{public:vector<int>dailyTemperatures(vector<int>&temperatures){vector<int>res(temperatures.size(),0);stack<int>sta;sta.push(0);for(int......
  • SpringBoot升级到3.3.2版本,JDK升级到17,引入Mybatis-plus后启动报错:Property 'sqlSessi
    【问题描述】2024-07-23T15:16:07.174+08:00WARN2604---[questionnaire][main]ConfigServletWebServerApplicationContext:Exceptionencounteredduringcontextinitialization-cancellingrefreshattempt:org.springframework.beans.factory.UnsatisfiedDependen......
  • CF521E Cycling City 题解
    Description给定一张\(n\)个点\(m\)条边的无向简单图。问图中能否找到两个点,满足这两个点之间有至少三条完全不相交的简单路径。\(n,m\le2\times10^5\),图不保证连通。Solution容易发现有解地充要条件是存在两个环有边交,考虑在dfs树上做这件事。注意到非树边一定......
  • CF1990F Polygonal Segments 题解
    题目链接:https://codeforces.com/contest/1990/problem/F赛时想到了一个略显抽象的做法,但因为写反了一个判断导致没能过掉。赛后调参卡过,用时\(3.5/8\)秒。为了不丢失这个idea最终还是决定写个题解记录一下。题意简述给定一个数组\(a_{1..n}\),执行以下查询:查询区间\([......
  • 题解:P10800 「CZOI-R1」卡牌
    \(\text{Link}\)最近做的最神金的一道数据结构题。题意给出\(m\)个值域为\([1,n]\)的四元组\(t_{i,0\sim3}\),定义四元组\(A\)胜于四元组\(B\)当且仅当最多存在一个\(j\in[0,3]\)使得\(A_j\leB_j\),求出有多少个值域为\([1,n]\)的四元组\(A\)胜于所有的\(t_{1......