11 2019 档案
摘要:这才是正确的prim算法! 真正的prim,根本不用初始化d[]数组 并且没有所谓的松弛操作 恕我直言,网上的代码都是冗余的 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt
阅读全文
摘要:倍增爬 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(getchar()); while(s<
阅读全文
摘要:https://www.luogu.org/problem/P3387 注意核心代码 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u
阅读全文
摘要:https://www.luogu.org/problem/P3386 注意对匈牙利增广路算法的理解 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u
阅读全文
摘要:贪心,很有难度!!! #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s=getchar(); wh
阅读全文
摘要:比较简单的按一定规则排序后贪心, 用相邻项交换证明 但是要高精,用phy3水了个AC
阅读全文
摘要:比较难的贪心! 预处理很多东西, 另外,写注释好像有点用!(可能是心理作用?) 反正还是写得挺顺利的??! #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline
阅读全文
摘要:一般题思想巨头: 1.贪心 get 2.动态规划 get 3.二分答案 get 4.搜索 get 5.栈与队列 get 6.分治 get 图论思想巨头: 1.最短路(径树)get 2.最小生成树(上) 3.并查集(普通,带权,扩展域)(维护连通性,表示什么属于同一类) get 4.二分图 5.树上差
阅读全文
摘要:先区间DP处理区间单词个数,在线性DP一次求出答案,注意词典里可能有重复单词 #include<iostream> #include<cstdio> #define ri register int #define u unsigned long long namespace opt { inline
阅读全文
摘要:dp题 状态自己想出来了,但是初始化没有弄好,看了题解 #include<iostream> #include<cstdio> #define ri register int #define u long long namespace opt { inline u in() { u x(0),f(1
阅读全文
摘要:期望概率,式子毒瘤 要弗洛伊德初始化,有重边(最后才看到,调了好久 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1
阅读全文
摘要:并查集维护线段树合并 b加在a上 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(getchar
阅读全文
摘要:用dfs序+子树大小 >>>线性dp 事实上这道题这样做相当于用线段树做RMQ 但是相当于依赖背包通法吧 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline
阅读全文
摘要:用dfs序+子树大小 >>>线性dp #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(getch
阅读全文
摘要:动态开点线段树 #include<iostream> #include<cstdio> #define ri register int #define u long long namespace opt { inline u in() { u x(0),f(1); char s(getchar())
阅读全文
摘要:二分答案+哈希 #include<iostream> #include<cstdio> #define ri register int #define u unsigned long long namespace opt { inline u in() { u x(0),f(1); char s(g
阅读全文
摘要:注意完全背包的意义!!! 前边状态不一定要合法! 整个s9决赛夜都在调nmdp //#pragma GCC optimize("Ofast") #include<iostream> #include<cstdio> #define ri register int #define u int name
阅读全文
摘要:二分答案+贪心 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(getchar()); whil
阅读全文
摘要:尺取法,先右挪右端点,可以了就挪左端点至不行,然后又挪右端点,一直一直一直这样子 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x
阅读全文
摘要:栈模拟,哈希 #include<iostream> #include<cstdio> #define ri register int #define u unsigned long long namespace opt { inline u in() { u x(0),f(1); char s(ge
阅读全文
摘要:比较巧妙的状压! 需要扩展的一半的为1,其余为0, 上下两行|一下就是横着放的格子 注意预处理与M有关! 本行:i&1 上行:i&1^1 从一行开始,则初始化0行 #include<iostream> #include<cstdio> #define ri register int #define
阅读全文
摘要:区间dp,递归写法, #include<iostream> #include<cstdio> #define ri register int #define u long long namespace opt { inline u in() { u x(0),f(1); char s(getchar
阅读全文
摘要:注意要遍历完整个2倍区间!!! 调了好久! #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(ge
阅读全文
摘要:贪心,倍增优化n至log(n) #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(getchar(
阅读全文
摘要:单调队列 zhk手写单调队列定义: 初始时 l=r=0 (l,r] 为有效元素 删除最左元素 ++l 删除最右元素 --r 队列有有效元素:l+1<=r ,即 l<r 取最左点 q[l+1] 取最右点 q[r] #include<iostream> #include<cstdio> #define
阅读全文
摘要:写此题时并不会multiset,就写了个树状数组 先把100,000,000的数据离散化了,最多就对映到1-200,000(理由见数据范围 开权值树状数组,即1-200,000的范围 排序后贪心思路是一样的,查询第1个大于等于是什么数时就二分 初始区间为 左端点:当前奶牛花钱最小值 右端点:N+M
阅读全文
摘要:Number2000ms 65536KB【 description】 有 N(2<=N<=15)个数 A1,A2,....,An-1,An,如果在这 N 个数中, 有且仅有一个数能整除 m, 那么整数 m 就是一个幸运数, 你的任务就是在给定A1,A2,....,An-1,An 的情况下, 求出第
阅读全文
摘要:树上分组背包模型, 即每个子树选一种状态,状态为f[x][y]表示以x为根的子树中选y个的最大价值,怎么选并没有影响 注意y>=1则x必须选,即x必须先选了,y即其子节点才能选 同样是森林,需要建立虚点N+1连向无先行课的课 #include<iostream> #include<cstdio> #
阅读全文
摘要:每个节点只与其子节点状态有关,所以设f[x][0/1]表示x点不选或选 建立一个虚点N+1链接到所有最高级的没有上司的上司,答案就是f[N+1][0],因为虚点不可选 #include<iostream> #include<cstdio> #define ri register int #defin
阅读全文
摘要:多重背包可行性贪心+dp解法 就是一个面值已经可以被组成时就尽量少用当前面值的币 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x
阅读全文
摘要:贪心 第一次用multiset,感觉还有点用好像,就是个自动排序数组,log级(堆:是不是玩不起 开始用的离散花+权值树状数组+二分,是麻烦些 #include<iostream> #include<cstdio> #define ri register int #define u long lon
阅读全文
摘要:树链剖分,差不多就是树上分块 核心思想:利用dfs序的连续性,把链和子树套在线段树上做 代码略长,记得随时取模 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inli
阅读全文
摘要:区间dp板题 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(getchar()); while
阅读全文
摘要:完全背包板子 #include<iostream> #include<cstdio> #define ri register int #define u long long namespace opt { inline u in() { u x(0),f(1); char s(getchar());
阅读全文
摘要:01背包 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(getchar()); while(s
阅读全文
摘要:dp维度优化 优化 :y=i-x #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(getchar
阅读全文
摘要:手动哈希 前缀和 比较字符串是否相同 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define ri register int #define u unsigned long long #def
阅读全文
摘要:这题太tm毒瘤了 边界一大堆 优化:优化状态,减少一维 题解:https://www.luogu.org/blog/Tony102/solution-sp703 #include<iostream> #include<cstdio> #define ri register int #define u
阅读全文
摘要:描述可也太毒瘤了 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x(0),f(1); char s(getchar()); whi
阅读全文
摘要:分块板题 #include<iostream> #include<cstdio> #define ri register int #define u long long namespace opt { inline u in() { u x(0),f(1); char s(getchar()); w
阅读全文
摘要:f[i][j]表示用a[1]-a[i]与b[1]-b[j]并且用了b[j]构成的LCIS, 优化:决策集合只增不减,记录最优就行,n^3 -> n^2 读入不知道为啥只能cin,快读要炸第四个点
阅读全文
摘要:概率dp入坑题 还以为打了多组数据,找错找了半小时。。。。。。。。
阅读全文
摘要:离散化+缩水版线段树+扫描线思想 太毒瘤了
阅读全文
摘要:利用树状数组求第k大的数 具体就是标101010101010........ 统计1个数也就是前缀和
阅读全文
摘要:https://vjudge.net/problem/HDU-3038#author=0 给出一个区间的长度 N,及 M 个子区间和, 形如:x y z, 表示子区间 [x, y] 的和为 z如果一个“子区间和”与前面的“子区间和”冲突,即为错误(而且这个“子区间和”将在接下来的判断中被忽略)。求总
阅读全文
摘要:https://www.luogu.org/problem/P2824 题目描述 在2016年,佳媛姐姐喜欢上了数字序列。因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他。这个难题是这样子的:给出一个1到n的全排列,现在对这个全排列序列进行m次局部排序,排序分为两种:
阅读全文
摘要:https://www.luogu.org/problem/P2824 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入格式 第一
阅读全文
摘要:http://noi-test.zzstep.com/contest/0x60%E3%80%8C%E5%9B%BE%E8%AE%BA%E3%80%8D%E4%BE%8B%E9%A2%98/6801%20%E6%A3%8B%E7%9B%98%E8%A6%86%E7%9B%96 6801 棋盘覆盖 0x
阅读全文

浙公网安备 33010602011771号