12 2015 档案

摘要:在倍增LCA的基础上做一些改进。开四个二位数组ma,mi,premax,submax分别表示:从i到anc[i][...]的最大,最小值,从i到anc[i][...]的最大获利,从anc[i][...]到i的最大获利。考虑如何更新?对于ma,mi,直接依照anc的方法进行更新即可。 ... 阅读全文

posted @ 2015-12-31 13:25 ziliuziliu 阅读(168) 评论(0) 推荐(0) 编辑

摘要:这题有毒。。。。。。什么鬼的数据范围。LCA模板题。#include#include#include#define maxv 300050 #define maxe 300050 using namespace std;long long n,g[maxv],nume=0,anc[maxv][30]... 阅读全文

posted @ 2015-12-30 14:59 ziliuziliu 阅读(206) 评论(0) 推荐(0) 编辑

摘要:LCA模板题,强制在线的LCA。注意:中间的循环顺序!#include#include#include#define maxv 100005#define maxe 200005using namespace std;int n,m,g[maxv],u,v,anc[maxv][25],root,nu... 阅读全文

posted @ 2015-12-30 09:43 ziliuziliu 阅读(141) 评论(0) 推荐(0) 编辑

摘要:笔者的离线LCA模板。这里并查集和dfs的使用是个妙招。#include#include#include#define maxv 10005#define maxe 20005#define maxq 105using namespace std;struct edge{ int v,nxt;}e[... 阅读全文

posted @ 2015-12-30 08:11 ziliuziliu 阅读(122) 评论(0) 推荐(0) 编辑

摘要:来自NOI2006,这玩意儿可能是历史上第一道网络流吧。记住最大权闭合子图的建图方法。还要记住网络流的边数和点数绝不能轻易定!#include#include#include#include#include#define maxv 55500 #define maxe 1000005#define ... 阅读全文

posted @ 2015-12-29 20:27 ziliuziliu 阅读(157) 评论(0) 推荐(0) 编辑

摘要:同样是tarjan此题细节超多。。。大体思路是tarjan缩点,然后只考虑入度为0的连通块,对能不能收买分别讨论即可。然后第一次忘了打时间戳。然后第二次忘了判同在一个强连通分量里的情况。#include#include#include#include#include#define maxn 1234... 阅读全文

posted @ 2015-12-27 23:16 ziliuziliu 阅读(191) 评论(0) 推荐(0) 编辑

摘要:第一问的裸的tarjan很简单,关键是第二问。我们考虑将整张图缩点,那么出度为0的点(块)可能满足条件。重点来了:如果存在两个以上的出度为0的块,则不满足条件(这两块没有任何关系)加之此题数据水。。。。。#include#include#include #include#include#includ... 阅读全文

posted @ 2015-12-27 19:41 ziliuziliu 阅读(219) 评论(0) 推荐(0) 编辑

摘要:此题为四川省选。其实我们发现只要确定了前两个格子的雷的情况,剩下的皆可递推出来。那么枚举前两个(一个?)格子的状态,然后判断最后第(n+1)个格子是否符合要求(=0)即可。比较好想吧。。。。注意把循环的上界换成min(1,a[1])依旧可过。#include#include#include#incl... 阅读全文

posted @ 2015-12-27 10:13 ziliuziliu 阅读(129) 评论(0) 推荐(0) 编辑

摘要:我到底什么时候才能学会不看题解把题写出来。。。。把所有的边从小到大排序,for一遍把当前边作为最大值,然后倒着for,更新答案即可。若不能更新答案则有IMPOSSIBLE。这是连续第二道没做出来的并查集了。某神犇说用spfa比较快。。。没验证过,也不想验证。#include#include#incl... 阅读全文

posted @ 2015-12-25 21:39 ziliuziliu 阅读(693) 评论(0) 推荐(0) 编辑

摘要:模拟,给我爆!#include#include#include#includeusing namespace std;char s[105];int n;int main(){ scanf("%s",s); scanf("%d",&n); int l=strlen(s); if (n==0) pri... 阅读全文

posted @ 2015-12-25 17:18 ziliuziliu 阅读(178) 评论(0) 推荐(0) 编辑

摘要:拓扑排序和机智的判环判合法。如果每次入队的点大于1个即为有多个拓扑序。如果该次没有点入队就是环。没时间写代码了,粘的题解。#include#includeint map[27][27],indegree[27],q[27];int TopoSort(int n){ int c=0,temp[2... 阅读全文

posted @ 2015-12-21 23:02 ziliuziliu 阅读(143) 评论(0) 推荐(0) 编辑

摘要:2013NOIP普及组压轴题。其实只要想到这个车子没停的站肯定比停的站级别低,拓扑排序,在节点入队时dis[e[i].v]=dis[head]+1维护最长路即可。但要注意此题含有大量重边,若不判重可能会tle掉。#include#include#include#include#include#def... 阅读全文

