首页 > 其他分享 >Codeforces Round 887 (Div. 2)

Codeforces Round 887 (Div. 2)

时间:2023-08-01 21:13:23浏览次数:38  
标签:... 887 int Codeforces mid ans Div

Codeforces Round 887 (Div. 2)

A. Desorting

题目大意

给出一个长度为 \(n\) 的数组 \(a\) ,可以执行这个操作任意次。

选择一下标 \(i\), 使得 \(a_{1...i}\) 加上 \(1\) ,\(a_{i+1...n}\) 减少 \(1\)。

问最少几次操作使得数组 \(a\) 无序。

思路

首先如果 \(a\) 原本就无序的话是输出 \(0\)。

如果有序我们不妨进行如下操作:

找出最小的相邻两数差,对于以上说的操作我们可以画图

我们找到最小极差,将蓝色的方格当成 \(i\) 进行 \(\frac{x}{2}\) 次操作使得两个有颜色的方格持平,然后+1使得红色高度大于蓝色高度。

所以答案就是 \(\frac{\min\{a_i-a_{i-1}\}}{2}+1\)

int ans = 1e9 + 7;
for (int i = 1; i < n; i++)
    ans = min(ans, a[i] - a[i - 1]);
cout << ans / 2 + 1 << endl;

B - Fibonaccharsis

题目大意

给两个正整数 \(n,k\) 问有多少个斐波那契数列的第 \(k\) 项为 \(n\).

思路

斐波那契额最小是 \(0,1,1,2,3...\) 到第 \(28\) 项就超过 \(2e5\) 了,所以超过 \(28\) 直接输出 \(0\)

设第一位 \(x\),第二位 \(y\) 接下来为

\[x+y,x+2y,2x+3y,3x+5y... \]

我们可以直接预处理出正常的斐波那契额数列 \(\text{F}\)

带进去可得第 \(k\) 项 \(n=F[k-2]x+F[k-1]y\)

枚举其中的一个值 \(x\), 如果 \((n-F[k-2]x)\bmod F[k-1]=0\) 那么答案加一

int ans = 0;
f[1] = f[2] = 1;
for (int i = 3; i <= 30; i++)
    f[i] = f[i - 1] + f[i - 2];
for (int i = 0; i * (f[k - 2] + f[k - 1]) <= n; i++)
{
    int temp = n;
    temp -= i * f[k - 2];
    if (temp % f[k - 1] == 0)
        ans++;
}

C-Ntarsis' Set

题目大意

已知一个集合 \(S={1,2,3...,10^{1000}}\) ,同时有一个长度为 \(n\) 的序列 \(a\) ,表示我们每次都要删除 \(S\) 中的第 \(a_i\) 项,求经过 \(k\) 次操作后最小的数字

思路

我们发现只有当一个数比它小的数都删完后它有成为答案的机会,所以我们 \(check\) 掉比它小的数,\(mid>1\) 就说明这个数存在(减去比它小的),然后如果比它小的值都去掉了,那么就记录答案,否则就将答案范围放大

bool check(LL k, LL mid)
{
    while (k--)
        mid -= lower_bound(a + 1, a + n + 1, mid) - a - 1;
    return mid > 1;
}
  while (l + 1 < r)
  {
      LL mid = (l + r) >> 1;
      if (check(k, mid))
          ans = mid, r = mid;
      else
          l = mid;
  }

标签:...,887,int,Codeforces,mid,ans,Div
From: https://www.cnblogs.com/ljfyyds/p/17599102.html

相关文章

  • Codeforces Round 885 (Div. 2) 题解
    A.VikaandHerFriends看一下样例就可以发现,Vika以及她的朋友都不能走对角线,在这种情况下Vika和朋友的距离为偶数,且朋友一定追不上Vika所以直接判断Vika和朋友的距离是否都为偶数即可B.VikaandtheBridge显然贪心,枚举颜色,找到相邻距离最大的两块木板,记该距离为\(......
  • Practice on Codeforces and Atcoder in May
    CF补题题解2023.5说明:CF题直接去luogu看翻译,AT题会附上简要题意CF1821E先考虑如何高速计算权值一个显而易见的贪心是尽量在右边取括号消除,设右括号为1,左括号为-1那么我们每一次消除的括号\(i,i+1\)都满足了\(i+1\)的右边剩下的全部是右括号,代价就是往右数的个数更进一......
  • Practice on Codeforces and Atcoder in June
    \(Practice\)\(on\)\(codeforces\)\(in\)\(June\)wk,误删了4个题,但我不想补了\(CF1839D\)题意:给一个正整数序列\(a\),给定\(k\)个0,将其放进序列的任意位置里,可以进行无限次操作,每次将一个挨着0的数移动到序列的任意位置,最后删掉所有的0,求使得序列变成递增序列的最小操作......
  • Practice on Codeforces and Atcoder in July
    \(1844E\)题意:定义一个矩形\(a\)是好的,当且仅当其满足以下条件:矩形中每一个元素\(x\)都为\(A,B,C\)其中之一每一个\(2\times2\)的子矩形都必须包含三个不同的字符共用一条边的两个元素不相等给定\(k\)个限制条件,限制条件分为两类:\((x,x+1,y,y+1)\),限制\(a[x......
  • Codeforces Round 887 (Div. 2) 题解
    A.Desorting题目的核心操作就是选定一个位置\(i\),使得:对于所有\(j\lei\),\(a_j\leftarrowa_j+1\)对于所有\(j>i\),\(a_j\leftarrowa_j-1\)这样一来,操作后\(a_{i+1}-a_i\)的值就会\(-2\)因为\(a_{i+1}-a_i<0\)时,也意味着\(a_i>a_{i+1}\),所以就达到了要求那么题......
  • Educational Codeforces Round 152 (Rated for Div. 2) D. Array Painting
    初始所有点都是蓝色的,给定一个数组,每个元素为0,1,2等值,两种操作,选定一个点花1元变红,或者选定一个为1或者2的红色点,减去一个价值,让周围的点变红,最后所有点都要变红思路:贪心,对于一个数组来说我们找寻连续的不等于0的一段,判断每一段最多所能变红的存在两种情况010,这种情况花1可以最......
  • Educational Codeforces Round 152 (Rated for Div. 2) C. Binary String Copying
    题目大意为给定一个01字符串,给定m个区间,对于每个区间进行一次局部排序,求能得到的字符串种类数解法:因为字符串只包含0,1两个字符,我们观察可以得到,对于不同的区间来说如果排序后一样则说明肯定是某些位置在排序过程中无贡献,因此我们只需找出有贡献的位置即可对于一个区间[l,r],来说......
  • Codeforces Round 888 (Div. 3)
    比赛链接:https://codeforces.com/contest/1851A.EscalatorConversations题意:一个扶梯,共m阶,n人站,每个台阶高k,Vlad身高H,Vlad任意站,问有多少人站在这个扶梯上正好和Vlad齐平满足abs(H-h[i])%k==0&&abs(H-h[i])/k<=m-1&&H!=h[i]即可B.ParitySort题意:给出......
  • Longest Divisors Interval
    Smiling&Weeping----总有一个人,一直住在心底,却消失在生活里。Givenapositiveintegern,findthemaximumsizeofaninterval[l,......
  • Codeforces Round 888 (Div. 3) 补题
    独立补了一道记忆化搜索的题,https://codeforces.com/contest/1851/problem/E由于初次接触对于使用场景和注意事项都不是很熟悉,写加调估计得有3h。本题的题面保证了本题是个无环图,允许dfs函数会有出口,存图不能用链式前向图,因为非常容易构造数据使得为稠密图,所以用二维数组或vec......