首页 > 其他分享 >补题报告之S班暑训第三场

补题报告之S班暑训第三场

时间:2023-08-01 18:35:47浏览次数:38  
标签:题解 int text 队列 补题 对角线 操作 暑训 第三场

成绩

比赛经过

\(\text{A}\) 看上去像一个贪心。由于不知道咋搞,胡出一个假的结论。\(x\) 选手在别的榜单所在位置,之后的选手优先选,多个榜单,按照满足条件的榜单数量对每个选手排序。然后模拟。事实证明,他只有 \(\text{50}\) 分。

\(\text{B}\) 没理解样例咋来的,也不知道斜对角线的明确定义。感觉题目不是很清晰。打表 \(0\) 分。

\(\text{C}\) 题,想了想 \(type=0\) 的规律,样例给了一个神奇的规律 \(x\) 和 \(a_{x+1}\) 交换?然后喜提 \(0\) 分。

\(\text{D}\) 题,无脑暴力 \(10\) 分。(本身就是冲着 \(10\) 分写的,没想 \(30\) 分的暴力。)

赛后补题+分析

\(\text{A}\) beauty

简要/形式化题意

\(n\) 个长度为 \(k\) 的队列(队列内的元素组成一个 \(1\) 到 \(k\) 的排列),按顺序循环遍历 \(n\) 个队列,每遍历到一个队列,取出队首元素,把 \(n\) 个队列所有的这个元素删除。一开始任意改变第 \(v\) 个队列,使得最后的 \(x\) 被最晚删除。求最晚删除时间。

题解

结论:遍历时跳过第 \(v\) 个队列,模拟得到的结果即为答案。

模糊的证明:总会存在一组方案,使得 \(v\) 能恰好在该算法求得的删除时间之前把所有应该已经被删掉的和不会使答案变差的元素删掉。

暴力模拟,时间复杂度 \(O(nk)\)。

AC code

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int n,k,v,x;
int a[N][N],vis[N];
int cal() {
	for(int i=1;i<=k;i++) vis[i]=0;
	for(int i=k;i>=1;i--) {
		int h=(k-i)%n+1;
		int cnt=0; 
		if(h==v) continue;
		for(int j=1;j<=k;j++) {
			if(vis[a[h][j]]) continue;
			vis[a[h][j]]=1;
			if(a[h][j]==x) return i; 
			break;
		}
	}
	return 1;
}
int main() {
	while(scanf("%d%d%d%d",&n,&k,&v,&x)!=EOF) {
		for(int i=1;i<=n;i++)
			for(int j=1;j<=k;j++) scanf("%d",&a[i][j]);
		printf("%d\n",cal());
	}
	return 0;
}

\(\text{B}\) coloring

简要/形式化题意

现在有个 \(n \times m\) 的棋盘,每次你可以将一行或者一个斜对角线(从左下到右上)的格子给染黑,请问共有多少种可能的最终状态。

题解

对于一个局面贪心地先使用行操作染色,考虑 \(n\) 个行操作以及 \(n+m-1\) 个对角线操作哪些合法。第一,对于第 \(i\) 个对角线操作,如果第 \(i-m+1\) 到 \(i\) 个操作都被使用过了,那么不使用这个对角线操作。第二,对于第 \(i\) 个行操作,如果第 \(i\) 到 \(i+m-1\) 个对角线操作都被使用了,那么我们必须使用这个操作。容易发现在满足这样的约束条件后,统计是互斥且互补的。

于是,可以 \(dp\) 求解(但不太明白咋搞,先咕着)

AC code

咕咕咕

\(\text{C}\) swap

简要/形式化题意

给出一个长度为 \(n\) 的数列 \(a\),以及一个整数 \(x\),定义一次操作为:

选择一个下标 \(i\) \((1\le i\le n)\),交换 \(a_i\) 与 \(x\) 的值。

求最少的操作次数使得数列 \(a\) 单调不降。

题解

先咕着,因为没看懂~

AC code

咕咕咕

\(\text{D}\) string

简要/形式化题意

给定一个字符串 \(s\)。若随机选择两个相同的子串。求两个子串的重合的长度的期望。

题解

先咕着,因为没看懂~

AC code

咕咕咕

考后反思

这部分分给的好少。后三题显然是超出我能力范围,第一题又是个结论题,主要是举例子找规律吧,比硬着头皮推一个模糊的证明踏实一些。

