首页 > TAG信息列表 > templateinline

快读模板(附带快写)

//from TheOnlyMan #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include<iostream> #include<algorithm> using namespace std; typedef long long ll; template<class T>inline void read(T&x) { x=0;

[NOI2015]品酒大会

题目 传送门 给定一个字符串 \(S\),求 \(S\) 中 \(\forall i\in[0,n)\) 求有多少对后缀满足 \(\text{Len}(lcp)\ge i\),以及满足条件的两个后缀的权值乘积的最大值. 题解 首先将问题转化为求 \(\text{Len}(lcp)=i\) 的有多少,然后对于第一个询问求后缀和,对于第二个询问求后缀最大. 对

20190922CSP-S模拟

这个是USACO 2019 JAN Gold的原题,可能因为过于水,所以我即使八点多才开始做也提前ak来写一篇题解。。 A.Cow Poetry 显然押同一韵的行只需要最后一个词属于一个韵部,前面长度$K-s_i$随便排,DP一下长度$i$的有多少种,类似于背包转移,只是把物品放在内层,容量放在外层枚举,这样保证顺序不同

poj3280 Cheapest Palindrome[区间DP]

poj我怎么一天到晚做的全是普及组CSP-J类的题目啊 发现回文中心肯定是在串内部的。而一个串两端如果不一样,肯定是要动的。也就是说$S_{i...j}$只要动一端,看剩下来部分minvalue。于是这是一个基于区间的字符串DP。 设$f_{i,j}$表示区间为回文串的最小代价,如果一个串两头不同,则从$f

poj1830 开关问题[高斯消元]

其实第一反应是双向BFS,$2^{14}$的搜索量,多测,应该是可以过的,但是无奈双向BFS我只写过一题,已经不会写了。 发现灯的操作情况顺序不影响结果,因为操作相当于在固定位进行xor运算,xor是可以随便交换的,所以顺序无所谓。 那么情况取决于每盏灯是否被操作过。设这个量为未知量$x_i$。于是可

poj2018 Best Cow Fences[二分答案or斜率优化]

题目。 首先暴力很好搞,但是优化的话就不会了。放弃QWQ。 做法1:二分答案 然后发现平均值是$ave=\frac{sum}{len}$,这种形式似乎可以二分答案?把$len$移到左边。 于是二分$ave$,去找数列有没有区间和大于等于其$len$乘以$ave$的,然后卡住了。。 有一个很巧的转化,把每个数都减去一个$ave

BZOJ1787 [Ahoi2008]Meet 紧急集合[结论题]

location。 求到树上三点距离和最短的点及此距离。 这个不还是分类讨论题么,分两类大情况,如下图。 于是乎发现三个点对的lca中较深的那个lca是答案点。距离就是两两点对距离加起来除以2即可。这个通过画图真的很好理解。毫无技术含量。 1 #include<iostream> 2 #include<cstdio>

P1880 [NOI1995]石子合并[区间dp+四边形不等式优化]

P1880 [NOI1995]石子合并   丢个地址就跑(关于四边形不等式复杂度是n方的证明) 嗯所以这题利用决策的单调性来减少k断点的枚举次数。具体看lyd书。这部分很生疏,但是我还是选择先不管了。 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 typedef d

P2762 [网络流24题]太空飞行计划问题(最小割)

地址 最大权闭合子图裸题,不说了吧,求方案就是把s集遍历一遍。 错误记录:dfs那块忘判断残量了,11分×1. 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<queue> 5 using namespace std; 6 typedef long long ll; 7 template<typename T>inline char

poj2987 Firing[最小割]

题目 求选最少点个数的最大权闭合子图。(板子题) 最小割入门题,什么都不想说,丢个别人题解地址就跑。 附加几点个人理解:与s相通的S点集是闭合子图,剩下的与t相通的T点集是其他的。任意一个割都保证了有一个闭合子图是S集。 然后是选最少点个数,考虑加入最大权时存在多个方案,选的点个数

P2051 [AHOI2009]中国象棋[线性DP]

最近智商有点不在线。其实一直不在线。 题目 先是想用$f[i][j][k][0/1/2]$表示摆了i行时有j列空着,k列有了一个炮,且当下摆了0/1/2个的状态,转移方程写的出来但是极其繁琐。于是又设法听取评讲者题解修改状态,最后的012完全可以删去。那么仍可以表示这一行那些列摆过1个,那些列摆过0个

hdu3739 Anti LIS[最小割]

长度为 n≤1000 的数列 ai,其中最长上升子序列的长度为 s。至少删去多少数使得最长上升子序列的长度小于 s。 其实这题和那个求有多少不重叠LIS是一样答案的. 先放个图。   图丑别说我。 原网络的意思是从s到t是一条lis,那我们就对这个图进行破坏,求出一个最小割使它不连通即可。

P2766 [网络流24题]最长不下降子序列问题

ha~ «问题描述: 给定正整数序列$x_1,...,x_n$ 。$n<=500$ 求(1)计算其最长不下降子序列的长度$s$。 (2)计算从给定的序列中最多可取出多少个长度为$s$的不下降子序列。 (3)如果允许在取出的序列中多次使用$x_1$和$x_n$,则从给定序列中最多可取出多少个长度为$s$的不下降子序列。 (1)暴力n

P2764 [网络流24题]最小路径覆盖问题[最大流]

地址 这题有个转化,求最少的链覆盖→即求最少联通块。 设联通块个数$x$个,选的边数$y$,点数$n$个 那么有 $y=n-x$   即  $x=n-y$ 而n是不变的,目标就是在保证每个点入度、出度不大于1的前提下让选的边尽可能地多。 下面网络流建模。 利用二分图匹配建图,左右两点集都包含 n 个点,左

BZOJ4278 [ONTAK2015]Tasowanie[后缀数组+贪心]

题目 求两数组归并后的数组最小字典序排列。 嘛,可能本人在贪心这块还是太弱了(或者说什么都弱),如果不知道是字符串题估计也想不起来用sa。 显然看得出归并时字典序小的那个数组先往里面加,这就是要比较两数组后缀的rank,方法就把两串相拼做后缀排序后比较。 这里附下贪心正确性证明,反正