摘要: 题目描述 下面是一段实现冒泡排序算法的C++代码: for (int i=1;i<n;i++) for (int j=1;j<=n-i;j++) if (a[j]>a[j+1]) swap(a[j],a[j+1]); 其中待排序的a数组是一个1~n的排列,swap函数将交换数组中对应位置的值。 对于 阅读全文
posted @ 2021-11-19 00:54 andyc_03 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 【题意】 给定一个n个点m条边的图,每一条边上有一个 0/1 的权值。 定义一条边的邻边为与它有公共顶点的边(显然一条边也是它自己的邻边)。 你每次可以选择一条边,将它所有邻边的权值异或1。 请在 m 次内将所有边的边权变为 0,保证数据有解。 【分析】 我们考虑先确定每一个点的01状态,然后在去处 阅读全文
posted @ 2021-11-18 21:55 andyc_03 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 【题意】 【分析】 【代码】 #include<bits/stdc++.h> using namespace std; typedef long long ll; const ll mod=998244353; ll p,a,b,ans,M; ll qpow(ll a,ll b) { ll res= 阅读全文
posted @ 2021-11-18 18:46 andyc_03 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 【题意】 给定一个长度为偶数的1-n的排列 求最大化$\sum_{i=1}^{n-1}|p_{i+1}-p_i|$,在满足上式最大时的最小操作次数 【分析】 显然我们会贪心的考虑让数列放成 小大小大小大 / 大小大小大小 这样的形式 这样除去最左最右两个位置,每个位置的贡献都是2次,大正小负 那么我 阅读全文
posted @ 2021-11-08 13:38 andyc_03 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 【题意】 有n堆石子,每堆$a_i$个,每次要从任意$\frac{n}{2}$堆中取至少1个(不同的堆取的数量可以不同),问先手必胜还是后手必胜 【分析】 我们考虑如果开始有多于$\frac{n}{2}$个0,那么显然先手就必败了,如果0的个数少于一半,那么先手可以通过把取$\frac{n}{2}$ 阅读全文
posted @ 2021-11-08 12:59 andyc_03 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 【题意】 给定一个01序列,求有多少个互不相同的树的欧拉序为这个序列(每次进入和回溯都记录在序列中) 【分析】 显然这是一个树的计数问题,24分的部分分就是给暴力dfs统计的 考虑对于$n\leq300$的情况该怎么处理 计数问题比较常见的方法有数学推式子,dp类型,容斥类...... 这道题目的数 阅读全文
posted @ 2021-11-07 21:18 andyc_03 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 【题意】 有一棵n个节点的数,定义f(i,j)为只保留编号为i-j的点时连通块个数 求$\sum_{i=1}^{n}\sum_{j=i}^{n}f^k(i,j)$ 对$1e9+7$取模 【分析】 首先我们需要发现,当图是一个树/森林时,连通块个数=点数-边数 所以我们需要计算的就是当前l-r编号内的 阅读全文
posted @ 2021-10-31 21:56 andyc_03 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 【题意】 有 n 名男生和 n 名女生要排成一列。女生用 0 表示,男生用 1 表示。当前队列中已经站好了 m 位同学,现在剩下的 n−m 个同学要补到队列当中。这些同学可以站到队列中的任意位置,但是队列中原本的 m 个同学的相对位置不能发生改变。 此外,还有一个规定:对于每一个同学,他右边男生的数 阅读全文
posted @ 2021-10-31 20:10 andyc_03 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 【题意】 题目链接 【分析】 很显然,如果我们能够求出f[0...N]和g[0...N]分别表示国内/外有i个停机坪时,最多的停靠飞机数量,那么max{f[i]+g[n-i]}就是答案 现在考虑如何取求f和g 我们考虑每次贪心的把新的一架飞机停在编号尽可能小的停机坪上,这样我们从前到后走一遍,借助优 阅读全文
posted @ 2021-10-25 23:15 andyc_03 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 【题意】 给一个树,求一个哈密顿路径,使得距离最大 【分析】 考虑之前的一道求点对最大和的题目 采取之前的思路,考虑每个边(u,v)的贡献都是min(size[v],n-size[v])那么我们只需要在之前的路径上减去一条边即可 这个边尽可能小,但是要保证在我们构造的解的路径上 这里我们需要观察到这 阅读全文
posted @ 2021-10-17 21:39 andyc_03 阅读(22) 评论(0) 推荐(0) 编辑