posted @ 2015-12-20 19:28 ziliuziliu 阅读(174) 评论(0) 推荐(0) 编辑

摘要:拓扑排序之即可。面对重边:新加vis数组。求不能确定的顺序:cnt,每次入队-1即可。#include#include#include#include#define maxv 10005#define maxe 25005using namespace std;int n,m,g[maxv],inq... 阅读全文

posted @ 2015-12-20 17:57 ziliuziliu 阅读(245) 评论(0) 推荐(0) 编辑

摘要:题目大意:求一条方差最小的路径,给定起点和中点。 我们先考虑方差的计算公式,可以知道:方差与路径平方和,路径长度,路径段数有关。 由于看起来数据范围较小,我们考虑dp[i=(第几个点)][j=(经过几条边)][k=(边权和)]=该限制下的路径最小平方和。 怎么实现这个dp?拓扑排序套枚举j,k刚好。 阅读全文

posted @ 2015-12-20 17:12 ziliuziliu 阅读(587) 评论(0) 推荐(0) 编辑

摘要:这个的题意是绕一圈使得圈上所有点到原来的点的距离都大于等于l。求最短周长。平移一下,几何乱搞?发现这个弧线刚好是个圆。convexhull。。这个我抄的版也不知道是什么算法但是好像靠谱。研究凸包的一个算法。#include#include#include#includeusing namespace... 阅读全文

posted @ 2015-12-17 23:32 ziliuziliu 阅读(120) 评论(0) 推荐(0) 编辑

摘要:这个妥妥的最小割,但是我想了好久。。。。考虑所有羊连源点,狼连汇点,相邻点两边跑最小割(最大流)即可。正确性?考虑类似一个二分图的东西,我们只需要把狼集合和羊集合拦腰斩断即可。#include#include#include#include#define maxe 100005#define max... 阅读全文

posted @ 2015-12-15 23:23 ziliuziliu 阅读(173) 评论(0) 推荐(0) 编辑

摘要:贪心可过。原来浙江省选也不是那么难嘛。。作者懒,粘的题解。此题类似于田忌赛马的策略,只要站在浙江队一方和站在对手一方进行考虑即可。#include#include#include#include#include#include#include#include#include#include#incl... 阅读全文

posted @ 2015-12-14 22:29 ziliuziliu 阅读(127) 评论(0) 推荐(0) 编辑

摘要:又见神TM卡内存题。这道题是要求众数。怎么求呢?首先这道题要求众数的个数大于一半,因此我们读入一个,如果和rec不一样就cnt--。如果cntusing namespace std;int n,cnt,a,rec=0;int main(){ scanf("%d",&n); while (n) { ... 阅读全文

posted @ 2015-12-14 19:45 ziliuziliu 阅读(125) 评论(0) 推荐(0) 编辑

摘要:其实打个表就会发现,这个玩意儿是积性的,然后很happy的搞了一下。不,不是这样。考虑每个约数对答案的贡献,不难发现:约数i的贡献为n/i。加之即可。#include#includeusing namespace std;int n,sum=0;int main(){ scanf("%d",&n);... 阅读全文

posted @ 2015-12-14 13:22 ziliuziliu 阅读(109) 评论(0) 推荐(0) 编辑

摘要:这个是第一份完整的treap代码。嗯。。。虽然抄的百度的版,但还是不错的。!bzoj上不能用srand。#include#include#include#includeusing namespace std;struct treap{ int left,right,value; int fix,w,... 阅读全文

posted @ 2015-12-13 18:27 ziliuziliu 阅读(176) 评论(0) 推荐(0) 编辑

摘要:codevs上的某一道最小生成树。我的方法可能较麻烦。。。先dfs找建筑物,再kruskal。这里并查集的使用是个关键。这什么鬼的代码长度。#include#include#include#include#include#define maxe 100005#define maxv 10005usi... 阅读全文

posted @ 2015-12-13 16:43 ziliuziliu 阅读(203) 评论(0) 推荐(0) 编辑

摘要:一个简化版的treap打版题,也当练练手。这个版来自百度百科。。。。。不知道数据大了效果怎么样。主要是动态插入和查询。#include#include#include#include#define maxv 100005using namespace std;struct tree{ int l... 阅读全文

posted @ 2015-12-09 22:51 ziliuziliu 阅读(143) 评论(0) 推荐(0) 编辑

摘要:这一篇献给未来的我。你必然会遭遇失败:无论是NOIP,省选还是更高层次。你的同学很可能比你走得更远,比你考到更好的大学,比你找到更好的工作。不要放弃。就像2015年的那个自己。还有一个曾经也是会奋斗的自己。不要放弃对oi的热爱。不要放弃对琴弦的热爱。不要放弃对学习的热爱。总会有一个更美好的未来。不要... 阅读全文

posted @ 2015-12-09 22:40 ziliuziliu 阅读(135) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示