题目链接:https://zhixincode.com/contest/18/problem/C?problem_id=261 样例输入 1 4 21 23 4 样例输出 1 Yes 样例输入 2 4 31 22 33 4 样例输出 2 No 题解: 判断一个边集是否为最小边覆盖,用最笨的方法,暴力枚举边集内所有边进行删除,看删除后是否依然覆盖所有点,这个可以用线段树优化成 $O(\log n)$ 的时间复杂度,就可以过了.这是一个比较直观的做法. AC代码: #include<bits/std…
2020 CCPC Wannafly Winter Camp Day1 C. 染色图 定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任何一条边 (u,v),都有 f(u)≠f(v). 定义函数 g(n,k) 的值为所有包含 n 个点的无自环.无重边的 k 可染色无向图中的边数最大值.举例来说,g(3,1)=0,g(3,2)=2,g(3,3)=3. 现在给出三个整数 n,l,r,你需要求解:\((\sum_{i=l}^rg(n,i)…
点此看题面 大致题意: 给你一个边集的子集,问你这可不可能是这张图的最小边覆盖. 大致思路 考虑到,如果一条边连接的两个点度数都大于等于\(2\),则这条边完全可以删去. 因此,我们只要判断是否存在这样的边,就可以判断这个边集有没有可能是这张图的最小覆盖了. 代码 #include<bits/stdc++.h> #define Tp template<typename Ty> #define Ts template<typename Ty,typename... Ar>…
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog @ Problem:传送门  Portal  原题目描述在最下面.  简单的说,每个点是一个矩阵,区间赋值和区间求积. Solution: \(div2\)版本就\(O(n*m*9)\)暴力更新暴力矩阵乘法求答案就行了,代码挺短的,有需要的话去另一篇博客里有代码. \(div1\)题解就上面这个,相信大家看完应该都能\(ac\). 本题只有两种操作,区间赋值和区间求和(矩阵的积).很…
题目链接 题意 对序列进行三种操作: 1.区间求和. 2.将区间小于等于$x$的数不改变相对顺序的前提下放到$x$左边,用同样规则将比$x$大的放到右边. 3.将区间大于$x$的数不改变相对顺序的前提下放到$x$左边,用同样规则将小于等于$x$的放到右边. 思路 将小于等于和大于$x$的数字分成两类,发现同类之间的相对顺序不改变,可以通过线段树维护区间内同类数字的数量和位置来获得区间真实值,使用前缀和维护两类数字序列的任意子段和. 代码 //#pragma comment(linker, "/S…
点此看题面 大致题意: 有一个\(n\)行\(m\)列的网格图,让你给每一条边设置一个通过次数(\(\ge1\)),使其成为欧拉回路,且通过次数总和最小. 初始化 首先,由于通过次数\(\ge1\),因此首先必然设置每条边通过次数为\(1\). 对于一个\(n\)行\(m\)列的网格图,共有\(n(m-1)+m(n-1)\)条边,如下图: 所以,初始化\(ans\)为\(n(m-1)+m(n-1)\). 仔细观察上图,可以发现,中间的点以及四个角落的点都为偶点,因此只需给边上的点连边,使其全为偶…
点此看题面 大致题意: 共两轮,每轮每人有一个标签,标签相同的人必须到同一个点集合.求所有人总路程的最小值. 爬山算法 这道题貌似有三种做法:模拟退火.高斯消元以及爬山算法. 相比之下,自然是爬山算法最简单了. 实现方式 设第一轮编号为\(i\)的节点要到点\(s1_i\)集合,第二轮编号为\(i\)的节点要到点\(s2_i\)集合. 则总答案应为: \[\sum_{i=1}^n(a_i.x-s1_{f1_i}.x)^2+(a_i.y-s1_{f1_i}.y)^2+(s1_{f1_i}.x-s2…
题目传送门 sol:先通过AC自动机构建字典,用$dp[i]$表示长串前$i$位的最小代价,若有一个单词$s$是长串的前$i$项的后缀,那么可以用$dp[i - len(s)] + val(s)$转移到$dp[i]$. AC自动机 #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int, int> PII; ; const LL INF = 0x3f3f3f3f3f3f…
题目链接:https://zhixincode.com/contest/18/problem/I?problem_id=267 题目描述 输入描述 输出描述 一行一个整数表示答案. 样例输入 1 320 115 1020 2 样例输出 1 60 题解: 首先肯定的是,这 $n$ 次选择必然是分为两段的,前一段全部是召唤,后一段全部是加攻. 然后我们只需要考虑,这两段的数目即可,然后我们假设这个函数和最后的总攻击力是一个单峰函数,就可以上三分. 那么接下来考虑在确定多少张牌召唤,多少张牌加攻的前提…
题目链接:https://zhixincode.com/contest/18/problem/G?problem_id=265 题目描述 wls有一个整数 $n$,他想请你算一下有多少 $1...n$ 的排列(permutation)满足:对于所有的 $i(2 \le i \le n)$,若 $i$ 为奇数,则 $a[i−1]<a[i]$,否则 $a[i−1]>a[i]$.请输出答案 $\mod 1e9 + 7$. 输入描述 一行一个整数 $n$. $1≤n≤1000$ 输出描述 一行一个整数…