首页 > 其他分享 >Codeforces 杂题集

Codeforces 杂题集

时间:2022-08-20 07:33:15浏览次数:57  
标签:frac min max Min Codeforces 操作 杂题 Round

本文主要把近期 \(CF-Div.2\) 的 \(A,B,C,D\) 题进行做

Round 815

A

题意

给你两个分数 \(\frac{a}{b},\frac{c}{d}\) ,问你最少几次使两个分数相等。

Solution

首先考虑,最大的情况为 \(2\) ,(两个分子都 \(\times 0\) 不就相等了),如果输入的分数相等,答案就是 \(0\) ,否则就不可能是 \(0\) 。

让我们假设,为了使分数在 \(1\) 次操作中相等,我们必须将第一个数的分数乘以 \(x\)。那么 \(\frac{ax}{b}=\frac{c}{d} \Rightarrow x=\frac{bc}{ad}\),检验一下能被整除即可。

if (x == y)
  cout << "0\n";
else if (y != 0 && x % y == 0 || x != 0 && y % x == 0)
  cout << "1\n";
else
  cout << "2\n";

B

题意

给你一个数列 \(a_n\) ,选一个 \(l,r\) ,使得下式最大化:

\[\max(a_1,a_2,…,a_{l−1},a_{r+1},a_{r+2},…,a_{n})−\min(a_1,a_2,…,a_{l−1},a_{r+1},a_{r+2},…,a_{n})+\max(a_l,…,a_r)−\min(a_l,…,a_r) \]

Solution

显然,答案不超过 \(max_1+max_2-min_1-min_2\) ,其中 \(max_1,max_2\) 是数组中两个最大值, \(min_1,min_2\) 是两个最小值。

那么答案就是这个。

时间复杂度 \(O(n)\) 或者 \(O(n \log n)\)

C

题意

有一个由 \(0\) 和 \(1\) 组成的矩阵。

每次操作可以选择一个 \(2\times 2\) 的子矩阵,在这个子矩阵中选择一个 L 形,将这个 L 形里的 \(3\) 个数变成 0 ,注意,这个 L 形至少含有一个 \(1\) ,你想最大化操作个数,问最多操作多少次。

Solution

由于可能初始矩阵中没有一个位置可以做到一次操作仅消除一个 \(1\) ,所以我们要找到消除 \(1\) 数量最小的第一次操作,从第二次操作开始就可以做到每次消除一个 \(1\) 。先统计矩阵中 \(1\) 的个数,记为 \(sum\) ,若为 \(0\) ,则无法操作,输出 \(0\) 。否则枚举每个位置,并统计以这个位置为每一种形状的 L 形的角时,L 形内 \(1\) 的个数,只要这个个数大于 \(0\)(因为每次操作的 \(L\) 形中至少一个 \(1\) ),就将其比较并更新变量 \(Min\) 。最后 \(Min\) 就是最佳的第一次操作所消除的 \(1\) 的个数。答案即为 \(sum-Min+1\) 。

其实只要 check 一下有没有横着或者竖着的连着的两个 0 如果有,\(Min = 1\) ,若没有,\(Min = 2\) .

D

题意

Solution

for (int j = 1; j <= n; j++){
	dp[j] = 0;
	for (int k = max(j - M, 1); k < j; k++){
         	if ((a[j] ^ (k - 1)) > (a[k] ^ (j - 1))) dp[j] = max(dp[j], dp[k]);
	}
	ans = max(ans, ++dp[j]);
}

Round 814

Round 813

Round 812

Educational Round 133

Round 810

Round 809

Round 808

Round 807

Educational Round 131

Round 804

标签:frac,min,max,Min,Codeforces,操作,杂题,Round
From: https://www.cnblogs.com/xlqs23/p/16600476.html

相关文章

  • Codeforces Round #815 (Div. 2) D2 Xor-Subsequence (hard version)
    原题链接\(A>B\),总是有二进制下从高到低的前\(k\)位相等,第\(k+1\)位\(A\)是\(1\),\(B\)是\(0\)本题中\(A=a_i\oplusj\),\(B=a_j\oplusi\),这里有一个很奇妙的性质(手玩或者......
  • CodeForces-1601B Frog Traveler
    FrogTravelerdp+bfs感觉又像搜索从后往前进行状态转移,像\(bfs\)一样保证当前搜索的是消耗次数最少的状态转移因为是一个连续的区间,因此考虑当前能上升到的最大距......
  • CodeForces-1671E Preorder
    Preorder树型dp+思维\(dp[i]\)表示以\(i\)为根的子树通过变换有多少种不同的先序遍历状态转移方程:当左右子树不同,两个子树交换位置之后,没有重复的出现:\(dp[x]......
  • Codeforces #815 Div.2
    A—BurenkaPlayswithFractions思路:数论O(1)见题解题解:#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;typedeflonglongL......
  • Educational Codeforces Round 117 (Rated for Div. 2) CF1612
    https://codeforces.com/contest/1612VP过了A~E,感觉海星。F,G这几天补。主要是luogu有翻译拯救了英语不好的我。A一眼\(x+y\equiv0\pmod{2}\),否则无解。那么显......
  • Educational Codeforces Round 33 (Rated for Div. 2) 虚拟赛体验
    前言就只做出了\(A,B,C,D\)是不是很弱?A.ChessForThreeA,B,C三人下棋,A和B先下,每次下完棋之后由现在观战的人(例如第一局就由C)代替下输的人。每次输入一个数表示谁赢......
  • Codeforces Round #815 (Div. 2) 全解
    目录ABCD1D2EAad和cb,查看是不是相等或者倍数关系,特判0Bsort()cout<<a[n]+a[n-1]-a[1]-a[2]C查看所有的四方格一个四方格有2个0,ans=1的个数一个四方格有1个0,ans=1......
  • Codeforces Round #815 (Div. 2) (补题中)
    战绩:  打到一半被叫走,回来后断断续续打完的。。。A.BurenkaPlayswithFractions刚开始感觉被trick绕进去了,思路有点乱,就先去切B了。实际上如果要a/b=c/d,我们只......
  • Codeforces Round #815 (Div. 2) 【A~C】
    A.BurenkaPlayswithFractions题目描述Burenkacametokindergarden.Thiskindergartenisquitestrange,soeachkidtherereceivestwofractions($\frac{a}......
  • codeforces526D. Om Nom and Necklace【KMP】
    飞刀可能进不了前百,但加上小李就能进前三忙完入学的各种事终于赶去图书馆时,在校内一天只吃了一个面包和巧克力,已是二十点四十。武大规定二十二点半闭馆,我满心期待在两个......