• Codeforces Round #569 题解


    Codeforces Round #569 题解


    CF1179A Valeriy and Deque

    有一个双端队列,每次取队首两个值,将较小值移动到队尾,较大值位置不变。多组询问求第(m)次操作时队首两个数。


    显然(O(n))次以内队首变成了最大值,之后就循环了,暴力前(O(n))个操作的答案即可

    https://codeforces.com/contest/1179/submission/55878330


    CF1179B Tolik and His Uncle

    有一个(n*m)的网格图,你在((1,1))。你要遍历一遍这个网格图,正好经过每个点一次。唯一的限制是每次移动的移动向量不能相等,求方案。


    显然有解。

    一种构造方案是每次取第一行和最后一行,假设是格子(a_1,cdots,a_m)和格子(b_1,cdots,b_m)。向方案中加入(a_1,b_m,a_2,b_{m-1},cdots,a_m,b_1)。只剩一行的时候假设是格子(a_1,cdots,a_m),加入(a_1,a_m,a_2,a_{m-1},cdots)(交替选第一个数和最后一个数)。

    证明显然

    一种好写的实现方法构造两个数列(s_{1,1},s_{1,2},cdots,s_{1,m},s_{2,m},s_{2,m-1},cdots s_{2,1},s_{3,1},cdots)(s_{n,m},s_{n,m-1},cdots,s_{n,1},s_{n-1,m},s_{n-1,2},cdots s_{n-1,m},s_{n-2,m},cdots),交替选第一个坐标直到(n*m)个为止。

    https://codeforces.com/contest/1179/submission/55878330


    CF1179C Serge and Dining Room

    (题面万恶的zbzy真的23333....

    食堂里有(m)名同学排成一队,还有(n)个菜。因为万恶的zbzy,所以每个菜只有一个,被取完就没了。第(i)个菜价格为(a_i)元,第(j)个同学有(b_i)元。

    开始打饭时,从同学(1)到同学(m)依次打饭。每个同学会买下他能买得起的价格最高的菜(万恶的zbzy),如果啥都买不起就啥都不买(万恶的zbzy)

    每次会修改(a)(b)中的一个值,然后询问如果现在开始打饭,剩下的菜中价格最高的。不存在输出-1。


    (当时真的脑抽了先想了个树套树然后又整体二分然后主席树。。。。后来发现一个线段树就行了233

    搞一个线段树,对(a_i)的位置(+1),对(b_i)的位置(-1)

    询问就是最大的左端点(l)使得区间([l,infty))的最大后缀和(>0),不存在即为-1。

    https://codeforces.com/contest/1179/submission/55890192


    CF1179D Fedor Runs for President

    有一棵树,你要增加一条边(可以重边,不能是自环)使得新图的简单路径(不同的定义是边集不同)数量最大。


    我也不知道怎么就切了。。。

    瞎猜结论,按照求直径的方法搜两遍就切了。。。。。好像还是对的。。。。(差点gm了

    https://codeforces.com/contest/1179/submission/55895158


    CF1179E Alesya and Discrete Math

    交互题。

    定义(f(x))是好的当且仅当若(f(x))(x)(x-1)处都有定义,满足(f(x)=f(x-1))(f(x)=f(x-1)+1)

    (n)个好的函数(f_1,f_2,cdots,f_n),都满足

    1. 定义域是([0,10^{18}]cap mathbb{Z})
    2. (f(0)=0,f(10^{18})=L)

    这些函数都是确定的,你每次可以询问一个(f_i(x))。你最多提出(200000)次询问。交互器不是依赖型的。

    还满足(n|L)

    对每个函数(f_i)你需要选择一个区间,即([l_i,r_i])。需要满足(f_{i}(r_{i}) - f_{i}(l_{i}) geq frac{L}{n})

    而且还要满足任意两个区间的交为空或只有一个端点。


    首先有一个naive做法:设有(n)个函数,在值域([L,R])中求答案。先对每个函数(f_i)二分出一个(x_i)使得(f_i(x_i)=lfloor frac{L+R}2 floor),然后把函数按(x_i)排序,取中间的函数,递归下去(f_{1cdots mid})值域是([L,f_{mid}(x_{mid})])(f_{mid+1cdots r})值域是([f_{mid}(x_{mid}),R])

    然后递归做。

    (后面部分还没切,不保证正确性

    但是这样太慢了,换一个做法。每次随机一个函数(f_p),二分出(x_p),对其他的(f)计算(f_i(x_p)),即可知道(x_i)(x_p)的大小关系。做完之后将函数分成了两边在大的一边继续找答案。

    咕了咕了这题太屎了

  • 相关阅读:
    echo e 在SHELL脚本和命令行中表现不同一例问题排查
    Linux 中修改网卡名称【ubuntu + Centos7】
    ESXI上实施ORACLE 10G RAC+LINUX+ASM
    Linux crontab下关于使用date命令的坑
    SkiaSharp跨平台绘图研究1WPF桌面应用
    编译原理 实验一 词法分析
    计算机组成原理(上)_第一章测试题
    计算机组成原理(上)_第三章测试题
    SQL Server 2017 下载及安装详细教程
    计算机组成原理(上)_第四章测试题(上)
  • 原文地址:https://www.cnblogs.com/xzz_233/p/11070827.html
Copyright © 2020-2023  润新知