有些题目可以进行二维dp,当然这题用四维也可以做。 我们先做每一行,f[][][],表示第i个用j次,涂前k个的最大值。 做完后,可以把它看作分组背包问题,每个木板都是一个物品,再跑一边dp即可 #include<bits/stdc++.h> using namespace std; const int N=3e5+10; int f[55][2510][55]; int g[
题意 \(n\)个二元组\((a_i,b_i)\),\(a_i\in[0,10^9],b_i\in [1,3]\),有效区间\([l,r]\)为区间内\(cnt1,cnt2,cnt3\)互不相等(\(cnt1\)为\(a_i=1\)的数量),有效区间的权值为\(\oplus b_i\)。求以\(r=1\sim n\)为右端点的最大有效区间 做法 若忽略有效区间的限制,是一道可持久化trie的模
题意:给你两个正整数\(N\)和\(S\),构造一个长度为\(N\)并且所有元素和为\(S\)的正整数数组,问是否能找到一个\(K (0\le K \le S)\)使得这个数组的任意_子数组_的和都不等于\(K\)或\(S-K\),如果存在则输出YES,并且输出这个数组和\(K\),不存在则输出\(NO\). 题解:这类题写多了
题目 题目 tarjan算法每次打都要翻书,于是就学了一个叫Korasaju算法的东西 程序 给定有向图,缩点,判断是不是只有一个点出度为0,是,输出,否则输出0。 #include <iostream> #include <cstring> using namespace std; const int N=2E5+10,M=2E5+10; int scc[N],sc; int to1[M],nxt1[M],he
Description Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. Note: The algorithm should run in linear time and in O(1) space. Example 1: Input: [3,2,3] Output: [3] Example 2: Input: [1,1,1,3,3,2,2,2] Output: [1,2]
题目链接 https://codeforces.com/contest/1025/problem/F 题解 一道挺有意思的计算几何题 qwq 关键在于注意到任何一对不相交的三角形之间,一定有 \(2\) 条内公切线,而一对相交的三角形之间有 \(0\) 条。 于是枚举两个点,求一下这两个点的连线两侧分别有多少点,就可以求出有多少对三
前言 一个算法的优劣好坏,会决定一个程序运行的时间、空间。也许当小数据量的时候,这种影响并不明显,但是当有巨量数据的时候,算法的好坏带来的性能差异就会出天差地别。可以说直接影响了一个产品的高度和广度。每个程序员都想用最优的算法解决问题,我们期待自己写出的代码是简洁、高效
POJ - 3268 题目链接 一道最短路问题,但是和单源对短路又不一样,这里有来回的问题 首先每头牛回的路径很简单,就是以终点为起始点来通过一个dis数组来记录他们回到原粗的距离, 因为这里是单向边,每头牛到终点的距离肯定和回到起始点的距离不一样, 这里我们考虑反向建边,又再一次把问题变
这题我们很容易想到可以先求出x的取值,再进行比对看看是否可以 但是如果我们直接求出所有x的取值复杂度会超,因为求约数的复杂度较高 所以我们考虑先求去所以质因数,再通过dfs来求约数 之后进行比对即可。 #include<iostream> #include<string> using namespace std; typedef long
C. Frog Jumps 题意 一行字符串由L和R组成,数组从1标号到n。青蛙从0的位置开始起跳,想到达n+1的位置,当他跳到L的时候只能往左跳,跳到R的时候只能往右跳,跳的范围由你来定。问最小的d是多少 思路 d = 连续最长的L+1。 代码实现 #include<bits/stdc++.h> using namespace std; int main(
先达标找规律吧,达标的时候看奇数的个数而不是偶数的个数,就能和看出来了 这个题我算pow(2,n)的时候又出现了向下取整的情况,所以就是说,以后算2的n次方 直接1ll<<n就完了。 https://codeforces.com/gym/101972/problem/J #include<bits/stdc++.h> #define endl '\n' #define _for
Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round) 比赛人数5638 [codeforces 1321A] Contest for Robots 题目有些长 总目录详见https://blog.csdn.net/mrcrack/article/details/103564004 在线测评地址https://codeforces.ml/contest/1321/probl
7-10 多项式A除以B (25分) 这仍然是一道关于A/B的题,只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数。 输入格式: 输入分两行,每行给出一个非零多项式,先给出A,再给出B。每行的格式如下: N e[1] c[1] ... e[N] c[N] 其中N
题目: 正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA。例如:给定 A=3862767,DA=6,则 A 的“6 部分”PA 是 66,因为 A 中有 2 个 6。 现给定 A、DA、B、DB,请编写程序计算 PA+PB。 输
天哪!!菜到家啦。 数学+思维。 首先求出一个周期内cnt0-cnt1=c的个数,如果C=0,那么只要在一个周期内有前缀等于x,那么答案就是-1,否则答案就是0 如果C!=0,列一下方程x=t*c+a.即x-a=t*c。,要求t为大于等于0的整数,也就是我们的判断条件。。。。唉。 #include<bits/stdc++.h> using namespac
整体二分加上一个二维树状数组数点即可。 #include <bits/stdc++.h> namespace IO { char buf[1 << 21], *p1 = buf, *p2 = buf; int p, p3 = -1; void read() {} inline int getc() { return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1
整体二分和树套树都是 $O(n \log ^ 2 n)$ 的,但是整体二分的常数更小。 整体二分就是二分答案,然后就转化成区间数点问题,把区间里小于当前mid的数标成1,然后bit查询一下,再分成左右递归做下去。 #include <bits/stdc++.h> const int N = 5e4 + 7; const int INF = 1e9; struct N
题目链接 题解 首先可以想到分组后,去掉两边都填了数的组。 然后就会剩下\((-1,-1)\)和\((-1,x)\)或\((x,-1)\)这两种情况 因为是最小值序列的情况数,我们可以考虑从大到小填数,一个组填完了最小值就是当前填的数 设\(f[i][j][k]\)表示已经填到数\(i\)剩余\(j+k\)个填了一个数的组,其
https://loj.ac/problem/10111 题目描述 给出一张图,可以有两种操作:\(①\)把一个点拆成若干点,连在这个点上的边可以任意连到拆成的点上。\(②\)将两条边自由端熔融成一个点。求最少的操作数使得这张图变成一个简单环。 思路 还是一样,我们从最简单开始,如果图是一个连通图,那
题意 \(n\)个数,有\(m\)个操作,形如: 将\(x_i\)改成\(val_i\) 将\(x_i\)加上\(val_i\) 将\(x_i\)乘上\(val_i\) 现在你可以从中选择最多\(k\)个操作(不能重复选),并按一定顺序执行,使得\(\prod_{i=1}^{n}x_i\) 第一行输出选择的操作个数,第二行按执行顺序输出方案。 思路 先考虑,一定
Problem X轴上有N个点,每个点除了包括一个位置数据X[i],还包括一个权值W[i]。点P到点P[i]的带权距离 = 实际距离 * P[i]的权值。求X轴上一点使它到这N个点的带权距离之和最小,输出这个最小的带权距离之和。 Solution 中位数最小,加权可以看成多个点。 Code #include<iostream> #includ
考前被奶了,然后没什么感觉,很冷静的水完T1,本来一直以为这会是套水题,然后才发现T2T3不可做,心态很炸地写完了,T2暴力写错了很多东西,调了好久 T1淼题 T2「状压DP」「边化点」 首先根据n很小可以想到状压 60%算法: 根据拓扑序构造DAG 定义f[s][ss]表示构造出来的DAG中 选出来的点集是s,最
题目是古埃及神话??? A. 天空龙 傻逼模拟,看来没有滑天下之大稽QAQ,也没有打错快读(大雾...) B. 巨神兵 难度爆增,一脸懵比..... 60分状压: 因为是求有向图,关于有向图好像拓扑用的很多,考虑到每个图的拓扑序是一定的 那么我们可以借此转移,设f[i][j]为当前点的状态为i,出度为零的点的度
这个题我本来看错意思了。 我以为,他所谓的替换规则(substitution) 一定是 B-->A,,,,,以此类推。 但是,通过样例我们发现,替换规则并不是这样。。。。 最大的感受就是,英语很重要,要在平时的练习中逐渐适应读英语。 #include<iostream> #include<algorithm> #include<stack> #in
链接: https://nanti.jisuanke.com/t/41403 题意: State Z is a underwater kingdom of the Atlantic Ocean. This country is amazing. There are nn cities in the country and n-1n−1 undirected underwater roads which connect all cities. In order to save energy and avo