acm
文章平均质量分 65
indiewar
擅长各种乱搞
展开
-
DP(背包)
自用向DP背包01背包normalfi=max(fi,fi−v+w)f_i = max(f_i,f_i − v +w)fi=max(fi,fi−v+w)需要按照 i 从大到小的顺序更新,确保每个物品只会选一次memset(dp,0xcf,sizeof dp);dp[0] = 0;rep(i,0,n){ cin >> v[i] >> w[i];...原创 2019-10-24 20:07:41 · 247 阅读 · 0 评论 -
Gym102174 (The 14-th BIT Campus Programming Contest)
SlovedABCDEFGHIJKL7/12O.O.OO.O.OO.O for passing during the contestØ for passing after the contest! for attempted but failed· for having not attempted yetA.两只脑...原创 2019-05-31 17:47:18 · 294 阅读 · 0 评论 -
【2019浙江省赛 - J】K Strings in the Pocket(MANACHER)
题意:给字符串S和T,要求使S变为T操作:对S的区间(l,r)反转,方法数两个字符串相等的情况,MANACHER求回文子串的个数不相等的话,找到s和t不相同的位置l,r,然后判断反转后能不能相等,不相等就不能翻转,相等的话,就往两边拓展答案。#include <bits/stdc++.h>using namespace std;#define rep(i,a,n) for...原创 2019-04-29 20:09:16 · 310 阅读 · 0 评论 -
俄罗斯农民乘法
//防止爆llll els(ll a ,ll b, ll p){ ll ans = 0; while(a){ if(a & 1) ans = (ans + b) % p; a /= 2,b = b * 2 % p; } return ans;}原创 2019-05-04 00:32:35 · 363 阅读 · 0 评论 -
树状数组模板
//树状数组struct Bit{ vector<int> a; int sz; void init(int n) { sz=n; for(int i=1;i<=n+5;i++) a.push_back(0); } int lowbit(int x) { ...原创 2019-05-04 00:23:25 · 100 阅读 · 0 评论 -
manacher模板
struct MANACHER{#define STRSIZE 2010000 char str[STRSIZE*2+5]; int radius[STRSIZE*2+5]; int str_len; MANACHER(){} MANACHER(char *tar){solver(tar);} int solver(char *tar); ...原创 2019-05-04 00:20:16 · 102 阅读 · 0 评论 -
矩阵快速幂模板
const int maxn = 2;struct Matrix{ ll a[maxn][maxn]; void init(){ memset(a, 0, sizeof(a)); for(int i=0;i<maxn;++i){ a[i][i] = 1; } }};Matrix ...原创 2019-05-04 00:18:40 · 116 阅读 · 0 评论 -
数位DP模板
int a[20];ll dp[20][state];ll dfs(int pos,/*state变量*/,bool lead/*前导零*/,bool limit){ if(pos==-1) return 1; //第二个就是记忆化(在此前可能不同题目还能有一些剪枝) if(!limit && !lead && dp[pos]...原创 2019-05-04 00:17:29 · 104 阅读 · 0 评论 -
BM模板
#include <bits/stdc++.h>using namespace std;#define rep(i,a,n) for (int i=a;i<n;i++)#define per(i,a,n) for (int i=n-1;i>=a;i--)#define pb push_back#define mp make_pair#define all(x) ...原创 2019-05-04 00:14:28 · 168 阅读 · 0 评论 -
ST表模板
普通存最大值,最小值int a[maxn];ll Max[MAXN][21];ll Query(int l,int r){ int k=log2(r-l+1); return max(Max[l][k],Max[r-(1<<k)+1][k]);}int main(){ for(int i=1;i<=N;i++) cin >> a...原创 2019-05-04 00:11:55 · 100 阅读 · 0 评论 -
Minieye杯第十五届华中科技大学程序设计邀请赛 C.Massive
首先我们把合法的前缀和离散化之后插到树状数组里面,实际上我们要维护的是一个前缀和的后缀和,在枚举的过程中,当左端点加一...原创 2019-04-22 20:50:14 · 182 阅读 · 0 评论 -
2019南昌邀请赛网络赛 I.Max answer
单调栈维护左边和右边第一个大于它的位置用ST表维护区间前缀和的最大值和最小值当前点小于0的时候就是后半部分Smin−前半部分Smax后半部分Smin-前半部分Smax后半部分Smin−前半部分Smax大于0的时候就是后半部分Smax−前半部分Smin后半部分Smax-前半部分Smin后半部分Smax−前半部分Smin#include <bits/stdc++.h>using ...原创 2019-04-21 01:14:07 · 366 阅读 · 0 评论 -
HDU 6461 hzy 和zsl 的生存挑战
一眼题,可惜在公交车上不好码代码。。。考虑一种策略,a猜和自己数相同的数,b猜和自己数不同的数。比如a的数字是0,a猜00,这时候其实答案只可能是00和01假如b的数字是1,b猜10,b正确假如b的数字是0,b猜01,a正确#include&lt;bits/stdc++.h&gt;using namespace std;int main(){ cout &lt;&lt; "1....原创 2019-03-17 10:35:29 · 477 阅读 · 2 评论 -
HDU6470 Count
好久没写矩阵快速幂(其实这题可以直接用杜教的BM板子,比赛时突然想练一下矩阵快速幂)比较难搞的是n3n^3n3考虑n3−&gt;(n+1)3n^3 -&gt; (n+1)^3n3−>(n+1)3,多了3n2,3n,13n^2,3n,13n2,3n,1然后就可以构造一个6x6的矩阵[f(n−1),f(n−2),n3,3n2,3n,1][f(n-1),f(n-2),n^3,...原创 2019-03-17 10:27:24 · 333 阅读 · 0 评论 -
智商恢复训练(中位数)
在一个有序序列里,中位数有一些很优美的性质。1货仓选址在一条数轴上有NNN家商店,它们的坐标分别为 A1…ANA_1…A_NA1…AN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。我们设在仓库左边的点有p个,右边的有q个,若p < q,当仓库向右移动的话,距离之和会减少,如p>q...原创 2019-01-31 00:01:41 · 331 阅读 · 0 评论 -
智商恢复训练(二分,三分)
整数二分1.mid在左边,[l,mid]与[mid+1,r][l,mid] 与[mid+1,r][l,mid]与[mid+1,r](在左边的意思是当mid符合条件时,寻找的范围变成左半边)int bsearch(int l, int r){ while(l < r) { int mid = l + r >> 1; if(check(mid...原创 2019-01-28 23:01:28 · 188 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day7 (Div2, onsite) G 穗乃果的考试(二维前缀和,求和公式展开)
1.二维前缀和2.求和公式展开∑i=1n∑j=1ifi∗gj=∑j=1n∑i=jnfi∗gj\sum_{i=1}^n \sum_{j=1}^i f_i * g_j= \sum_{j=1}^n \sum_{i=j}^n f_i * g_j∑i=1n∑j=1ifi∗gj=∑j=1n∑i=jnfi∗gj对于这题∑i=1n∑j=0i−1fi∗gj=∑j=0n∑i=j+1nfi∗gj...原创 2019-01-28 16:45:01 · 463 阅读 · 1 评论 -
zoj 3647 Gao the Grid
地大校赛出了这道原题,不会写,现在补一下。首先,我们很容易得到答案为C((n+1)∗(m+1),3)−C(n+1,3)∗(m+1)−C(m+1,3)∗(n+1)−斜边3点共线的情况数C((n+1)*(m+1),3) - C(n+1,3)*(m+1) - C(m+1,3) * (n+1) - 斜边3点共线的情况数C((n+1)∗(m+1),3)−C(n+1,3)∗(m+1)−C(m+1,3)∗(...原创 2019-05-20 20:04:05 · 181 阅读 · 0 评论 -
AC山岳险天下_训练记录
菜鸡队训练实录懒,有时间弄个wiki之前(2019-5-30)的训练不想记录了现场赛现场赛记录:[名称:奖项/排名]2019:CCPC 湘潭邀请赛:Cu/89训练实录:[时间 名称:通过题数/总题数,Rank:排名]...原创 2019-05-30 18:19:27 · 391 阅读 · 0 评论 -
P2375 [NOI2014]动物园(kmp)
考虑num数组与next数组的区别。如何统计数目。根据border那一套理论,s的所有border长度为fail[n],fail[fail[n]]...fail[n],fail[fail[n]]...fail[n],fail[fail[n]]...。那么,我们其实可以在求next的过程中,把这个数量进行递推,就得到了一个可以重叠版的num数组。如何去掉不重合的部分。用求next时一样的方法去...原创 2019-10-05 13:02:00 · 293 阅读 · 0 评论 -
HDU6703 array(权值线段树)
考虑建权值线段树,那么线段树存的值就是它的坐标,考虑到答案一定存在且最大值为n+1n+1n+1,可以多加一个点n+1n+1n+1对于操作1 (1,x)(1,x)(1,x),直接单点修改位置s[x]s[x]s[x] 为n+1n+1n+1(s[x]为初始位置x的值)对于操作2 (2,r,x)(2,r,x)(2,r,x),要查询区间[x,n+1][x,n+1][x,n+1]内第一个大于rrr的位置,...原创 2019-08-24 21:20:24 · 287 阅读 · 0 评论 -
P3674 小清新人渣的本愿 (bitset+莫队)
给你一个序列a,长度为n,有m次操作,每次询问一个区间是否可以选出两个数它们的差为x,或者询问一个区间是否可以选出两个数它们的和为x,或者询问一个区间是否可以选出两个数它们的乘积为x ,这三个操作分别为操作1,2,3对于操作3,我们可以很容易通过枚举约数得到。离线操作,考虑莫队对于操作1,询问实际上问的就是区间是否存在a和x-a,因为数据范围较小,用bitset维护每个值对于操作2,考虑一...原创 2019-08-06 10:30:54 · 200 阅读 · 0 评论 -
线性基训练与总结
线性基我们先考虑基的一些定义和性质。唯一表示线性无关极小生成集acm中的线性基一般是基于异或运算下的。根据第一条,我们可以解决一系列算贡献的题目。根据第二条,我们可以知道任一基里的元素不能被其他元素异或得到,进而我们得到基里的元素不能通过异或得到0。根据第三条,线性基的任何真子集不能张成原线性空间。两种矩阵对角矩阵上三角矩阵对角矩阵是通过高斯消元使1只存在主对角线上...原创 2019-07-26 10:29:41 · 248 阅读 · 0 评论 -
2019牛客暑期多校训练营(第一场)
SlovedABCDEFGHIJ8/10OØØØØØ.Ø!OO for passing during the contestØ for passing after the contest! for attempted but failed· for having not attempted yetupsolve:IG题放...原创 2019-07-21 21:28:51 · 170 阅读 · 0 评论 -
HDU6598 Harmonious Army
经典网络流模型,可以看一下论文(浅析一类最小割问题(pty))问题转化为所有的贡献−最小割a+b=B+C(考虑都在A集合,即花费为B+C)−−−−−−−(1)c+d=B+A(考虑都在B集合,即花费为B+A)−−−−−−−(2)a+d+e=A+C(考虑一个在A,一个在B,即花费为A+C)−−(3)b+c+e=A+C(考虑一个在A,一个在B,即花费为A+C)−−(4)问题转化为所有的贡献-最小割...原创 2019-07-25 09:40:35 · 720 阅读 · 4 评论 -
HDU Multi-University Training Contest 1
SlovedABCDEFGHIJKLM6/13·Ø·ØO!.Ø!·Ø!ØO for passing during the contestØ for passing after the contest! for attempted but failed· for having not attempted yetu...原创 2019-07-29 19:21:33 · 224 阅读 · 0 评论 -
2019牛客暑期多校训练营(第一场)E.ABBA
考虑题目的约束条件对于任何合法情况的前缀应满足A<=n+BA<=n+BA<=n+BB<=A+mB<=A+mB<=A+m解释贪心,A 肯定是先用 AB 的 A,再用 BA 的 A;B 同理更本质的性质是对于任何前缀,当前A的最大值只能是选完所有的A,然后B全部来自BA(这样才能有更多的A可以选择),B同理转化问...原创 2019-07-19 10:24:31 · 1369 阅读 · 8 评论 -
最大流训练与总结
*可以通过旁边的目录查看(´・ω・`),或者Ctrl + F裸的最大流P2740 [USACO4.2]草地排水Drainage Ditches#include <bits/stdc++.h>using namespace std;#define rep(i,a,n) for (int i=a;i<n;i++)#define per(i,a,n) for (int i=...原创 2019-07-15 21:08:30 · 158 阅读 · 0 评论 -
P2944 [USACO09MAR]地震损失2Earthquake Damage 2
题意:确定几个点不割,问最少割几个点使确定的点不能到达T拆点,每个点iii分成iii和i+ni+ni+n对于确定不能拆的点,iii连向i+ni+ni+n的边权为infinfinf,同理,其他点iii连向i+ni+ni+n的边权为111设置超级源点S,S连向所有确定的点,边权为infinfinf,这里要注意S不能连向所有的点,因为题意是说这几个确定的点最后不能到T,而不是所有的点不能到T...原创 2019-07-15 19:08:59 · 184 阅读 · 0 评论 -
P4662 [BalticOI 2008]黑手党(最小割)
经典的割点模型。考虑裂点操作,一个点i变成两个点iii和i+ni+ni+n,两点中间连边的权为原来点的权。因为起始点和终点可以被割,所以S=sS=sS=s,T=t+nT=t+nT=t+n输出方案时,直接在残余网络dfs(只走流量有剩余的边),最后遍历,如果一个点的入点被访问到了,但出点没有被访问到,就说明这个点被割了。最后排序输出就行了。#include <bits/stdc++.h&...原创 2019-07-15 14:14:32 · 289 阅读 · 0 评论 -
P1361 小M的作物(最小割)
题目错别字很多,且题意不清,但题目还是很好的经典的最小割模型,结果=收益和-最小割形如下面的模型有 n 个物品和两个集合 A,B,如果将一个物品放入 A 集合会得到aia_iai,放入 B 集合会得到 bib_ibi,还有若干个形如 uiu_iui,viv_ivi,wiw_iwi 限制条件,表示如果 uiu_iui 和 viv_ivi 在一个集合会获得wiw_iwi。每个物品...原创 2019-07-14 19:53:54 · 253 阅读 · 0 评论 -
codeforces 1191E Tokitsukaze and Duel
Tokitsukaze and Duel找出第一个和最后一个1,第一个和最后一个0sjf胜利的条件很简单,zero2 - zero1 < k || one2- one1 < k难点在qls的回合判断现在设计一个数组a,元素为zero2 , zero1 , one2, one1,并排序已知已经进行到qls的回合,qls不可能输,顶多once again(这里隐含了sjf的胜利...原创 2019-07-14 08:46:06 · 210 阅读 · 0 评论 -
Codeforces Round #573 (Div. 2)
SlovedABCDEF6/6OOOOØØO for passing during the contestØ for passing after the contest! for attempted but failed· for having not attempted yetA.Tokitsukaze and Enhancement(...原创 2019-07-13 16:24:41 · 196 阅读 · 0 评论 -
拉格朗日插值 板子
By 杜教namespace polysum { #define rep(i,a,n) for (int i=a;i<n;i++) #define per(i,a,n) for (int i=n-1;i>=a;i--) const int D=2010; ll a[D],f[D],g[D],p[D],p1[D],p2[D],b[D],h[D][2],C...原创 2019-06-02 15:58:45 · 225 阅读 · 0 评论 -
智商恢复训练(前缀和与差分)
1.一维前缀和,略2.二维前缀和可以通过画一个矩阵得出代数意义f[i][j]=f[i−1][j]+f[i][j−1]−f[i−1][j−1]+a[i][j]f[i][j]=f[i−1][j]+f[i][j−1]−f[i−1][j−1]+a[i][j]f[i][j]=f[i−1][j]+f[i][j−1]−f[i−1][j−1]+a[i][j]求二维前缀和的方法#define rep(i,...原创 2019-01-28 00:04:53 · 156 阅读 · 0 评论 -
NTT模板
//by waynetuinforconst int maxn = ;const int mod = ;const int root = ;template <long long mod, long long root>struct NTT { vector<long long> omega; NTT() { omega.re...原创 2018-12-31 22:53:11 · 162 阅读 · 0 评论 -
2018牛客网暑假ACM多校训练赛(第五场)A gpa(01分数规划)
关于01分数规划,可以学习这篇博客,画了图之后就非常好懂了。 %一下,orz 回到这题,我们需要的wi=si∗ci−si∗Lwi=si∗ci−si∗Lw_i = s_i * c_i - s_i*L(假如你不懂我在说什么,请看上面的blog) 然后这里我用二分写的#include <bits/stdc++.h>using namespace std;#define rep...原创 2018-08-03 21:24:41 · 195 阅读 · 0 评论 -
Codeforces Round #449 (Div. 2) C. Nephren gives a riddle
C. Nephren gives a riddle time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output What are you doing at the end of the world? Are you busy? Will ...原创 2018-07-30 10:14:03 · 141 阅读 · 0 评论 -
Educational Codeforces Round 47 (Rated for Div. 2) B.Minimum Ternary String(思维)
B. Minimum Ternary Stringtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given a ternary string (it is a string which consists only of char...原创 2018-07-15 19:20:03 · 207 阅读 · 0 评论 -
c++11 std::iota(STL)
Possible implementationtemplate&lt;class ForwardIterator, class T&gt;void iota(ForwardIterator first, ForwardIterator last, T value){ while(first != last) { *first++ = value; +...原创 2018-07-15 16:04:42 · 959 阅读 · 0 评论