结尾

题解咋看不懂嘞?

标签:题解,int,text,队列,补题,对角线,操作,暑训,第三场
From: https://www.cnblogs.com/2021hych/p/17598727.html

相关文章

  • Codeforces Round 888 (Div. 3) 补题
    独立补了一道记忆化搜索的题,https://codeforces.com/contest/1851/problem/E由于初次接触对于使用场景和注意事项都不是很熟悉,写加调估计得有3h。本题的题面保证了本题是个无环图,允许dfs函数会有出口,存图不能用链式前向图,因为非常容易构造数据使得为稠密图,所以用二维数组或vec......
  • 牛客多校第三场-D-Ama no Jaku
    D-AmanoJaku_2023牛客暑期多校训练营3做法:2-sat先贴个代码,晚点补上思路#include<bits/stdc++.h>usingnamespacestd;#defineendl"\n"typedeflonglongll;constintN=2e3+5;chara[N][N];std::vector<int>edge[N];//bel数组记录某个点在哪个连通块里面int......
  • 暑假集训D6 2023.7.29 补题
    原比赛链接2022年华中科技大学程序设计新生赛(重现赛)官方题解华中科技大学2022新生赛(HUSTFCPC2022)题解&滚榜\(underset\)\(\underset{\sim}Λ\)\(\underset{\sim}{abcd}\)N.WalkAlone'sConjecture题意:给定一个整数\(n\),找出两个数\(x\)和\(y\),使得满足如下......
  • 牛客第四场补题 AFHJL
    牛客第四场补题AFHJLJ.Qu'est-ceQueC'est?题意:构建一个n个数的数组,满足:\(-m<=a_i<=m\)对于所有的\(1\lel<r\len\)都有\(\sum^{r}_{i=l}a_i\ge0\)思路:简单翻译就是最小字段和必须大于等于0。先来做一个简单版本:要求必须区间长度为2的情况下所有都满足上面的关系。......
  • 补题
    暑假友谊赛No.2——冰题意:n个人,m句话,用一个字符串表示一个人是否会说第i句话。选出一些人组成一个队列,要求按原来的顺序但可以不连续,相邻的两个人不能会说同样的话。求队列的种数。思路:状态压缩dp,把字符串转换成01字符串。0表示不说,1表示说。相邻两人不能会说同样的话转换......
  • 暑假集训D5 2023.7.28 补题
    首先来回顾一下\(dijkstra\)和\(SPFA\)里面\(vis\)数组的作用和区别,以及不用\(vis\)数组的影响.(今天发现之前写堆优化的\(Dijkstra\)都不加\(vis\)数组...)\(Dijkstra\)算法中,每次取出距离源点最近的一个点来更新与他相连的其他点,置\(vis\)数组为\(true\)......
  • HDU 暑假多校 2023 第三场
    目录写在前面731073047311写在最后写在前面补题地址:https://acm.hdu.edu.cn/listproblem.php?vol=64,题号7300~7311。坐牢场。老东西怎么还在圈里混啊(恼以下按个人向难度排序,标题为题库中题号。7310模拟这个过程。缩放至\(Z\%\)即将原来的某个像素覆盖的范围\((x-1,y-1......
  • 杭电多校2023 第三场
    1005直接dp即可#include<bits/stdc++.h>usingnamespacestd;intdp[5005][5005];intN;inta[5005];constintMOD=1e9+7;intmain(){intT;cin>>T;while(T--){intN;memset(dp,0,sizeof(dp));dp[1][1]=......
  • 2023牛客多校7.24补题
    J-FineLogic题意:给定n个点和m对偏序关系(x,y),构造最少的排列数目k,使得在这k个排列中至少有一个排列满足x出现在y的前面。分析:很考验思维的一道题,首先如果m对偏序关系不构成环,也就是一张有向无环图,于是用拓扑排序构造出一个合理排列即可。要是有环,就直接构造两个排列,一个是1<2<.......
  • 暑假集训D3 2023.7.26 补题
    G.P6183[USACO10MAR]TheRockGameS题意:给定长度n,构造\(2^n\)个由X和O组成的字符串,使得第一个字符串和最后一个字符串只由O组成,并且相邻的字符串只有一处不同,不得有重复的字符串.BFS貌似做不了.看题解有佬用格雷码的知识.代码如下#include<stdio.h>#include<st......