#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; struct node { int w, s; int index; //储存标号 } mouse[1005]; //小鼠的信息 //先体重,后速度 bool cmp(node a,node b) { if(a.w==b.w)
写在前面 考408期间学习的时候看到的bilibili的视频先附上: 链接: link 这个视频主要应付考试,没有讲代码的思路,这里我就顺着这个视频的思路,写出代码,思路如有不清晰之处,望指出,并且可以看看这个视频。 思路 以此为例: 观察我们可以知道先求出maxL,maxL是以当前字符结尾的匹配串
http://poj.org/problem?id=1088 题目描述: Glory非常喜欢玩滑滑梯游戏,下面给出了一个n,m的滑道,其中的数字表示滑道的高度。Glory可以从一个点出发向下滑行,每次只能滑行到相邻的位置(上下左右)中高度严格低于当前高度的地方,不能重复划行已经滑行过的地方,但他希望在这个滑道上滑
http://acm.hdu.edu.cn/showproblem.php?pid=5977 点分治,对于每个重心u计算出经过u且能构成当前需要的满状态ss的方案数。 对于每条到u的路径,我们得到这条路径上有的种类的状态压缩的数字a[i] 然后枚举a[i]的每个子集(可以在calc中枚举,也可以在外面枚举存在vector)) s0,sum[s0
https://www.luogu.com.cn/problem/P3806 时隔一年半复习一下点分治。。。。 点分治模板就是nlogn的,然后内部每次要排序还要二分就是nlog^2n的复杂度。。。。812ms飘过 不过看到网上一些平方求是否有K的组合也过了??? 显然是要先合并值相同的,再枚举一个值为x的,二分找k-x的吧。。。
此题可用决策单调性来做 证明 略 引入 决策单调性(\(My blog\)) 思路 于是此题便可先用分治优化决策单调性 时间 \(O(n^2*k)\) \(101 tests\) 中 只能过前\(9\)个 \(9pts\) ? #include <map> #include <string> #include <cstdio> #include <string> #include <cstdlib> #include
[USACOW13OPEN] Photo 这是一个很棒的动态规划题 Description Farmer John has decided to assemble a panoramic photo of a lineup of his N cows \((1 <= N <= 200,000)\), which, as always, are conveniently numbered from \(1..N\). Accordingly, he snapped \(M (1 <
题目描述 一日,老师决定进行一次突击考试。已知每个学生都有一个考试能力等级,教室里一共有N个课桌,按照顺序排成一列,每张课桌可以坐两个人,第i张课桌坐的两个人的能力等级为(A[i],B[i])。现在老师决定对能力等级为K的人进行测验。他会从这N排中选择连续的L排进行测验,要求这 L排中的每
T1 方阵 题目 【题目描述】 小澳最近迷上了考古,他发现秦始皇的兵马俑布局十分有特点,热爱钻研的小澳打算在电脑上还原这个伟大的布局。 他努力钻研,发现秦始皇布置兵马俑是有一定规律的。兵马俑阵总共有n行m列,秦始皇在布置的时候每次会指定一行或一列,然后指定一个兵种,使得这一行或者
Remainder Problem 题面: You are given an array a consisting of 500000 integers (numbered from 1 to 500000). Initially all elements of a are zero. You have to process two types of queries to this array: 1 x y — increase ax by y; 2 x y — compute ∑i∈R
他人博客 数学严谨证明 超详细讲解 例题 Luogu P3812【模板】线性基 真的只是模板,上线性基简单写法: #include<bits/stdc++.h> using namespace std; #define int long long int const MAXN=1000,MAXL=60; int n; int p[MAXN]; struct LinearBasis{ long long a[MAXL+1]; v
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6667 学习了一下https://www.cnblogs.com/cly-none/p/Hall_Theorem.html 我记得我好像oi时期扫了一眼往年noi的题目的知识点看到过稳定婚姻关系这个东西,好像就是这个。 其实我也不太懂为撒。。。 #include<bits/stdc++.h> #
A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone involved in moving a product from supplier to customer. Starting from one root supplier, everyone on the chain buys products from one's supplier in a pric
传送门:https://ac.nowcoder.com/acm/contest/887/E 考场上早点开这题就好了,到最后也没有过样例 主要还是离散化区间变成点的这种线段树题写的太少了,上次写可能是17年暑假卢总挂的题。。。 18年湖南省赛那道题也是离散化后要用一个点代表一个区间,然而当时就不敢写那题 赛后想清
考场上写了一大坨树形DP,写的时候就感觉我这不是跟求树的最长链写的一毛一样 然后考后看题解,果然是k个ren所连成的子树的最长链的一半 可以利用反证法证明,如果在长度为d的最长链的中间放一个中心,如果有另外一个点到这个点的长度>(d+1)/2,那么这个点到对面的那个点的长度大于d,所
比赛总结: 看错F题意@byf 要勇于打表找规律 题解(不定更新) A EddyWalker B EddyWalker2 C Go on Strike! D Kth Minimum Clique E MAZE F Partition problem 题解:https://blog.csdn.net/liufengwei1/article/details/96729137 1 #include<bits/stdc++.h> 2
#include<bits/stdc++.h> #define For(i,j,k) for(int i=j;i<=k;i++) #define maxn 202 using namespace std; int now,head[maxn],n,m,s,d[maxn],deep[maxn],p[maxn][11],maxx; struct node{ int a,b,next; }e[maxn]; inline void add(int u,int s) { e[++n
线性基 GavinZheng敲懒的。。。 menci大佬的线性基博客 模板代码引自menci: struct LinearBasis { long long a[MAXL + 1]; LinearBasis() { std::fill(a, a + MAXL + 1, 0); } LinearBasis(long long *x, int n) { build(x, n); }
方法一:中心扩展算法 解题思路: 算法时间复杂度:$O(n^{3})$ string longestPalindrome(string s) { int idx = 0, maxL = 0; for (int i = 0; i < s.size(); ++i) { for (int j = 0; i - j >= 0 && i + j < s.size(); ++j) // 奇
解题过程 中午吃饭比较晚,到机房lfw开始发各队的账号密码,byf开始读D题,shl电脑卡的要死,启动中...然后听到谁说A题过了好多,然后shl让blf读A题,A题blf一下就A了。然后lfw读完M题(shl的电脑终于打开了,然后输入密码,密码错误。。。自闭),说AC 自动机板题,然后找板子,,,突然发现自己读错题目。后
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。
bug有两种分类方式,分为n种,又分为s种,每天找出一个bug,在每一种中的概率分别为1/n,1/s,问期望多少天能n种找全,s种也找全 设f[i][j]为当前已经找到i种和j种bug后,还需要期望f[i][j]天找全。 我们可以想到f[i][j]后一天找出一个bug,i*j/(n*s) 还是f[i][j], (n-i)*j/(n*s)得到f[i+1][j],
题目链接:戳我 对于最大子段和,我们只需要维护四个变量——maxl,maxr,maxs,sum(分别表示区间最大前缀子段和,区间最大后缀子段和,区间最大子段和,区间所有数的和) 然后合并的时候是这样的: t[x].sum=t[ls(x)].sum+t[rs(x)].sum; t[x].maxs=max(max(t[ls(x)].maxs,t[rs(x)].maxs),t[ls(x)].m