基本算法
看见我请叫我去学习
此人很懒
展开
-
Codeforces Round #578 (Div. 2)-D. White Lines
D. White Lines- 给定棋盘n×n,n\times n,n×n,其中有若干黑棋- 你手里有个橡皮擦, 每次可以擦除(i,j)(i, j)(i,j)为左上角的k×kk \times kk×k矩形内所有的黑棋- 定义一条白线: 当且仅当棋盘上某一横行或一纵行上没有黑棋- 先规定你只能使用一次橡皮擦, 求你使用完后, 最大的白线数量>> face << ...原创 2019-10-22 13:22:59 · 92 阅读 · 0 评论 -
Educational Codeforces Round 67 (Rated for Div. 2)--C. Vasya And Array
题意:给定数组的的长度,要求满足部分连续区间上升,部分连续区间下降的一个数组题面Strategy: 用差分序列维护sorted区间,然后用unsorted 区间检验是否满足;#include<bits/stdc++.h>#include<bits/extc++.h>#define oo INT_MAX#define ll long long#define ...原创 2019-07-03 16:44:34 · 99 阅读 · 0 评论 -
Codeforces Round #573
A. Tokitsukaze and Enhancement>> face << Strategy: 模拟 #include<bits/stdc++.h>// #include<bits/extc++.h>// #define oo INT_MAX#define _rep(i, a, b) for(int i = (a); i <...原创 2019-07-13 19:21:36 · 89 阅读 · 0 评论 -
Codeforces Round #570 (Div. 3)--G. Candy Box
Easy version :题意:给定一个数组m, 要求数组元素出现次数的数组的某种组合的和;某种组合: 从出现次数数组里面抽取一些数,要求这些数可以小于出现数组次数的,但是这些数全都不同可能我解释的不是很清楚strategy: 模拟#include<bits/stdc++.h>// #include<bits/extc++.h>#define oo IN...原创 2019-06-29 16:36:31 · 190 阅读 · 0 评论 -
Codeforces Round #570 (Div. 3)--F - Topforces Strikes Back
题意:给定一个数组, 要求在这数组里面选n(1 <= n <= 3)个数, S.T 这三个数的和最大, 且两两互质我感觉这次题意写的还可以Strategy: 贪心, 先排序, 找到一个最大的数,然后在删掉数组中与该数不互质的数,得到一个数组, 重复上述操作。。。。然后样例都没过,,,其实大体上是对的,但是后来才知道,要加一个特判Let’s imagine that th...原创 2019-06-30 02:05:12 · 168 阅读 · 0 评论 -
Codeforces Round #570 (Div. 3)-- Subsequences
Easy version :题意:给定字符串s,数k, 求 $ min(\sum_{i=1}^k (n - len(i_{th}lensubstring))$ 且,substrings 不可重复, n是母串的长度。可能我没说清楚stragety: BFS ,数据还比较小#include<bits/stdc++.h>#include<bits/extc++.h>#...原创 2019-06-30 17:27:22 · 247 阅读 · 0 评论 -
计算几何专题(五)
题意: 给定n个点, 围成一个多边形围成的湖,一个人绕着走。如果在某个位置不转弯直走的话会掉入湖里 (其实就是判断左转的次数)>> face <<strategy-1 : 从第一个点开始走, 利用叉积的性质来模拟{A⃗×B⃗>0,A在B的右边A⃗×B⃗=0,A⃗⊥B⃗A⃗×B⃗<0,A在B的左边 \begin{dcases} \vec{A}...原创 2019-07-10 21:01:46 · 114 阅读 · 0 评论 -
Codeforces Round #573 (Div
题意:题目的意思还是比较好懂的—给定一个平面点集, 求用一个没有上界的矩形去框这些点有几种框法>> face << strategy: wa了几发,很容易把区间算重复, 其实可以这样想, 我们沿着y轴扫, 如果这一条线上只有一个点, 那么这个点对答案的贡献就很好求, 即囊括这一个点的区间数,在该点上方的空间里,横坐标小于等于该点的横坐标的坐标数乘上纵坐标大于等于该点的坐...原创 2019-07-15 14:11:51 · 78 阅读 · 0 评论 -
牛客Laptop(离散+树状数组二维偏序)
题意 给定n个二元组, 求某种二元组–(x,y都不大于另一个二元组)的个数题面Strategy:先对其中一维离散化,然后按另一维升序排列,用树状数组统计前缀和#include<bits/stdc++.h>//#include<bits/extc++.h>// #define oo INT_MAX#define maxn 100009 #define _r...原创 2019-07-05 22:36:53 · 299 阅读 · 0 评论 -
计算几何专题(Ⅶ)
题意: 给定一个x的区间(x1, x2),然后给定n条直线,判断这些直线的交点有没有在区间(x1, x2)内;>> face << strategy: 仔细想想 就会发现 针对每两个在区间内相交的直线 都有(y1∣x=x1−y2∣x=x1)(y1∣x=x2−y2∣x=x2)<0 (y_1\mid _{x = x_1} - y_2 \mid _{x ...原创 2019-07-11 15:45:10 · 134 阅读 · 0 评论 -
异或专题-1
题意:给定一个长度为n的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为0。linksstragegy: 用两个vector存储异或值为i的左端点和右端点,针对每个相同的异或值,我们考虑每个左区间的右端点的右边有多少个左端点(画个图,显然),然后用二分查找答案;#include<bits/stdc++.h>// #include<bits/extc...原创 2019-07-07 14:58:08 · 407 阅读 · 0 评论 -
C - Computer Game - Codeforces Round #570
题意: 给定四个数字 k, n, a, b, 其中 a > b,要求最大数 i 使得 i * a + (n - i) * b < n 成立strategy : 二分 注意用longlong#include<bits/stdc++.h>// #include<bits/extc++.h>#define oo INT_MAX#define ll lon...原创 2019-06-27 23:24:13 · 221 阅读 · 0 评论 -
异或专题2
>> face << 题意:给定一个01序列Y,要求序列X的个数, 且 X满足 :Y=X⨂(Xshift(i))(i∈[1,X.size()])Y = X \bigotimes (X ^{shift(i)}) (i \in [1, X.size()])Y=X⨂(Xshift(i))(i∈[1,X.size()])其中 shift(i) 表示 x 序列 右移i位, ...原创 2019-07-08 00:35:03 · 185 阅读 · 0 评论 -
神奇的差分 CH-0304
经典的差分题目我只是书本的搬运工#include<iostream>#include<algorithm>#include<stack>#include<vector>#include<iostream>#include<climits>#include<iomanip>#include<...原创 2019-05-03 12:54:34 · 331 阅读 · 0 评论 -
二进制状压dp CH - 0103 最短Hamilton路径
今天初识状态压缩dp,这是一个很有代表性的题目题意如下Click_here_to_visit描述给定一张 n(n≤20) 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。输入格式第一行一个整数n。接下来n行每行n个整数,其中第i行第j个整数表示点i到j的...原创 2019-05-06 20:01:38 · 309 阅读 · 0 评论 -
二分经典-poj-2018
给定正整数数列A,求一个平均数最大的、长度不小于L的连续子段,输出平均值的1000倍;click_here_to_visit显然,平均和具有单调性,我们可以二分平均值,然后让每个数减去这个平均值,然后判断有没有长度不小于L的非负子段具体见代码 (虽然我知道你们只看这个)在这里插入代码片...原创 2019-05-09 22:03:45 · 196 阅读 · 0 评论 -
洛谷P1258(数学?二分?)
这是一道傻了吧唧的数学题我还推了半天其实应该把时间的方程列出来最简单:|__x__|____s-2x____|__x__|即 - > x/a=(s-2x+s-x)/b;于是乎就有:#pragma G++ optimize(2)#pragma GCC optimize(2)#include<bits/stdc++.h>using namespace std;...原创 2019-05-10 19:33:55 · 200 阅读 · 0 评论 -
CH5101--LICS(两种dp)
最长公共上升子序列–Longest-Common -Increasing-Subsequence(LCIS)如题状态:dp[i][j] 表示以a[0]-a[i],b[0]-b[j]可以构成的以b[j]结尾的LCIS的长度:状态转移方程:a[i] == b[j]a[i] != b[j]dp[i][j] = max(dp[i−1][k])+1其中0<=k&am...原创 2019-05-25 17:04:53 · 171 阅读 · 0 评论 -
(两种方法)POJ 2279 -- 线性dp || 杨氏矩阵+勾长公式
rt:Mr. Young wishes to take a picture of his class. The students will stand in rows with each row no longer than the row behind it and the left ends of the rows aligned. For instance, 12 students cou...原创 2019-05-23 21:39:42 · 302 阅读 · 0 评论 -
多元组hash表spoj-twinsnow-snowflakes
多元组的哈希判重题目链接这里提供一种错误的ac代码虽然思路错了但是还是a了数据很水的这题我原本就想,针对每个不同的六元组,维护两个int,分别表示六元组的积、和,然后用hash存pair判重,这样做是不严谨的----没有判断雪花的顺序,但是它居然ac了。虽然我运气挺好但是实现这些多元组的hash还是遇到了一些曲折的##下面介绍两种实现多元组的方法;法1—多重hash#incl...原创 2019-06-08 22:45:40 · 453 阅读 · 0 评论 -
Codeforces Round #568 (Div
A. Ropewalkers题意:给定三个坐标a,b,c, 要求要使他们两两之间相隔距离d所要移动的最少步骤;Strategy: 模拟+暴力, 先排序,然后用d减去两两之差//@Author jasonleft#include<bits/stdc++.h>// #include<bits/extc++.h>#define oo INT_MAX#define l...原创 2019-06-20 14:47:15 · 145 阅读 · 2 评论 -
Recover it! CodeForces - 1176D
题面:有两种线性筛法,都可以做这个题第一种线筛维护的是最大质因子,是最切合本题的解法:#include<bits/stdc++.h>#include<bits/extc++.h>#define oo INT_MAX#define ll long long#define db double#define mp(a, b) make_pair(a, b)#...原创 2019-06-16 12:52:45 · 256 阅读 · 0 评论 -
八数码(双向bfs + hash判重(pb_ds))
>一.八数码问题>八数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。>所谓问题的一个状态就是棋子在棋盘上的一种摆法。棋子移动后,状态就会发生改变。解八数码...原创 2019-06-05 00:00:20 · 395 阅读 · 0 评论 -
激光炸弹bzoj -二维前缀和
rt用一个二维的前缀和矩阵m[i][j]维护该范围内的最大权和;然后枚举所有的子矩阵O(n2)#pragma G++ optimize(2)#pragma GCC optimize(2)#include<iostream>#include<algorithm>#include<stack>#include<vector>#incl...原创 2019-05-03 12:25:05 · 115 阅读 · 0 评论