一名苦逼的OIer,想成为ACMer

Iowa_Battleship

2018年10月20日

洛谷2783 有机化学之神偶尔会做作弊

摘要: "原题链接" 很水的一道题,先用$tarjan$找边双连通分量并缩点,因为缩点后必然是一棵树,所以直接$LCA$求距离即可。 另外因为有重边(说好的只有单键呢),所以需要判重,一开始我用的$HASH$判重,结果又被卡了。。。 ~~和$HASH$天理难容,每次用都被卡~~ 最后一气之下$bitset$ 阅读全文

posted @ 2018-10-20 08:03 Iowa_Battleship 阅读(174) 评论(0) 推荐(0) 编辑

2018年10月19日

洛谷1242 新汉诺塔

摘要: "原题链接" 显然要先把较大的盘放到目标位置。 有一个很明显的贪心方案: 设当前要把第$x$大的盘子从$A$移到$B$,则先把比$x$小的盘子全部移到$C$柱,再将第$x$大的盘子移到$B$柱,这样递归求解。 该种贪心方案在大多数情况都是最优的,但是有个大佬出了一个$HACK$数据,将该贪心方案$H 阅读全文

posted @ 2018-10-19 20:15 Iowa_Battleship 阅读(165) 评论(0) 推荐(0) 编辑

洛谷1441 砝码称重

摘要: "原题链接" 挺水的一道题。 $DFS$枚举被删除的砝码,每次删完后进行$01$背包计数,取最大值即可。 这题不需要剪枝即可通过。 我这里是用链表储存的数据。 cpp include include include using namespace std; const int N = 25; con 阅读全文

posted @ 2018-10-19 16:52 Iowa_Battleship 阅读(132) 评论(0) 推荐(0) 编辑

洛谷1312 Mayan游戏

摘要: "原题链接" ~~讨厌这种大搜索题~~ 基本就是模拟搜索,注意细节即可。 以下是我用的两个剪枝: 1. 将块向左移的前提是左边为空,因为该题要求先右后左,所以若左边有块,那么在上一次搜索向右移的时候一定会搜过,且字典序更小。 2. 对每次搜索的图进行$HASH$储存,即记忆化。 表示这题把我$HAS 阅读全文

posted @ 2018-10-19 15:57 Iowa_Battleship 阅读(151) 评论(0) 推荐(0) 编辑

2018年10月18日

洛谷1514 引水入城

摘要: "原题链接" 对于第一个问题,显然$DFS$或$BFS$一遍看看最后一排是不是全部被搜到即可。 对于第二个问题,考虑贪心,求出第一排每个格子最大能够覆盖多少最后一排的格子,即求左端右端(显然覆盖的格子都是连续的,若不为连续,则那个断开的格子定无法到达)。 可以使用$DP$来求出,设$L[x][y], 阅读全文

posted @ 2018-10-18 19:50 Iowa_Battleship 阅读(113) 评论(0) 推荐(0) 编辑

洛谷1378 油滴扩展

摘要: "原题链接" 爆搜水题,数据小,连剪枝也不用。 对于每个油滴,扩展的最大半径即是对圆心到$x$边界的距离、圆心到$y$边界的距离、与每个已经扩展的油滴圆心距离减去该油滴扩展的半径 取最小值,注意对$0$取$max$。 cpp include include using namespace std; 阅读全文

posted @ 2018-10-18 13:33 Iowa_Battleship 阅读(126) 评论(0) 推荐(0) 编辑

洛谷3953 逛公园

摘要: "原题链接" 记忆化搜索。 先在反图上跑一边最短路,求出$dis[x]$,表示点$x$到点$n$的最短距离,当然也同时也排除了不能到达$n$的点。 设$f[x][k]$表示从$x$点走到$n$点允许比$dis[x]$多走$k$距离的方案数,$a_i$表示$x$能到达的点,且边权为$v_i$,共$s_ 阅读全文

posted @ 2018-10-18 11:20 Iowa_Battleship 阅读(78) 评论(0) 推荐(0) 编辑

2018年10月17日

洛谷1608 路径统计

摘要: "原题链接" 模板题。 比起最短路计数( "题解" )这题多了边权,且计数的条件有所不同,需要去重边(取权值最小的),然后上$dijkstra$或$SPFA$计数即可。 这里我是用的$dijkstra$。 阅读全文

posted @ 2018-10-17 19:55 Iowa_Battleship 阅读(100) 评论(0) 推荐(0) 编辑

洛谷1144 最短路计数

摘要: "原题链接" 模板题。 由于此题特殊,边权均为$1$,所以可以直接跑$BFS$,每个点的最短路就是该点在$BFS$搜索树中的深度,某个点的最短路计数则用上一层中能到达该点的计数来更新即可。 cpp include using namespace std; const int N = 1e6 + 10 阅读全文

posted @ 2018-10-17 15:00 Iowa_Battleship 阅读(105) 评论(0) 推荐(0) 编辑

BZOJ1059或洛谷1129 [ZJOI2007]矩阵游戏

摘要: "BZOJ原题链接" "洛谷原题链接" 通过手算几组例子后,很容易发现,同一列的$1$永远在这一列,且这些$1$有且仅有一个能产生贡献,行同理。 所以我们可以只考虑交换列,使得每一行都能匹配一个$1$,且每一行匹配的$1$没有重列的,最后交换行排序下即可达到目标。 解决这个问题就不难了,对于一个格子 阅读全文

posted @ 2018-10-17 13:45 Iowa_Battleship 阅读(91) 评论(0) 推荐(0) 编辑

洛谷1894 [USACO4.2]完美的牛栏The Perfect Stall

