Codeforces Round #818 (Div. 2)
题目链接:http://codeforces.com/contest/1644A. Doors and Keys水题#include<bits/stdc++.h>using namespace std;#define
题目链接:点击这里 解题思路:本题可以理解为前一半是每次都爬到比自己在的更高的山,后一半是每次都下到比自己更低的山.所以答案就是2*max(a[i]) #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 998244353;
const int mx = 1
题目链接:https://ac.nowcoder.com/acm/contest/888/A解题思路:将问题转化为计算一个点作为极大全1矩阵的右下角的次数的
题目链接:点击这里解题思路:这题被强制在线了如果是离线(BZOJ 2683)可以CDQ分治 + 树状数组做.所以只能用KDtree了.若每次都将新节点插入原DKT中,最终会导致树会非常的不平衡,而失去了意义,导致超时.所以我们要设置一个阈值,当节点数到达阈值时就对KDT进行重构保证稳定.#include<cstdio>
#include<cstring>
#include&
题目链接:https://codeforces.com/contest/1260A - Heating #include<bits/stdc++.h>#define inf 0x3f3f3f3fusing namespace std;typedef unsigned loef pai...
解题思路:如果有一个字符数量超过一半那么肯定无解,否则就算现在已有的对数,如果有个字母的对数超过已有对数的一般,那么答
题目链接:点击打开链接KM算法具体了解:点击打开链接#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
const int mx = 3e2 + 10;
typedef long long ll;
int n,m,w[mx][mx],lx[mx],ly[mx];
int slack[mx],cp[mx]
容量变为inf这样确保他们不会变成满流也不会影响到满流边变成不满流,也就是割边还是不会被他影响。将满流边容量+1,首先我们知道不是...
题目链接:https://vjudge.net/problem/CodeForces-552D 解题思路:枚举每个边,以这条边为直线上面的点
h>#define fi first#define se secondusing namesp...
题目链接:https://www.luogu.org/problemnew/show/P3402解题思路:可持久化并查集也就是可持
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6346解题思路:这题卡dfs的KM所以只能用纯N^3的bfs#include<bits/stdc++
题目链接:点击打开链接本题简单剖析出来就是固定其中一个串然后另一个串旋转到一个位置值得答案值最大.我们发现每次求值的复杂度是O(n),一共有n种旋转方法,所以总复杂度是O(n^2),如果把这n种都综合起来的话不就是近似多项式乘法了吗?那么怎么转换呢?看下面的图以n=5为例,那么5种旋转方式的值分部在多项式的哪里呢?从图看出就是x^4,x^3和x^8,x^2和x^7,x^1和x^6,1和x^5.总结
证明最大匹配数==最小覆盖点数点击打开链接#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mx = 1e2 + 10;
int n,m,xi[mx*mx],yi[mx*mx],cp[mx];
bool vis[mx][mx],vic[mx];
bool pipei(int x)
{
题目链接:点击打开链接题解思路:一开始直接每个枚举T了,后来直接找有连接的居然过了 = =。每次看这个
后缀自动机:利用right集合的包含关系,利用一开始的原串的前缀串的最右端,去更新其他点righ
题目链接:点击打开链接 题解思路:这图咋一看就是图论,假设我引爆i点能使j点也引爆,那么就将i
链接:点击打开链接题解:一.可以按单位价值排序,然后一直取到超过m为止,这里可以知道要是正好取到m那么这个配置肯定是最优的,剩下的两种情况就是m-1,和m-2那么就要dp四种情况,1.从剩下的拿出填满它.2.从已取当中拿去一出来从剩下的拿2进去.3...4...以此类推,可以发现我们最后只需要dp剩下1-5的质量就可以了二.考虑质量1和质量2的情况的最优,最后再对质量3枚举就行了。一:#inclu
解题思路:本题坑爹就是着火点数量,一开始还以为只有一个。。。,先将着火点放入队列中,最后放人在的点,然后进行bfs就行了。代码:#include#include#include#include#include#includeconst int mx=1e3+10,co[4][2]={1,0,0,1,-1,0,0,-1};;typedef long long ll;u
题目链接:点击打开链接解题:经典AC自动机题目代码:#include<iostream>#include<algorithm>#include<stdio.h>#include<string.h>#include<queue>using namespace std;typedef long lo...
题目链接:点击打开链接题解思路:应用莫比乌斯就是处理容斥,这里用原始的容斥肯定超时。代码:#include#include#include#includeusing namespace std;typedef long long ll;int n,m;const int mx = 1e5+10,mod = 1e9+7;int mu[mx],pri[mx]
题解:以1为例 枚举1-1,10-19,1
题目链接:点击这里 解题思路:如果我们已经知道区间(l,r)的逆序对值W,现在对m进行标记,l<=m<=r.那么区