- 博客(47)
- 收藏
- 关注
原创 【CSP2019准备】洛谷-P1966 火柴排队+洛谷-P1908 逆序对
P1966火柴排队P1908逆序对火柴排队显然我们要让a中第i小的对应b中第i小的,粗略想一下,如果一个是2,3,一个是3,4。那么2,3对应3,4比2,3对应4,3来的更好,因为题目中的高度不同,而我们的例子是差最小的极端例子,所以可以得出结论成立。那么问题来了,怎么一一对应。先把a,b离散化(打上序号排序),然后根据a序号的顺序排b的序号,此时b的序号,设为数组c,c[i]表示b中c...
2019-11-11 20:51:48 195
原创 【CSP2019准备】树状数组
还剩四天想重新学树状数组的起因是洛谷P1966其实这题和树状数组关系不大,只是求逆序对的时候要用到,反正之前不会,就去看了一下,我本来因为会线段树所以基本没有学树状数组,但树状数组的常数更小,用起来也更方便,所以记录下来。基础名为lowbit的函数,设k为x的最低位的1,那么lowbit可以算出2^(k-1)。具体数学证明我也不会,总之记下来就行了。inline int lowbit(...
2019-11-11 15:47:22 208
原创 【模板】AC自动机(洛谷3808&洛谷3796)
清明时节雨纷纷,省选只能当路人。最近在狂补算法,AC自动机还是比较难理解。找到了洛谷日报上比较容易理解的版本,才勉强理解。https://www.luogu.org/blog/42196/qiang-shi-tu-xie-ac-zi-dong-ji千万记得前置技能trie树和KMP!我博客里也有有关KMP的感想。(顺带安利一发https://www.cnblogs.com/NightRa...
2019-03-19 21:11:07 256
原创 【模板】KMP与MP的区别(洛谷P3375)
学KMP的时候巨佬说我这写的是MP,仔细去查了查资料,才发现了区别。洛谷这道题用KMP是解决不了的,KMP的nxt数组和MP的nxt数组略有不同。https://www.cnblogs.com/yjiyjige/p/3263858.html这位大佬写的过程很清楚,但是程序不是怎么看得懂,而且实际放到洛谷的题上测应该也是过不了的(应该。直接放程序8#include<bits/stdc...
2019-03-18 19:49:31 491
原创 Codeforces 908E. The Number Games题解(倍增)
传送门题意:给你一棵树,删掉树上的k个点,使得剩下的点构成的图依然联通,并且使2^(点权)之和尽量大,请从小到大输出这几个点。思路:因为是2的次方,所以很自然的能想到最大的点一定要保留,否则剩下的所有点加起来都没有他大,这是很显然的而且正确的贪心策略。所有可以以最大的点为根拎成一棵树。如果我们直接想删掉哪些点其实是不好的,我们能删的点只能是叶子结点或者是一个根和他所有的子孙,但如果我们只考虑...
2019-02-02 09:52:50 323
原创 【全网最高端】中缀表达式转为后缀表达式以及求值(可用于负数,阶乘,高精度)
代码里有注释。。。直接上代码。。。#include&lt;bits/stdc++.h&gt;#define rep(i,k,n) for(int i=k;i&lt;=n;i++)#define per(i,n,k) for(int i=n;i&gt;=k;i--)#define pii pair&lt;int,int&gt;#define pb push_back#define mp ...
2018-10-17 09:31:47 951
原创 Codeforces 514C. Watto and Mechanism解题报告(字典树)
传送门题意:给你一个字典和一些询问,问你对于每个询问的字符串必须更改一个字符,能否得到字典中的某一个单词。思路:先构造一颗字典树,然后搜一遍就行了,要注意strlen不能每次都用,常数很大!#include<bits/stdc++.h>#define rep(i,k,n) for(int i=k;i<=n;i++)using namespace std;const i...
2018-10-03 14:27:34 264
原创 URAL 2020. Traffic Jam in Flower Town题解
传送门题意:有两列摩托车,一列为从南向北行驶,一列从北向南行驶,且南北向路是双行线,而东西线路是单行线,要求的是两列摩托车经过十字路口的最短时间。思路:小型模拟using namespace std;const int maxn=1000+5;string s1,s2;int n1,n2;int cnt1,cnt2,ans;int main(){ c...
2018-08-12 20:59:54 204
原创 URAL 2010. Sasha the Young Grandmaster题解
传送门题意:国际象棋的规则,给你n*n的棋盘,并且给你一个(x,y)的坐标,问你在这个位置上放战车等棋子分别能攻击到几个格子。思路:降智打击,骑士和国王都是八连通(骑士只是另一种八连通),只要周围跑一圈判断有没有出界就ok,主教左上右上等四个边界减自身坐标取xy最小值就是能攻击到的格子,战车就不用说了(n-1)*2,皇后就是主教加战车。using namespace s...
2018-08-12 20:39:55 309
原创 URAL 2018. The Debut Album
传送门题意:三个数N,A,B,你有1,2两种数字,组合成一个长为N的数列,1没有连续A个,2没有连续B个,问有几种排列方法。思路:DP,dp[i][j]表示i个数,末尾为j的方案个数,可以由i-a(或者是b,看j是1还是2)到i的不同于j的方案个数总和转移而来。using namespace std;const int maxn=50005,modn=1e9+7;int...
2018-08-12 20:33:46 236
原创 URAL 2033. Devices题解
传送门题意:有六个人,每个人都买了一台设备,每台设备都有一个价格,请你找出买的人最多且最低价格最低的那一台。思路:没啥好说的,直接上代码using namespace std;struct node{ string dev; ll price; int num;} z[10];bool cmp(node a,node b){ if(...
2018-08-12 15:36:32 222
原创 URAL2025. Line Fighting题解
传送门题意:有N个人,你要把他们分成K个队伍,每两个队伍之间每两个人都会打一架,请你求出最后分配完最多一共要打几场。思路:小学学过和相同时越接近积越大,每个队伍分配(n/k)下取整个人,多余的前几个队伍每个分配一个人就行了,然后n^2暴力求打架的次数。AC程序using namespace std;int n,t;vector<int> v;int m...
2018-08-12 15:14:23 499
原创 URAL 2011. Long Statement题解
传送门题意:有N个为1或2或3的数,问用这N个数的排列方式是不是有6中以上。思路:降智题,显然六个数以上无论这六个数是怎么组成,只要有两种数字就一定能组成6种,5种及以下我就懒得找规律了,直接全排列统计。AC程序using namespace std;const int maxn=105;int a[maxn],n,ans;set<int> se;...
2018-08-12 14:57:46 181
原创 Codeforces 883D. Packmen Strike Back(二分+DP)
传送门题意:一条长为n线上有几个吃豆人和几个豆子,你可以控制吃豆人的移动方向,选定方向之后吃豆人便会一直向这个方向走,问能吃到的最大豆子数和为了达到这个目标所需的最少时间。思路:最大的豆子数量其实就是所有的豆子,唯一有个特例就是只有一个人,有两个人以上的话,不难想出只要两人面对面走就能吃到所有豆子了,所以先处理只有一个人的情况。void straight(){ i...
2018-08-11 14:42:18 286
原创 Codeforces 292C. Beautiful IP Addresses解题报告(Brute Force)
传送门 题意:给你N个数,求符合标准ip地址规则的所有ip地址,要求每个数都至少用一次。思路:暴力dfs一位一位向后加数,我用的位运算判断是否使用过和mask比较,dfs到最后一位加点,然后把答案存起来最后输出就ok了(简称暴力)AC程序//库省略using namespace std;vector<string> ans;int mask,n;boo...
2018-08-10 11:17:42 254
原创 Codeforces 666B. World Tour 解题报告
传送门 题意:一个有N个定点M条边的有向图,dist[i][j]表示从i到j的最短距离,每条边的长度皆为1,请你给出有序的四个点a,b,c,d,使dist[a][b]+dist[b][c]+dist[c][d]最大。思路:先用SPFA处理最短路是显然的,然后就是怎么选择点的问题,既然要和最大,那么肯定是两两个点之间的距离最大,那么我们可以预处理出每个点距离最远的点,然后只暴力中间两个点,...
2018-07-24 10:26:05 343
原创 POJ 3538/Codeforces 100078D:Domestic Networks 解题报告
点击这里进入题目 题意:有N个顶点M条边,每一条边都有相应的长度,你有长度为5和长度为6的线,你要用它来覆盖这些边,使花费最小。思路:一个图上要求最小的花费,很明显要先处理最小生成树AC程序//库省略using namespace std;const int maxn=10005;int n,m,k;int fa[maxn];int mst[maxn];int n...
2018-07-20 15:41:14 202
原创 Codeforces 269D. Maximum Waterfall解题报告
点击这里进入题目 题意:在一面墙上有几块木板,给你木板在前面上的高度,左端点,右端点,你可以控制水流的方向,水流能从上面的木板流向下面的木板需要两个木板在高度上有相交以及中间没木板隔开,问最大的水流量。思路:先用一个vector,将左端点和右端点拆开记录,同时标清楚是哪一块木板,高度在哪,以及是左端点还是右端点,然后按照从左到右的顺序排序。然后遍历这个vector,遇到左端点就将这块木板压入...
2018-07-20 15:23:57 272
原创 Codeforces 95E Lucky Country解题报告
点击这里进入题目 题意:有N个国家,每个国家之间一共有M条无向路。国家会由路连成一个个联通块,然后问你要最少添加几条边,使最大的联通块的点的个数为一个幸运数(只包含4或7的数)。思路:首先要做的肯定是处理联通块,可以用dfs或并查集,把每个连通块的大小都记录下来,这时候假如把每一个作为一个单独的来处理会很慢,我们要做的是把相同大小的放在一起,记录相同大小联通块的数量,再整体dp。AC程序...
2018-07-20 15:08:06 339
原创 Codeforces 460C Present(二分+线段树)
点击这里进入题目题目大意:给你n个数,可以做出m次修改,每次修改一个长度为w的区间,给这区间每一个数字加一,问修改后数组中最小值的最大值。思路:看到区间修改和十的五次方的数据范围,很难想不到线段树,再看到最小值的最大值,也很难不想到二分,那么就直接二分最后的答案,然后用线段树维护check即可。AC程序://库省略using namespace std;cons...
2018-07-08 13:29:14 196
原创 Codeforces 371C Hamburgers(二分基础题)
点击这里进入题目题目大意:给你一个字符串表示一个汉堡的结构,一个汉堡由BSC三个字母组成,然后给你你有的BSC原料的数目,和如果要购买BSC的价格。告诉你你所拥有的金钱,问最多能做出几个汉堡。思路:很明显这符合单调性,可以直接二分出能做几个汉堡,check也很好写,基本是个二分模板题。AC程序://库省略using namespace std;int b,s,c...
2018-07-08 13:24:03 405
原创 Atcoder JAG Practice Contest for ACM-ICPC Asia Regional 2012 B - Texas hold 'em(巨型模拟)
点击这里进入题目题目大意:根据德克萨斯扑克的规则,有五张牌应该是明牌,但是此时只明了三张,告诉你你的两张手牌,三张明牌,和对手的三张明牌,求你获胜的概率。思路:模拟。模拟所有情况,一一对比,典型的思路简单,程序爆难,我大概调了两天。。。 我们拆开来看。1.首先要用一个类型来存储牌,可以用pair,但是程序这么长很容易就忘记哪个是color,哪个是number,所以还是定义一个类型...
2018-07-06 15:23:24 415
原创 2017普及组第三题 洛谷P3957 跳房子(解题报告)
点击这里进入题目 中文题我就不解释题意了。思路:很明显这个棋盘很小,只有10000个格子,那么n平方的算法就能过了,那就直接dfs暴力,可以加一个小优化,如果当前使用的钱币已经大于之前所算的最小钱币数,就不继续往下算了。程序using namespace std;const int dx[]={-1,0,1,0},dy[]={0,-1,0,1};const int maxn=11...
2018-07-04 11:25:23 625
原创 AtCoder Regular Contest 100 E:Or Plus Max(DP+位运算)解题报告
这题对于我来说是真的难。。。点击这里进入题目题目大意:言简意赅。2的N次方个数,存为Ai,令1≤K≤2的N次方−1,请你求出(i,j),使Ai+Aj最大,并且0<=i< j<=2的N次方-1且(i or j)≤K。输出Ai+Aj的最大值。思路:这一题长得是真的不像DP。 这道题虽然言简意赅,但大部分都是为了严谨,我们最要注意的就是i|j<=k这句话。用膝盖...
2018-07-02 17:38:11 402
原创 AtCoder Regular Contest 100 D:Equal Cut(前缀和优化暴力)解题报告
点击这里进入题目题目大意:依旧言简意赅。给你N个数存为Ai,切三刀,分为四组,每一组的和为b·c·d·e,要求这四个数的极差(最大数和最小数的差)最小,输出这个最小值。题目思路:看一眼数据范围就可以不用想纯暴力了。这个题我一开始也想了很久,但我后来仔细一看,发现是切三刀,而不是分为四组,要求每一组的数在数组里都是连续的,那就变得简单多了。先预处理出前缀和,暴力中间的断点,在循环中找一前一后...
2018-07-02 16:58:51 714
原创 AtCoder Regular Contest 100 C:Linear Approximation解题报告
点击此处打开题目 题目大意:这次比赛所有的题目都描述的很简单,我这种英语不好的也能一看就懂。给你N个数存为Ai,请你给出一个b,使abs(A1−(b+1))+abs(A2−(b+2))+…+abs(AN−(b+N))最小,输出这个最小值。思路:一看到绝对值,就应该想到数轴上点之间的距离,这道题虽然给b加上了i,但只要把式子拆开,一开始就把每个Ai减去i就行了。然后可以证明(或者学过)一个点到...
2018-07-02 16:47:54 571
原创 计蒜客NOIP提高组模拟Day2,Pro1蒜头君的兔子
https://nanti.jisuanke.com/t/16442 中文题不讲题意。。。只要看一眼数据范围就知道暴力模拟是肯定不行的,我们就来想一想其他方法。 这题现场也没有满分解法。。。试后得知正解是矩阵乘法,就又跑去复习了一遍矩阵乘法,其实也是很好理解的。 因为一到十岁就会死,所以一共只有十种年龄,把他们都压进一个单列矩阵(单行也行),然后因为一岁的是由零岁转移来,两岁是由一岁转移来,所
2017-07-30 21:52:02 1338
原创 7.24每日总结《我能怎么办我也很绝望啊》
今天又被布置了三道题。 100342D 100342F 100342G 只做了100342D,高精度居然还能写错。。。然而还没调对。。。 这题就是高精度+简单dp 错误代码,仅作记录。。。using namespace std;const int maxn=410;struct bign{ int siz,s[maxn],f; bign () {memset(s
2017-07-24 22:08:14 311
原创 Treap模板+Treap介绍。。。
reap 是一种平衡树。Treap 发音为[ ]。这个单词的构造选 取了 Tree(树)的前两个字符和 Heap(堆)的后三个字符,Treap = Tree + Heap。顾名思义,Treap 把 BST 和 Heap 结合了起来
2017-07-23 23:37:38 456
原创 POJ 1442 Black Box (Treap)
http://poj.org/problem?id=1442 题意:每次操作插入一个数或者GET一个数,每次GET出的是第K大的数,K在每次GET后都要加一。 题解:其实完全可以不用Treap做,为了训练一下就用Treap写了。using namespace std;vector<int> v;struct Treapnode{ Treapnode *left,*right;
2017-07-23 23:24:53 389
原创 AtCoder Grand Contest 018 A Getting Difference(比较水。。。)
http://agc018.contest.atcoder.jp/tasks/agc018_a 题意:给你N个数,每次取出两个数,再把他们差的绝对值连同这俩数扔进去,求能不能得到K。 题解:第一种情况,K膜这些数的GCD不为零是肯定做不到的,想一想就知道了嘛。。。第二种K大于最大的数也是做不到的,其他情况都可以做到。。。//库省略using namespace std;int n,k;in
2017-07-23 23:17:11 405
原创 Codeforces 816B & 816C & 816D Karen and ......(不正经专场)
主要不是为了写816B和816C的,主要是为了做个记录。 http://codeforces.com/problemset/problem/816/B http://codeforces.com/problemset/problem/816/C 一次提交,6.25日模拟。 http://codeforces.com/problemset/problem/816/D 十二次提交,7.1日搞定
2017-07-01 22:22:03 661
原创 Codeforces 776B & 776C 程序(夏洛克专场)
这里直接贴我的程序,题目和思路另翻博客B. Sherlock and his girlfriend`//// main.cpp// journey//// Created by zhangdenny on 2017/3/4.// Copyright © 2017年 Kirito. All rights reserved.//#include <functional>#inc
2017-03-17 13:12:45 965
原创 Codeforces GYM 100738C Rating Shuffle
codeforces gym 100738C rating shuffle
2016-08-08 23:00:45 614
原创 codeforces 527C Glass Carving
传送门:http://codeforces.com/problemset/problem/527/C 题目大意:你有一块玻璃,你可以横切(H)或者竖切(V),问你在每一步的时候这块玻璃上最小的那一块是什么。 解题思路: 你需要set以及mutiset来维护长度以及切的地方,然后暴力(手动滑稽)。 ac程序//// main.cpp// glass carving//// Cre
2016-07-17 21:41:18 657
原创 codeforces 234E Champions' League
传送门:http://codeforces.com/problemset/problem/234/E 题目大意:(注意要用文件)有n个队伍,每个队伍都有一个积分,按照积分高低顺序列出4个等级(每个等级n/4个,所以n一定是4的倍数),然后x,a,b,c这4个数就是一个随机数产生器,按照x=(x*a+b)mod c的规则来生成随机数,每生成一个随机数,便把这一个等级里的这个随机数所指向的队伍归类到g
2016-07-17 21:13:32 558
原创 codeforces 680C Bear and Prime 100
这烂题我居然交了3遍。 传送门: http://www.codeforces.com/problemset/problem/680/C
2016-07-03 15:44:01 748
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人