首页 > 其他分享 >AtCoder Regular Contest 152 (A-D)

AtCoder Regular Contest 152 (A-D)

时间:2022-11-21 14:55:05浏览次数:80  
标签:AtCoder 152 最大值 mn 最小值 Regular 那么 pass mx

根本不知道有ARC。然后unrated register。然后一直在聊天,只写了A。难蚌。
按照pog的说法,这场应该不看题直接写代码!!1这样才能写的飞快。
摆了一上午。我好像一直在贺题,所以还是记录一下。

A - Seat Occupation

你发现就 \(L\) 个人,单独来的他肯定能找到自己的座位,所以只有加入俩人的时候才有可能无解。那么我们考虑最坏情况,间隔一个位置就坐,直到两人组没地方坐为止。

\(O(n)\)

另:Echo问我为什么不可能是放中间最劣,我说不清楚。。

B - Pass on Path

我不会小学追及问题。。直觉pass次数越少越好。一般会pass两次,但如果从某个起点i开始背向出发只会pass一次。在时间 \(2l\) 的基础上加上这俩人等来等去的时间。
假设在j的地方pass。
\(ans = 2l+2|2L-2a[i]-2a[j]|\) 固定i,那么显然在a[j]最接近 \(L-a[i]\) 的时候最优。考虑<= 和 >= 的最近的情况即可 \(O(n)\)

C - Pivot

一次操作实际上相当于在数轴上把一条线段关于 \(s\) 对称。
那么实际上两数之间的相对位置是不改变的,最大值最小且所有数大于0,就是让最小值最小且大于0。
设开始的最小值和最大值分别是mn,mx
如果s=mn/mx,设d=mx-mn,d始终不变,那么最小值会+d或-d,次数任意。(看成线段在数轴上翻转)
那么最小值可以最终变成 \(mn%d\) 或 \(mx%d\)。那么此时我们思考怎么再减小最小值。
如果选中的数是s,开始的最小值是 \(r\),操作一次后 \(r\) 变为 \(2*s-r\),也就是 \(+2(s-r)\)。再重复操作是会 \(-2(s-r)\),因为此时的s已经改变。可以操作一次最大值,之后再操作,就会是 \(+2(s-r)\) 了。那么也就是说我们也可以+-任意次 \(2(s-r)\)
我们发现s=mn/mx的可以归到一般情况里。
令\(g=gcd(2*(a[i+1]-a[i]))\)。答案就是 \(min(a[1]\%g,a[n]\%g)+a[n]-a[1]\)

D - Halftree

https://www.cnblogs.com/closureshop/p/16910404.html
构造题。。这位神仙写的够清楚了。。

标签:AtCoder,152,最大值,mn,最小值,Regular,那么,pass,mx
From: https://www.cnblogs.com/zdsrs060330/p/16911387.html

相关文章

  • AtCoder Beginner Contest 278-F
    F-Shiritori题解:n最大16,所以可以状态压缩,相当于n个点的带权有向图。dp[i][j]表示当前状态为i,j结尾的情况,其中dp[i][j]=1表示First赢,0为second赢,如果一个字符串s[i],第......
  • [ARC152D] Halftree题解
    很好的一道题,即使是我这种菜鸡也感到心潮澎湃。直觉有余,证明不足。思路有余,推导不足。无论是什么比赛,对拍都是最有效的查错方式。本篇题解里的所有图片采用gra......
  • Solution - ARC152D Halftree
    首先\(n\)为偶数时无解,这是显然的,因为一次加两条边,总边数一定是偶数。下面我们证明\(n\)为奇数时一定有解,直接进行构造。首先将每一个点编号加上\(k\)再模\(n\)......
  • 152. Maximum Product Subarray
    Givenanintegerarray nums,finda subarray thathasthelargestproduct,andreturn theproduct.Thetestcasesaregeneratedsothattheanswerwillfit......
  • AtCoder Beignner Contest 278
    D给定一个长度为\(n\)的序列,有如下三种操作:把所有的数全部修改为\(x\)把第\(i\)个数加\(x\)输出第\(i\)个数的值不难发现,每次一操作会覆盖之前的所有操作,所......
  • AtCoder Beginner Contest 278
    A-Shift原题链接题意给定一个有\(n\)个整数的数组\(a\),要求进行以下\(k\)次操作,输出操作后的数组。操作为:将第一个数去掉,在队尾加上一个\(0\)。分析依题意模......
  • AtCoder Beginner Contest 278
    A-Shift(abc278a)题目大意给定一个有\(n\)个整数的数组\(a\),要求进行以下\(k\)次操作,输出操作后的数组。操作为:将第一个数去掉,在队尾加上一个\(0\)。解题思路模......
  • AtCoder Regular Contest 150补题
    AtCoderRegularContest150A.Continuous1知识点:简单题复杂度:\(O(n)\)当一个区间合法,那么必定区间长度为k,并且区间内无0,并且1的个数等于所有的1的总和这个使用个......
  • AtCoder Beginner Contest 278
    咕咕咕。D-AllAssignPointAdd把数拆分成\(base+delta\)。\(base\)就是操作一设置的数,初始时认为\(base=0\);\(delta\)的维护可以有两种方法。一种是我比......
  • AtCoder Beginner Contest 278-D
    D-AllAssignPointAdd 题目链接:https://atcoder.jp/contests/abc278/tasks/abc278_d刚开始的思路是进行操作1的时候,将整个数组都赋成......