首页 > 其他分享 >EDU-CFR-116-Div-2解题报告

EDU-CFR-116-Div-2解题报告

时间:2023-03-01 15:45:17浏览次数:61  
标签:info 10 int note endnote 116 EDU Div problem

比赛传送门

做出来五道题。

A. AB Balance

{% note info no-icon problem %}

给你一个只含有 ab 的字符串,问怎样通过修改尽可能少的字符,使得 ab 的数量和 ba 的数量相等。

{% endnote %}

显然,ab 的数量和 ba 的数量最多差 \(1\),而当开头字母和结尾字母相同时,ab 的数量等于 ba 的数量。如果不同,修改开头或结尾字母使它们相同即可。

B. Update Files

{% note info no-icon problem %}

有 \(n\) 个电脑和 \(k\) 个数据线,其中一个电脑上有一个文件,每次可以通过数据线将文件从一个电脑传到另一个电脑上,耗时 \(1\) 小时。问至少需要几个小时才能让所有电脑都有文件。

{% endnote %}

设当前有 \(x\) 个电脑有文件:若 \(x<=k\),则通过 \(x\) 条数据线将 \(x\) 翻倍;若 \(x>k\),则通过 \(k\) 条数据线将 \(x+=k\)。暴力跑第一种情况(\(\log(k)\)),剩下的情况算一下就行了。

C. Banknotes

{% note info no-icon problem %}

有 \(n\) 中不同面值的货币,每种货币的面值为 \(10^{a_i}\),问至少需要 \(x+1\) 货币才能组成的价值最小的货币是多少。

{% endnote %}

暴力贪心模拟。先尽可能多地用面值最小的货币,再用面值第二小的货币,以此类推。具体实现细节比较多,在这里放个代码。

{% note success code %}

#include <bits/stdc++.h>
using namespace std;
int n,k,a[10];
int main() {
	int t;
	cin>>t;
	while(t--) {
		cin>>n>>k;
		k++;
		for(int i=0;i<n;i++) {
			cin>>a[i];
			int cur=1;
			while(x--)
				cur*=10;
			a[i]=cur;
		}
		long long res=0;
		for(int i=0;i<n;i++) {
			int cnt=k;
			if(i<=n)
				cnt=min(cnt,a[i+1]/a[i]-1);
			res+=1ll*a[i]*cnt;
			k-=cnt;
		}
		cout<<res<<endl;
	}
}

{% endnote %}

D. Red-Blue Matrix

{% note info no-icon problem %}

有一个 \(n\times m\) 的矩阵,每个格子有一个正整数,你需要对每一行染成红色或蓝色,使得能够找到竖线,让左边所有红格子都大于所有蓝格子的值,右边相反。输出染色方案以及竖线位置。

\(\sum n\times m\le 10^6\)

{% endnote %}

假设我们已经知道了竖线的位置,如何分配红蓝呢?考虑以行为单位,以每一行的第一个元素为关键字进行从大到小的排序,则我们发现,一定是上面几行为红色,下面几行为蓝色,而这个两条分界线,一横一竖,左上、右上为红,左下、右下为蓝,则必须满足左上的最小值大于左下的最大值,右上的最大值小于右下的最小值。我们可以对矩阵分别求从左上、右下开始的前缀最小值和从左下、右上开始的前缀最大值。枚举横、竖线,然后就可以 \(O(1)\) 判断了。总复杂度为 \(O(n\times m)\)。

E. Arena

待更新......

标签:info,10,int,note,endnote,116,EDU,Div,problem
From: https://www.cnblogs.com/cxm1024/p/17168442.html

相关文章

  • EDU-CFR-138解题报告
    比赛传送门A.CowardlyRooks题意:有一个\(n\timesn\)的棋盘,有\(m\)个位置上有车,保证互不攻击。问是否能将一个车移动一次使得仍然互不攻击。稍加思考可得,如果\(......
  • EDU-CFR-143解题报告
    A.TwoTowers题意:有两个积木塔,由红色/蓝色积木组成,你每次可以将一个塔的塔顶放到另一个塔上,问任意次操作后能否使得两座塔都是红蓝相间。可以将一个塔全部转移到另一......
  • 【比赛记录】 Codeforces Round #706 Div.2
    Problems:#NameSubmitASplitit!BMaxandMexCDiamondMinerDLet'sGoHikingEGardenoftheSunFBFSTrees题解:A:Splitit!判......
  • Educational Codeforces Round 143 (Rated for Div
    EducationalCodeforcesRound143(RatedforDiv.2)Problem-BIdealPoint给定n个线段区间\([l,r]\),我们定义\(f(x)\)为覆盖点\(x\)的线段数,我们每次操作可以删......
  • Codeforces Round #254 (Div. 1) C - DZY Loves Colors 线段树|lazytag维护区间加
    开一个变量维护同一个区间内颜色是否相同,而且显然要用lazytag了递归到颜色相同的区间时就可以直接打标记然后对于标记,维护的就是常规区间加的部分(最开始没写lazy,wa6,没明......
  • Codeforces Round #854 by cybercats (Div. 1 + Div. 2) A-B题解
    比赛链接A可以发现,每次出去的顺序一定是按照\(n->1\)的顺序。因为新加入的东西只会放在最前面。相应的,如果其已在序列中,则这个操作不会对\(1~n\)的信息产生影响。......
  • Educational Codeforces Round 143 (Rated for Div. 2)(A,C,D)
    EducationalCodeforcesRound143(RatedforDiv.2)(A,C,D)好久没有写题了,这次\(vp\)竟然连\(vs\)都不会用了,O(∩_∩)OAA这个也是差一点了,还有一个情况我的解法是没有......
  • Educational Codeforces Round 26
    EducationalCodeforcesRound26https://codeforces.com/contest/837E公式推导看明白了,但是因子求解部分的代码还不是很懂,所以还没有补A.TextVolume#include<bits/......
  • Codeforces Round #854 by cybercats (Div. 1+2) 1799 A~G 题解
    点我看题A.RecentActions注意到只有编号大于n的博客会被更新,所以每当有一个之前没被更新的过的博客被更新时,当前列表中最下面的就会被挤掉。如果这次更新的博客之前已......
  • Educational Codeforces Round 112 (Rated for Div
    EducationalCodeforcesRound112(RatedforDiv.2)CodeForces-1555DSayNotoPalindromes如果一个字符串中不包含长度2以上的回文子串,我们就说这个字符串是漂亮......