摘要: "原题链接" 二分图最大匹配板子。 每个奶牛向它愿意去的牛棚连边,跑二分图最大匹配即可。 这里我用的是匈牙利算法。 cpp include include using namespace std; const int N = 410; const int M = N N; int fi[N], ne 阅读全文

posted @ 2018-10-17 12:40 Iowa_Battleship 阅读(91) 评论(0) 推荐(0) 编辑

洛谷2417 课程

摘要: "原题链接" 对于每一个课堂,向能够来这堂课的学生连边,然后跑二分图最大匹配,判断是否是完全匹配即可。 这里我是用的匈牙利算法。 cpp include include using namespace std; const int N = 1e5 + 10; int fi[N], di[N], ne 阅读全文

posted @ 2018-10-17 12:18 Iowa_Battleship 阅读(122) 评论(0) 推荐(0) 编辑

2018年10月16日

洛谷2860 [USACO06JAN]冗余路径Redundant Paths

摘要: "原题链接" 题意实际上就是让你添加尽量少的边,使得每个点都在至少一个环上。 显然对于在一个边双连通分量里的点已经满足要求,所以可以用$tarjan$找边双并缩点。 对于缩点后的树,先讲下我自己的弱鸡做法,每次找直径,因为将直径改为环显然使得新添的边贡献最大,这样贪心的连下去,直到所有点满足要求为止 阅读全文

posted @ 2018-10-16 21:24 Iowa_Battleship 阅读(141) 评论(0) 推荐(0) 编辑

洛谷1983 车站分级

摘要: "原题链接" 设某一趟车所停靠的车站的集合为$S = \{a_1,a_2,\dots, a_{k 1}, a_k\}$,那么对于一个车站$\forall x\in (a_1, a_k), \notin S$,向集合$S$中的每一个车站连一条边权为$1$的有向边,表示停靠的车站比未停靠高一级。 最后在 阅读全文

posted @ 2018-10-16 15:25 Iowa_Battleship 阅读(163) 评论(1) 推荐(0) 编辑

2018年10月15日

BZOJ1178或洛谷3626 [APIO2009]会议中心

摘要: "BZOJ原题链接" "洛谷原题链接" 第一个问题是经典的最多不相交区间问题,用贪心即可解决。 主要问题是第二个,求最小字典序的方案。 我们可以尝试从$1\to n$扫一遍所有区间,按顺序对每一个不会使答案变差的区间都尝试着去填,这样就可以保证方案的字典序最小。 考虑如果快速判断该区间是否能成为最优 阅读全文

posted @ 2018-10-15 21:00 Iowa_Battleship 阅读(225) 评论(0) 推荐(0) 编辑

BZOJ1179或洛谷3672 [APIO2009]抢掠计划

摘要: "BZOJ原题链接" "洛谷原题链接" 在一个强连通分量里的$ATM$机显然都可被抢,所以先用$tarjan$找强连通分量并缩点,在缩点的后的$DAG$上跑最长路,然后扫一遍酒吧记录答案即可。 cpp include using namespace std; const int N = 5e5 + 阅读全文

posted @ 2018-10-15 14:08 Iowa_Battleship 阅读(129) 评论(0) 推荐(0) 编辑

2018年10月14日

CF Round #516 (Div. 2, by Moscow Team Olympiad)

摘要: 前言:依旧菜,$A$了$4$题,不过这次上蓝了挺开心的。 "A. Make a triangle!" Description 给出$3$根木棍,希望用它们拼成三角形,可以将其中的某些木棍增长,求至少需要增长多少才能拼成一个三角形。 Solution 水题,答案就是最长的木棍长度减去剩下两根木棍的长度 阅读全文

posted @ 2018-10-14 21:06 Iowa_Battleship 阅读(141) 评论(0) 推荐(0) 编辑

洛谷1262 间谍网络

摘要: "原题链接" 因为在一个强连通分量里,所有间谍互相(直接或间接)都掌握着证据,所以只要有一个间谍被控制,那么这整个强连通分量里的间谍都被控制。 所以我们可以对其进行缩点,并记录该强连通分量里的愿意被收买的间谍所需要最小资金以及编号最小的间谍。 对于缩点后的$DAG$,显然入度为$0$的点必须能被收买 阅读全文

posted @ 2018-10-14 17:10 Iowa_Battleship 阅读(182) 评论(0) 推荐(0) 编辑

2018年10月2日

NOI导刊 2018河南郑州游记

摘要: 前言 本蒟蒻来自浙江的弱市弱校,因为不想两年$OI$一场空,~~以及想出去玩~~,所以与同届大佬一起报了$NOI$导刊,希望能留下点不错的记忆吧。 $Day\ 0$ $10$月$1$日 经过了一天的长途跋涉(黄金周高速堵车+飞机延误+大巴$1$小时),总算是到达郑州,安排的宾馆虽然房间小,不过很干净 阅读全文

posted @ 2018-10-02 11:59 Iowa_Battleship 阅读(722) 评论(1) 推荐(0) 编辑

2018年9月30日

BZOJ1001或洛谷4001 [BJOI2006]狼抓兔子

摘要: "BZOJ原题链接" "洛谷原题链接" 显然就是求最小割。 而对于一个平面图有结论,最大流=最小割=对偶图最短路。 所以这题可用最大流或是转换为对偶图求最短路,这里我是用的对偶图。 虽然理论上按上界算,这题$Dinic$应该是跑不过去的,不过因为网络流复杂度玄学,$Dinic$莫名跑得挺快的。 在转 阅读全文

posted @ 2018-09-30 12:34 Iowa_Battleship 阅读(164) 评论(0) 推荐(0) 编辑

导航