- 博客(107)
- 收藏
- 关注
原创 2017-10-18离线赛总结
失分小结: 估分:250 实际分数:240 和上一次2014day1加起来大概是500分 刚好省一 个人感觉day2比day1还水 没有AK对不起自己 前面两题发挥稳定,后面一题强行又把复杂度算错,不敢哈希。。。 套一个高精,结构常数太大TE了十分题解: C题: 由于a1、a2、a3等已知,而未知数只有一个x,且取值范围固定(1-1000000) 可尝试逐个带入,但由于a1,a2
2017-10-19 15:52:10
286
原创 2017-10-17离线赛总结
失分小结: 估分:190 实际分数:185 这次追求稳定,第一题100,第二题45,第三题40 唯一的遗憾就是没有把第二题写出来 但拿到自己该拿到的分还是最重要的 这是2011年真题,加上之前day1的成绩总和为405 420省一题解: 第一题求的是组合数,二项式定理的最基础运用第二题的模型是一个单调函数与一定值的差值表示为g(x)=abs(f(x)-s) 然后函数变成了先递减在递增,
2017-10-18 10:21:21
321
原创 二分图最大匹配(匈牙利算法)
前言:二分图最大匹配其实就是二分匹配 利用了增广路的思想实现了点对间的一一配对 若想理解匈牙利算法可点击此链接代码实现是比较简单的,匈牙利算法在很多关于匹配的题目中有很灵活的运用(纯属博主瞎逼)代码实现如下:int link[M];bool vis[N];bool Look(int x){ for(int i=0;i<edge[x].size();i++){ int
2017-10-17 17:08:07
415
原创 2017-10-16离线赛总结
失分小结: 估分:180+ 实际分数:40这次考得很不好 第一题想到正解却爆零 第二题没过样例竟然就跳过去了,(考试眼瞎。。。) 第三题组合求得不错水了40分这次第一题的爆零是因为把n和m看反了。。。十分绝望 样例故意把n和m弄成相等的,所以以后一定一定要看准n和m 分数太低也证明了这几场考试没有好好总结,还是过于浮躁,容易被考试环境所影响 其实只打打暴力分就很不错了 以后稳住暴力
2017-10-16 19:11:07
280
原创 组合——杨辉三角
杨辉三角的应用十分广泛 注意:杨辉三角的第一层是从0开始的如图二项式定理: 在二项式定理(a+b)^n=C(n,0)a^n+C(n,1)a^(n-1)b+…+C(n,r)a^(n-r)b^r+…+C(n,n)b^n至第n层第i斜列的累和是C(n,i)
2017-10-16 18:53:19
542
原创 跑步爱天天(欧拉序入门)
考试的时候已经处理出了欧拉序,但并没有关注到它的种种性质这里给出欧拉序的定义与运用 树的欧拉序是对树进行DFS的一种序列。 有两种形式: 1、在每个结点进和出都加进序列。 2、只要到达每一个结点就把他加进序列。 第一种方法得到的序列和对应的进出状态分别是: 1 2 3 3 4 4 5 5 2 6 7 7 8 8 6
2017-10-16 15:56:07
20257
原创 深搜专题——木棒
这是我写过剪枝最多的题目 总计九个剪枝一个优化 最关键的是奇偶性剪枝,可行性剪枝,最优性剪枝#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define FOR(i,x,y) for(int i=(x);i<=(y);i++)#define DOR(i,x,y) for(int i=(x)
2017-10-15 20:01:00
349
原创 2017-10-15离线赛总结
失分小结: 估分:290 实际分数:290 这次的最大收获是切分技巧 这次切分切的好即使最后一题不会做,仍能水到90分考试过程: 第一题没算复杂度,埃氏筛过了 但极限数据的确是可以轻松过的。。。 第二题深搜就过了 第三题想都没想线段树,这是这场考试的唯一败笔, 调试还花了半个小时,弄完就只剩不到一个小时了 想着正解就算想到也不一定打得出来 于是照着数据开始切切完了发现竟然有90
2017-10-15 13:57:54
285
原创 最大字典序排列
前言:又是一道裸的线段树题目 但有些线段树的用法还是以前没使用过的主要的卡点在于点之间是会交换顺序的 交换顺序后岂不要把整个线段树给更新了?? 事实上是不用的, 原因是,每次虽然会选出一个点放到最前面, 但是在此之后这个点就没用了,这个点仅仅会对排在它前面的点产生影响 最基础的找一个点在第几位的方法不就是一个个数过来嘛,如果把换到前面的那个点赋成0,即当这个数不存在,题目就豁然开朗了,询
2017-10-14 21:58:31
1827
原创 航线规划(离线+路径压缩)
前言: 一般来说,树具有很多图的特性 所以遇到图论题一般要把它处理成树的题目这题的提示其实是很明显的 树上的每一条边算是都是关键路径 当添入一条边后它在树上所形成的环上的边就都不是关键路径分析数据可知每次询问不可能都把路径遍历一遍 那么为了使路径不被遍历多次,那么采用路径压缩的处理方式既然题目只删边而不加边 那么关键路径应是越来越多 但并不能很轻松地算出每次更新后产生的关键路径反一个方
2017-10-14 21:39:33
991
原创 初赛后 after2017-10-14
这是初赛结束的晚上 team 125少了些喧嚣,群里上传了今天考试的试卷还有答案 其实对自己的分数已经有底了 但仍是不忍心在拿着试卷答案对一遍 这场初赛似乎与之前的都不同,坐在那个考场里,思绪远远没有在机房旁的 教室中考要清晰。。。xiaoC说高于80的很稳,低于70的要小心了 不能很肯定地说自己的分数能过初赛 那几个考得较低的队友嚷嚷着要退竞,滚*到三班去 没有几个人可以说自己是稳
2017-10-14 20:32:34
412
原创 bell-man
虽然现在更新有点迟了,但bellman还是一个值得学习的算法void relax(int u, int v, int weight) { if(dist[v]>dist[u]+weight) dist[v]=dist[u]+weight;}bool Bellman_Ford(){ for(int i=1;i<=n-1;i++) for(int j=
2017-10-13 20:54:14
778
原创 2017-10-12离线赛总结
失分小结: 估分:90+ 实际分数:120(50+40+30) 第二题被数据范围坑了,应该有80分的 交之前强行改掉第一题,100降50考试过程: 第一题强势看不懂 卡了一个半小时 第二题想都没想就用堆 后来发现写法是错的,正解是线段树。。。 第三题已经没有什么时间了,只打了30分暴力 最后还把第一题的正解改掉。。。小结: 第一题虽然水,但万一无法理解题意也应该放一放,不要影响
2017-10-13 15:54:19
307
原创 2017-10-10离线赛总结
失分小结: 估分:200+ 实际分数:200考试过程: 第一题算是近几场中打起来较麻烦的,但理清关系还是简单的 第二题打的也十分流畅,先2n2^n 枚举水30,再暴力n4n^4dp 前缀和优化到n3n^3再到n2n^2,然后对拍 这时离考试结束还有两个半小时 第三题先是打了暴力,感觉不是特别好,但也没有去检查它的正确性 模拟了一下发现就是个路径压缩,就开始敲,快交的的时候才调过样例,
2017-10-11 08:59:25
329
原创 2017-10-9离线赛总结
失分小结: 估分:150 实际分数:80 评价:这次考试由于花了大量时间在第二题上,导致第三题没有太多时间打暴力,第一题有没有时间去检查,最后65+0+15 考试过程: 第一题敲得十分顺手,暴力敲完敲正解,自我感觉良好,对拍了三个小时没出错,最后交的时候也没去管它了 第二题原来的时候思路十分清晰,但敲完之后发现很多态没有考虑,怎么调都调不出来,又看第三题没有思路,想着第二题水点分再去打
2017-10-11 07:56:28
321
原创 等价表达式
这道题若老老实实的因式分解是会超时的 所以我们可以给A带一个值,然后判断两式的值是否相等 但这样可能会有重复,所以可以多次判断是否相等首先要把中序表达式转成后序表达式 弄两个栈 一个后序栈,一个暂时符号栈 1.当当前为运算符号时,判断栈顶优先级是否大于等于该符号 若是,则弹出至后序栈 直到不满足 然后把当前运算符放进符号栈 2.当为左括号时,放入符号栈 3.当为右括号时,弹出符号栈
2017-10-10 13:44:29
1423
原创 Paths(树上的贪心)
当数据为一条链的时候 很显然可以用类似于看电视的贪心按尾排序 可以把这个引申到树上首先,去每个路径的收益为一,这与看电视相似 我们应该自己创造一个顺序 使取了这个点之后,满足一段区间具有最优解我们按照路径两端点LCA的deep由深到浅排序当我们取了i这个点之后,满足i的子树不再会被取到 由于之后路径的lca的deep会大于或小于当前i的lca的deep 这里分三种情况: 1.下一个点的
2017-10-10 11:06:37
410
原创 字符串hash
字符串hash可以快速判断出两字符串是否相同要提供一个base(质数) unsigned long long 来自然溢出 还要存每一位的base主要代码实现如下#define Base 233#define ull unsigned long long char A[M];ull p[M],Hash[M];void Hash(n){ p[0]=1; FOR(i,1,n)p
2017-10-10 08:32:20
381
原创 完美队形(区间dp)
前言:感觉这是道神题,某神犇的代码只有300b+这题最难点在于状态的定义 可以很清楚地知道这应该是大区间转小区间 或者说是在一个范围内转移状态 但这个范围有不能枚举 而这题的正解优越性在于使用线性的遍历保证了区间的范围,使状态可以轻松地转移重点看for的顺序:#include<cstdio>#define FOR(i,x,y) for(int i=(x);i<=(y);i++)#defi
2017-10-08 19:39:58
603
原创 四点旅行
这题有两个思考点: 1.如何快速算出所有点的最短路 2.如何快速地找出那四个点由于边权为1,所以可以使用bfs直接找最短路,复杂度为n*n,比floyd快 分析数据可知,解法不能超过n*n 我们若枚举中间两个点,其实就可以贪心地算出这两个点分别对应的最远点 但可能会重复,其实解决方案很简单,只用记录离这个点最远,第二远,和第三远的点就好了FOR(i,1,n)bfs(i); FOR(
2017-10-08 16:24:24
472
1
原创 删除数字
这题也有很明显的线性关系,要求一串数字单调不递减 我们只需知道前面的那个数是否比自己大就好在预处理每个数的组成方案后,后面的就是线性dp了 枚举前一个数的方案,与后面一个数的方案 由于前面一个数的组成方案已经求出来了,可以使用前缀和+二分把这一维优化成logn 最后复杂度为n2lognn^2lognFOR(i,1,m) { FOR(j,1,Way[i]) {
2017-10-08 16:17:35
813
原创 弹钢琴
这是一道裸的求组合数的题目 一共有两种写法 一种是用dp递推组合数 公式为C[i][j]=C[i][j−1]+C[i−1][j−1]C[i][j]=C[i][j-1]+C[i-1][j-1] i表示一共有几个数,j表示取几个数 复杂度为n*m 代码实现:sort(A+1,A+n+1);dp[0][0]=1;long long ans=0;FOR(i,1,n) { FOR
2017-10-08 15:41:03
719
原创 2017-10-8离线赛总结
失分小结: 估分:230 实际分数:140 评价:本来前两题可以AC的,结果放上暴力却没有加else,小数据会跑两遍 结果就一题50,一题60了(这样都有那么多分(#゚Д゚))考试过程: 第一题先打了暴力(20分钟) 第二题打完暴力后想到正解,开始对拍 回来看第一题,想到优化,开始对拍 个人感觉这次考试特别稳 第三题想了一会,先floyd n^4暴力水30 后来花了好久写了自以
2017-10-08 14:24:26
267
原创 刷漆升级
虽然说这题暴力有95, 但正解的想法还是很值得学习的 对于一个时刻更新的区间,且这个区间有许多要更新的值 使用线段树的话,在更新子树时复杂度会很高 这里采用map+分块的方法 复杂度约为O(nloglogn)#include<cstdio>#include<cmath>#include<map>using namespace std;#define M 100005#define
2017-10-07 22:27:48
466
原创 2017-10-7离线赛总结
失分小结: 估分:(玄学) 实际分数:300收获:写题前仔细分析题目,好好思考考试过程: 第一题真的想不到,只好打个表,结果由于数据半天没输出来,心态爆炸,有前前后后折腾了半个小时 第二题先是打了个n*n暴力,又调了半天,这时考试只剩下两个小时 第三题思考了大约十分钟,然后想到了正解,代码实现比较快,一个小时就打完了 又回去思考第二题,调着调着就有O(n)算法了 但由于时间紧迫 这次
2017-10-07 19:36:26
335
2
原创 2017-10-7离线赛题解
题A: 记x的位数之和为A(x) 则满足:A(x2)=A(x)∗A(x)A(x^2)=A(x)*A(x)这道题的暴力写法是枚举左区间到右区间的所有数 但由于r<=1e9 这样的时间复杂度只能水80分 观察x可知,x*x最多为1e18 则A(x*x)最大为18*9=162 则A(x)只有<=12时才能满足A(x2)=A(x)∗A(x)A(x^2)=A(x)*A(x) 所以可以dfs穷举
2017-10-07 19:00:32
479
1
原创 高精模板
#include<cstdio>#include<cstring>#include<iostream>using namespace std;#define The Bignum of AK#define FOR(i,x,y) for(int i=(x);i<=(y);i++)#define DOR(i,x,y) for(int i=(x);i>=(y);i--)char str[10
2017-10-06 22:31:14
335
1
原创 堆的实现
参照jjh神犇struct Heap{ Node W[M]; int sz; void Heap(){sz=0;} void push(Node x){ int p=++sz,q; while(q=p>>1){ if(x<W[q]) W[p]=W[q],p=q; else break;
2017-10-06 19:40:27
244
转载 欧拉回路与欧拉道路
欧拉回路与欧拉道路图G的一个回路,若它恰通过G中每条边一次,则称该回路为欧拉(Euler)回路。 如果一个图只是形成一个连通所有节点的链,且每一点只走一次,则成为欧拉道路。 具有欧拉回路或欧拉道路的图称为欧拉图(简称E图)。 有向图的欧拉回路 一个有向图存在欧拉回路的前提条件是这个图是个连通图,其次要求其每个点的入度等于出度,或者其中有一个点的出度比入度大1,另一个点的入度比出度大一这样就存
2017-10-06 18:40:58
703
原创 引水入城
这是一道NOIP2010真题,考察了区间覆盖问题和对题干的分析分析数据可知:若一个供水点不能在干旱区覆盖一个区间,那么那些不能被覆盖到的点将永远不会被覆盖到证明:若一个供水点不能覆盖一个区间,则这个点至少覆盖了两个不相邻的点(不然就视为连续的区间),供水点到两个点的路径会构成一个闭区间,而若有路径到里面的点,则必会经过这些路径上的某个点,这与之前的条件相矛盾既然是一个区间,那么若能覆盖到所有点,则每
2017-10-06 15:51:24
419
原创 2017-10-6离线赛总结
失分小结:估分:240 实际分数:260 评价:前面两题较为稳定,都AC,第三题运气不错,原来预估m^4只有40,结果卡了60 知识漏洞: 熟记STL数据结构的用法 考试过程: 第一题15分钟敲好暴力和正解,开始对拍 第二题15分钟敲好暴力和正解,也开始对拍 第三题本来可以bitset强卡常到90(tyvj的测试结果),结果由于忘了怎么求bitset里i的个数,m^3被强行弄成m
2017-10-06 15:09:58
284
原创 做题收获(2017-10-5)
1.加分二叉树这是一道NOIP真题 主要考察了分治与记忆化搜索难点: 如何记录父亲节点收获: 可以利用区间左右端点记录该区间的一些特殊值2.守望者的逃离这题可以一题多解:如dp,贪心,终态枚举等 主要研究贪心难点: 如何平衡两种决策收获: 当有两种决策的时候不妨记录两个方案各自的值, 然后时刻取最优解部分代码:while(--t){ if(M>=10)now+=60,M-=10
2017-10-05 10:30:52
530
1
转载 先序遍历用于优化树形分组背包问题
转自 国家集训队 何森 论文【问题描述】 什么是树形背包?简单的说就是在一棵有N个节点的树上,每个节点都相当于一件物品,每件物品都有一个价格和一个得分对于物品a,设其父节点为father[a],那么你必须购买了father[a]后才能购买a。现给你M元现金,要求求一个购买方案,使得物品的总得分最大。 我们见过很多此类题目:重修道路、技能树、选课……【分析】 我们很容易想到一个树形动态规划
2017-10-04 20:53:37
667
原创 2017-10-4离线赛总结
失分小结:估分:300 实际分数:260 评价:这次考试虽然说是真题,但题目比较水。第一题炸了40 知识漏洞 : 第一题要调试,不能过了样例就不管他考试过程: 由于肚子疼,想赶紧刷完第一题 导致第一题做的太快,没有调试,过了样例就没管它了 第二题是一个简单的建树,然后稍微求一下和就好了 第三题dp n*m 复杂度稳过小结:第二次倒在第一题,第一题真的得重视!!
2017-10-04 19:33:43
297
原创 2017-10-3离线赛小结
失分小结:估分:260 实际分数:230 评价:第三题卡常卡不好,前两题能保证对是不错的(对拍大法好!!!)知识漏洞 : 并查集的使用并不熟练考试过程: 昨天第一题花了十分钟打暴力,五分钟打正解 qwq 但注意开了long long,有些人没开就炸90了第二题一看就有了思路,类似于基因重组,可以用dp 从时间复杂度n*m*m优化到时间n*m空间n*m再优化到时间n*m空间m*2 虽
2017-10-04 08:22:08
354
原创 道路评价
题目描述 乐乐的家乡,进行了道路改进,n户人家,用n-1条道路连接,形成一棵树。 他想通过程序来评价一下这些道路的性能。从x点到达y点时,记录一下这条路上最长的边,和最短的边。 用它们的差值来表示x到y的方便程度。 乐乐想知道任意两户人家的方便程度之和。 输入 第一行一个整数n,表示有多少户人家。 接下来n-1行,每行三个整数a、b、c,表示有一条长的为c的边,连接编号为a
2017-10-04 08:08:27
761
原创 迪杰斯特拉
迪杰斯特拉是一个经典的图论算法 利用优先队列优化使复杂度由n*n优化到n*logmstruct SP{ int dis[M]; typedef pair<int,int> P; priority_queue<P,vector<P>,greater<P> >q; void dij(int x){ memset(dis,-1,sizeof(dis));
2017-10-03 16:19:11
442
原创 USACO安全路径
这题是道神题,虽然考试时并没有时间去看这道题目由于是牛i从牛棚1到牛棚i的路径是一样的 我们可以证明:可以生成一个最小路径树同时还可得出一个定理:使变化后的路径最优,那么最多添加一条边设我们添加一条长度为len,连接x和y的边 那么它会构成一个环,且这个环的其他点都存在与x与y到其最近公共祖先的路径上(设这个环上的点为a)。 这时到这些点的路径即可更新,新的路径为newdis[a]=dis[x
2017-10-03 08:31:05
574
原创 最大独立子集
题目描述 独立集是指两两不相邻的节点构成的集合。 求一棵树中,独立集的个数。(空集也算独立集) 输入 第一行一个整数n,表示树中节点的个数。 第二行n-1个数,表示每个节点父亲节点的编号。父节点的编号一定小于该节点。 输出 输出一个整数,表示独立集的个数,方案数较多,对1000000007取模。这是道由2012年NOIP初赛问题求解第二道改编过来的题目 可以用树形dp的思想求解:
2017-10-02 19:48:36
1225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