一名苦逼的OIer,想成为ACMer

Iowa_Battleship

上一页 1 ··· 4 5 6 7 8 9 下一页

2018年9月10日

洛谷3388 【模板】割点(割顶)

摘要: 一道找割点模板 "原题链接" $tarjan$找割点模板,不解释。 cpp include using namespace std; const int N = 1e5 + 10; int fi[N], di[N '9'; c = getchar()) p |= c == ' '; for (; c 阅读全文

posted @ 2018-09-10 12:56 Iowa_Battleship 阅读(99) 评论(0) 推荐(0) 编辑

2018年9月9日

POJ3621或洛谷2868 [USACO07DEC]观光奶牛Sightseeing Cows

摘要: 一道$0/1$分数规划+负环 "POJ原题链接" "洛谷原题链接" 显然是$0/1$分数规划问题。 二分答案,设二分值为$mid$。 然后对二分进行判断,我们建立新图,没有点权,设当前有向边为$z=(x,y)$,$time$为原边权,$fun$为原点权,则将该边权换成$mid\times time[ 阅读全文

posted @ 2018-09-09 21:10 Iowa_Battleship 阅读(120) 评论(0) 推荐(0) 编辑

洛谷3385 【模板】负环

摘要: 一道负环模板 "原题链接" 负环模板,不解释。 阅读全文

posted @ 2018-09-09 19:51 Iowa_Battleship 阅读(119) 评论(0) 推荐(0) 编辑

洛谷1984 [SDOI2008]烧水问题

摘要: 一道找规律 "原题链接" 显然要将烧得的温度最大化利用,即每次都去热传递。 设水沸腾为$x$。 第一杯直接烧水,需提高$x$。 第二杯先与第一杯进行热传递,这样只需提高$\dfrac{x}{2}$,是上一杯的$\dfrac{1}{2}$倍。此时两杯温度为$\dfrac{x}{2},x$。 第三杯先与 阅读全文

posted @ 2018-09-09 19:23 Iowa_Battleship 阅读(146) 评论(0) 推荐(0) 编辑

2018年9月7日

JoyOI1940 创世纪

摘要: 一道基环树+树形$DP$ "原题链接" 显然输入的是内向基环树森林,且我们可以单独考虑每一棵基环树。 既然是基环树,自然先$dfs$找环,然后随便找环上的一点$r$,将其与$A[r]$的边断开,建反边,这时就会形成一棵以$r$为根的树,且每个点的子节点都是能限制它的元素。 于是我们可以在这棵树上跑树 阅读全文

posted @ 2018-09-07 20:55 Iowa_Battleship 阅读(182) 评论(0) 推荐(0) 编辑

2018年9月6日

BZOJ1791或洛谷4381 [IOI2008]Island

摘要: 一道基环树的直径 "BZOJ原题链接" "洛谷原题链接" 又是一道实现贼麻烦的题。。 显然公园其实是基环树森林,求的最长距离其实就是求每一棵基环树的直径的总和。 对于每棵基环树,其直径要么经过环,要么是某个环上点的子树的直径。所以我们可以先找出它的环,然后对环上的每个点进行$dfs$(不能经过环上的 阅读全文

posted @ 2018-09-06 20:43 Iowa_Battleship 阅读(144) 评论(0) 推荐(0) 编辑

2018年9月5日

洛谷1084 疫情控制

摘要: 一道贪心+LCA倍增法的预处理+二分答案 "原题链接" 又是一道细节贼多的题。。敲了我一个晚上。。 显然可以二分答案,然后就是判定的问题。 贪心地发现军队越在靠近首都的点建立检查站,则贡献越大。所以我们让所有军队都往首都靠近,这时所有军队要么无法到达首都的子节点,要么已经到达首都的子节点,而对于前者 阅读全文

posted @ 2018-09-05 19:20 Iowa_Battleship 阅读(317) 评论(0) 推荐(0) 编辑

2018年9月3日

BZOJ1977或洛谷4180 [BJWC2010]次小生成树

摘要: 一道LCA+生成树 "BZOJ原题链接" "洛谷原题链接" 细节挺多,我调了半天。。累炸。。 回到正题,我们先求出随便一棵最小生成树(设边权和为$s$),然后扫描剩下所有边,设扫到的边的两端点为$x,y$,长度为$z$,树上$x,y$间边权最大的边和严格次大的边分别为$dis_1,dis_2$。 如 阅读全文

posted @ 2018-09-03 14:53 Iowa_Battleship 阅读(260) 评论(0) 推荐(0) 编辑

2018年9月2日

CH#56C 异象石

摘要: 一道LCA "原题链接" 先跑一边$dfs$,求出每个节点的时间戳,如果我们将有异象石的节点按时间戳从小到大的顺序排列,累加相邻两节点之间的距离(首尾相邻),会发现总和就是答案的两倍。 于是我们只需要维护这个按时间戳排序的有序数列和答案即可。 当插入一个新的节点$u$时,设插入位置的原有两节点为$x 阅读全文

posted @ 2018-09-02 19:56 Iowa_Battleship 阅读(191) 评论(0) 推荐(0) 编辑

POJ3417 Network

摘要: 一道LCA+树上差分 "原题链接" 显然每一条新增边都会导致环。 如果试着举些例子的话,很容易发现割掉非环上的边,则割掉其他任意一条新增边都可达成目标;若割掉的原有边是一个环上的边,那么只有割掉导致这个环出现的新增边才能使得图变为不连通的两部分。若割掉的边是两个或两个以上的环上的边,那么无论第二次怎 阅读全文

posted @ 2018-09-02 19:28 Iowa_Battleship 阅读(122) 评论(0) 推荐(0) 编辑

HDOJ2586 How far away ?

摘要: 一道LCA模板 "原题链接" $LCA$模板题,不解释。 倍增版 cpp include include include using namespace std; const int N = 4e4 + 10; int fi[N], da[N '9'; c = getchar()) p |= c = 阅读全文

posted @ 2018-09-02 19:00 Iowa_Battleship 阅读(117) 评论(0) 推荐(0) 编辑

BZOJ1999或洛谷1099&BZOJ2282或洛谷2491 树网的核&[SDOI2011]消防

摘要: 一道树的直径 "树网的核 BZOJ原题链接" "树网的核 洛谷原题链接" "消防 BZOJ原题链接" "消防 洛谷原题链接" ~~一份代码四倍经验,爽~~ 显然要先随便找一条直径,然后直接枚举核的两个端点,对每一次枚举的核遍历核上的每个点,用$dfs$求出核外节点到核的最大值即可,时间复杂度为$O( 阅读全文

posted @ 2018-09-02 17:01 Iowa_Battleship 阅读(150) 评论(0) 推荐(0) 编辑

BZOJ1912或洛谷3629 [APIO2010]巡逻

摘要: 一道树的直径 "BZOJ原题链接" "洛谷原题链接" 显然在原图上路线的总长为$2(n 1)$。 添加第一条边时,显然会形成一个环,而这条环上的所有边全部只需要走一遍。所以为了使添加的边的贡献最大化,我们找出树的直径,将其两端点连上边即可。 设直径长$L$,于是路线总长就变为$2(n 1) L+1= 阅读全文

posted @ 2018-09-02 16:32 Iowa_Battleship 阅读(118) 评论(0) 推荐(0) 编辑

CH6202 黑暗城堡

摘要: 一道最短路+生成树 "原题链接" 实际上就是生成树的中每个点到节点$1$的距离等于原图中这个点到节点$1$的最短距离,求这样的生成树的棵数。 先用$SPFA$或$Dijkstra$求出所有点到节点$1$的最短路径$dis[x]$,然后将所有节点按$dis$从小到大排序。 枚举$x$,表示已经有$x 阅读全文

posted @ 2018-09-02 16:11 Iowa_Battleship 阅读(234) 评论(0) 推荐(0) 编辑

POJ2728 Desert King

摘要: 一道生成树+$0/1$分数规划 "原题链接" 设每条边的距离为$dis[x]$,两点高度差为$h[x]$,该图的生成树为$T$,则题目实际求的就是$\dfrac{\sum\limits_{x\in T}h[x]}{\sum\limits_{x\in T}dis[x]}$的最小值。 这就是经典的$0/ 阅读全文

posted @ 2018-09-02 11:30 Iowa_Battleship 阅读(80) 评论(0) 推荐(0) 编辑

2018年9月1日

JoyOI1391 走廊泼水节

摘要: 一道另类生成树 "原题链接" 将输入的树的$n 1$条边按从小到大排序,然后$Kruskal$在生成该树的过程中计算新增边的总长。 当在连第$i$条边,设该边的两端点为$x,y$,长度为$z$,分别属于$S_x$和$S_y$两个并查集中。 而为了将树变成完全图,显然要将$S_x,S_y$两个并查集中 阅读全文

posted @ 2018-09-01 21:28 Iowa_Battleship 阅读(87) 评论(0) 推荐(0) 编辑

2018年8月25日

洛谷1073 最优贸易

摘要: 最短路 "原题链接" 以$1$为起点在正图上跑$SPFA$或$Dijkstra$,求出$dis1[x]$,表示从$1$到节点$x$的所有路径中,经过权值最小的节点的权值;再以$n$为起点在 反图 上跑$SPFA$或$Dijkstra$,求出$dis2[x]$,表示从$n$到节点$x$的所有路径中,经 阅读全文

posted @ 2018-08-25 20:18 Iowa_Battleship 阅读(142) 评论(0) 推荐(0) 编辑

POJ3662或洛谷1948 Telephone Lines

摘要: 二分答案+单源最短路 "POJ原题链接" "洛谷原题链接" 显然可以二分答案,检验$mid$可以使用最短路来解决。 将大于$mid$的边看成长度为$1$的边,说明要使用免费升级服务,否则长度为$0$边,即不需要占免费的资格。 然后就可以在上面跑最短路,如果$dis[n] k$说明该答案不可行,将答案 阅读全文

posted @ 2018-08-25 20:08 Iowa_Battleship 阅读(161) 评论(0) 推荐(0) 编辑

BZOJ1106 [POI2007]立方体大作战tet

摘要: 树状数组 "原题链接" 先说一个结(cai)论(xiang),当两个相同的元素之间有$x$个元素是成单的,那么一定要交换$x$次。 ~~然而我并不会证(举例子算吗)~~ 然后我们就可以考虑用树状数组来维护两个相同元素之间有多少元素成单。 我们可以直接一个指针扫过去,当遇到一个第一次出现的元素$x$时 阅读全文

posted @ 2018-08-25 19:49 Iowa_Battleship 阅读(167) 评论(0) 推荐(0) 编辑

2018年8月23日

hihoCoder1159 扑克牌

摘要: 一道记忆化搜索 "原题链接" 和着色方案很像,这里就不详细阐述,可以去我博客里的 "着色方案" 里看。 但要注意本题不一样的是同种面值的牌花色不同,所以在转移时还需要乘上同种面值的牌的个数。 cpp include include using namespace std; typedef unsig 阅读全文

posted @ 2018-08-23 21:19 Iowa_Battleship 阅读(218) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 下一页

导航