精妙
MintGreenTZ
这个作者很懒,什么都没留下…
展开
-
Ural Championship 2013 H E-Lite
E-Lite Time limit: 2.0 second Memory limit: 64 MB The developers of the e-Lite game made it possible for each player to adjust the parameters of his spaceship as he wants. Initially each原创 2016-07-17 21:36:46 · 398 阅读 · 0 评论 -
日常训练 腐女的生日 奥妙重重的最短路
题意简述:平面上给定nn个矩形建筑物,问从(0,0)(0,0)走到(x0,y0)(x0,y0)的最短距离,只能平行与坐标轴行走且不能穿过建筑。(n≤105 ,y (n\le 10^5\ ,y\ 坐标∈[−106,106] ,x \in[-10^6,10^6]\ ,x\ 坐标∈(0,106])\in(0,10^6]) 保证每个矩形都不相交,且一个矩形的周围区域不会有别的矩形。 开始做的时候只想到了一原创 2017-05-27 19:36:53 · 641 阅读 · 0 评论 -
Bzoj3754 Tree之最小方差树 MST
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=3754 思路有点像分数规划,分数规划是二分答案,根据答案每一个选项之间就有了优劣之分。一般的MST要每次取边权最小的,但是这一题要方差最小,那么边与边之间就没有直接的优劣之分,那么我们枚举平均数,对于每条边,我们算出(ai−a¯)2(a_i-\bar{a})^2,那么我们只要最小化这个和就行原创 2017-05-01 21:14:11 · 588 阅读 · 0 评论 -
一个看错题面带来的问题——最小标号最短路
有一个问题我看错了题面,不会做,问同学,却发现看错的题意却有精妙做法。题意简述:有一幅n个点,m条边的有向图(2<=n<=100000,1<=m<=200000),求1到n最短路中标号最小的路径。首先,做S点的最短路,如果dis(x)+d(x,y)=dis(y),则边(x,y)可能在S点出发的最短路上。这题精妙之处在于如果求出了源点的单源最短路不能保证是标号最小的路径,如果挑可能在最短路上的边走,不原创 2016-07-17 20:30:26 · 733 阅读 · 0 评论 -
日常训练 巨神兵 obelisk
题意简述:有一张nn个点,mm条边的有向图,有多少个子图(选定一个边集)是没有环的。答案对1e9+71e9+7取模。n≤10n\leq10 考虑状压dp,一个无环图一定是可以唯一分层的,将一开始入度为00的点放第一层,将这些点去掉,剩下出现的新的入度为00的点为第二层…以此类推,用f[i][j]f[i][j]表示已经取得点集为ii,最后一层点集为jj,枚举新的点集kk。集合kk中的每一个点必须至少原创 2017-01-09 19:29:33 · 714 阅读 · 0 评论 -
Bzoj 2115: [Wc2011] Xor
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=2115 Input第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目。 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 Di的无向边。 图中可能有重边或自环。Output仅包含一个整数,表示最大的XOR和(十进制结果),注意原创 2017-01-08 13:59:31 · 348 阅读 · 0 评论 -
NOIP2016 天天爱跑步
对于每条链,可以拆成两条,一条S到Lca,一条Lca到T,可以发现前者能被一个在now位置的观察者观察到的条件是0+dep[S]=w[now]+dep[now],因为向上跑时深度和时间的和不变,所以可以以深度和时间的和未关键字做hash,因为这条链不到根,所以用经典手法将这条链拆成两条到根的链。另一条Lca到T被在now位置的观察者观察到的条件是time[x]-dep[x]=w[now]-dep[n原创 2016-12-06 09:10:03 · 1052 阅读 · 0 评论 -
NOIP2016 蚯蚓
因为切的蚯蚓一定是越来越短的,所以开三个队列,每次在三个队首找一个最长的,切开后放到第二队和第三队的队尾,能保证三个队列都单调减。var a:array[1..3,0..8000000] of longint; p,q:array[1..3] of longint; n,m,pl,u,v,t,i,j,cs,csj,cnt,plus:longint;procedure swap(var原创 2016-12-05 10:31:21 · 683 阅读 · 0 评论 -
日常训练20161031 量化交易 trade
题意简述:有nn天,每天股票都有一个交易价,每天可以买一股或卖一股或什么都不做。问nn天最多能赚多少钱。(1≤n≤100000)(1\le n\le 100000)题解:维护一个小根堆,堆里放可选的买进日交易价。对于每一天,先看小根堆顶交易价是否比当前日交易价小。堆顶大的话,就直接把当前交易价压入队,表示这天什么都不做。堆顶小的话,就让堆顶那日买入,当前日卖出,赚一笔,把堆顶弹掉,把当前日交易价压两原创 2016-10-31 17:13:08 · 444 阅读 · 0 评论 -
bzoj 2151 种树
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=2151 最容易想到的是O(n^2) dp。 这里有个优雅处理,就是当选一棵树时,删掉旁边两棵树,把旁边两棵树美观度之和减去当前树的美观度替换当前树的美观度(即a[i]:=a[left[i]]+a[right[i]]-a[i]),这样下次如果取了这棵树就代表取旁边两棵树而不取中间原创 2016-08-14 14:44:47 · 364 阅读 · 0 评论 -
Bzoj1034 [ZJOI2008]泡泡堂BNB
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=1034推荐vfleaking的贪心:http://vfleaking.blog.163.com/blog/static/174807634201302175150796/var a,b,c,temp:array[0..100050] of longint; used:array[0..原创 2016-11-09 20:21:38 · 433 阅读 · 0 评论 -
日常训练20161012 道路网
有个简单的想法就是将道路设成点,然后对于每一个询问用SPFA求解,能过前50%的点。 这道题有个特殊的地方,就是m≤300,这是个Floyd的数据规模,而且询问数比较小,可以考虑把每两条路之间的距离用Floyd预处理出来,然后对于每个询问,枚举两个点分别连向哪两条路,复杂度O(m^2*l+m^3+Tm^2),能过100%的点。type edge=record y,v,next原创 2016-10-12 16:27:21 · 301 阅读 · 0 评论 -
日常训练20161018 subset
如有侵权,请联系作者删除 题意: 一开始你有一个空集,集合可以出现重复元素,然后有Q 个操作 1. add s 在集合中加入数字s。 2. del s 在集合中删除数字s。保证s 存在 3. cnt s 查询满足a&s = a 条件的a 的个数 (1≤n≤200000,0≤s<216)(1\le n\le200000,0\le s<2^{16})法一:暴力插入删除查询复杂度O(n2)O(原创 2016-10-24 21:12:47 · 524 阅读 · 0 评论 -
Bzoj 1729 [Usaco2005 dec] Cow Patterns 牛的模式匹配
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=1729 http://poj.org/problem?id=3167 这题类似kmp,但匹配的时候不是直接的关键字匹配,而是排名的匹配,在kmp的基础上,每次比较相同或不同不是直接的关键字比较,而是用树状数组统计小于当前数和等于当前数的数量,如果对应相同,即排名相同。const MX=原创 2016-10-11 19:57:11 · 856 阅读 · 0 评论 -
Codeforces Round #367 (Div. 2) E. Working routine
原题网址:http://codeforces.com/contest/706/problem/E 用四向链表维护每个点上下左右分别是哪些点,每次修改只要修改矩形周围一圈,复杂度O(q(n+m))。 然而Pascal四向链表强行被卡T,改成双向链表(向右和向下)才卡过(估计下来此题Pascal有C++4倍常数左右)。 里面有好几处精妙细节,所以我不得不标记出来以免我以后注意不到。//四向原创 2016-08-14 16:04:15 · 367 阅读 · 0 评论 -
日常训练 20170708 贝加尔湖畔baikal
题面: 有 N (1≤N≤105)N\ (1\le N\le 10^5) 个村庄, 第 ii 个村庄有一个权值 AiA_i。定义 Bi=A1+A2+.....+AiB_i=A_1+A_2+.....+A_i。保证 BN=0B_N = 0。 你需要从任意一个村庄出发,然后遍历任意多个村庄,之后回到出发的村庄。 我们认为你从村庄 ii 到村庄 jj 的收益是 (Ai−Aj)×Bi×B原创 2017-07-08 16:03:22 · 695 阅读 · 0 评论