正解:最短路 解题报告: 传送门$QwQ$ 考虑暴力连边,发现最多有$n^2$条边.于是考虑分块 对于长度$p_i$小于等于$\sqrt(n)$的边,建立子图$d=p_i$.说下关于子图$d$的定义?指的由$n$个点构成,每个点$j$都连向$j-d$和$j+d$的图.然后对于$p_i$对应的点$b_i$,指向图中的自己就行$QwQ$.因为这样的边数量不超过$\sqrt(n)$,所以边数少于$n\sqrt(n)$ 对于长度$p_i$大于$\sqrt(n)$的边,直接暴力连边,因为长度大于$\sqr…
题目描述 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N − 1.除了这 NN 座摩天楼外,雅加达市没有其他摩天楼. 有 M 只叫做 “doge” 的神秘生物在雅加达市居住,它们的编号依次是 0 到 M − 1.编号为 i 的 doge 最初居住于编号为 Bi​ 的摩天楼.每只 doge 都有一种神秘的力量,使它们能够在摩天楼之间跳跃,编号为 i 的 doge 的跳跃能力为 Pi​ (Pi​>0). 在一次跳跃中,位于摩天楼 b 而跳跃能力为 p …
暴力连边可以每个bi向i+kdi连边权是k的边. 考虑这样的优化: 然后发现显然是不行的,因为可能还没有走到一个dog的建筑物就走了这个dog的边. 然后就有一个很妙的方法--建一个新的图,和原图分开,这样就没有问题了. 左边这一个是原图,连向原图的点边是可以走的,但是原图的点可以走出去当且仅当这个点上有一个d=目标图d的dog 可以这样建\(\sqrt n\)个图,剩下的图在原图上暴力建,边数都\(<\sqrt n\) 所以最后点数边数都是\(n\sqrt n\)的 注意不用把图建出来,在跑的…
传送门 这最短路的建图怎么和网络流一样玄学…… 一个最朴素的想法是从每一个点向它能到达的所有点连边,边权为跳的次数,然后跑最短路(然而边数是$O(n^2)$除非自创复杂度比spfa和dijkstra还有优秀的做法否则根本过不了) 那么考虑一下分块 把每一座建筑拆成$O(\sqrt{n})$层,第$i$层代表在这一层只能每一步跳$i$个建筑,然后这一层每一个建筑向它能到达的点连双向边 然后每一层每一个建筑向底层连边,代表如果这里有其他狗就可以更换跳的步数 然后考虑每一只狗,如果它每一步跳的步数小于…
[题解]P3645 [APIO2015]雅加达的摩天楼(分层图最短路) 感觉分层图是个很灵活的东西 直接连边的话,边数是\(O(n^2)\)的过不去 然而我们有一个优化的办法,可以建一个新图\(G=(V,E)\)其中\(V\)和原图\(V\)一一对应且连接一个\(0\)边,此外每个点向V中的\(i+-d\)连边. 类似网络流的办法瞎建就行了. 过不了uoj //@winlere #include<iostream> #include<cstdio> #include<cstr…
LINK:雅加达的摩天楼 容易想到设\(f_{i,j}\)表示第i个\(doge\)在第j层楼的最小步数. 转移显然是bfs.值得一提的是把初始某层的\(doge\)加入队列 然后转移边权全为1不需要 双端队列的bfs. 复杂度为状态数量\(n\cdot m\) 可以发现 可能有两个\(doge\)跳在同一层楼 且 跳跃能力相同 显然其中一个一定没用 可以进行一些小优化 将状态改写成\(f_{i,j}\)到达第i层楼跳跃能力为j的最小步数. 复杂度\(n\cdot sqrt n\) 证明和另外一…
4070: [Apio2015]雅加达的摩天楼 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 464  Solved: 164[Submit][Status][Discuss] Description 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼外,雅加达市没有其他摩天楼.   有 M 只叫做 “doge” 的神秘生物在雅加达市居住,它们的编号依次是 0 到 M−1.编号…
luogu 暴力? 暴力! 这个题有点像最短路,所以设\(f_{i,j}\)表示在\(i\)号楼,当前\(doge\)跳跃能力为\(j\)的最短步数,转移要么跳一步到\(f_{i+j,j}\)和\(f_{i-j,j}\),要么换到别的\(doge\),转移到\(f_{i,k}\) 这看似有\(n^2\)的状态,实际上状态数只有\(n\sqrt n\).因为当\(p> \sqrt n\)时,一个\(doge\)只能跳到\(\sqrt n\)个不同的点,这部分为\(m\sqrt n\);当\(p\l…
[Apio2015]雅加达的摩天楼 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 644  Solved: 238[Submit][Status][Discuss] Description 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼外,雅加达市没有其他摩天楼.   有 M 只叫做 “doge” 的神秘生物在雅加达市居住,它们的编号依次是 0 到 M−1.编号为 i 的…
[BZOJ4070][Apio2015]雅加达的摩天楼 Description 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼外,雅加达市没有其他摩天楼. 有 M 只叫做 “doge” 的神秘生物在雅加达市居住,它们的编号依次是 0 到 M−1.编号为 i 的 doge 最初居住于编号为 Bi 的摩天楼.每只 doge 都有一种神秘的力量,使它们能够在摩天楼之间跳跃,编号为 i 的 doge 的跳跃能力为 Pi (Pi>0…
雅加达的摩天楼 题意描述: 有\(N\)座摩天楼,从左到右依次编号为\(0\)到\(N-1\). 有\(M\)个信息传递员,编号依次为\(0\)到\(M-1\).编号为i的传递员最初在编号为\(B_i\)的摩天楼,邮递员可以在摩天楼之间跳跃(向前或者向后),编号为\(i\)的传递员跳跃能力为\(P_i\). 当传递员到达一个摩天楼他可以执行两种操作 1: 跳跃到其他摩天楼上. 2: 将消息传递给当前摩天楼的其他传递员. 最终要将编号为\(0\)的摩天楼信息传递到编号为\(1\)的摩天楼地方. 输…
Description 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼外,雅加达市没有其他摩天楼.   有 M 只叫做 “doge” 的神秘生物在雅加达市居住,它们的编号依次是 0 到 M−1.编号为 i 的 doge 最初居住于编号为 Bi 的摩天楼.每只 doge 都有一种神秘的力量,使它们能够在摩天楼之间跳跃,编号为 i 的 doge 的跳跃能力为 Pi (Pi>0).   在一次跳跃中,位于摩天楼 b 而跳跃能力为…
Description 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼外,雅加达市没有其他摩天楼. 有 M 只叫做 "doge" 的神秘生物在雅加达市居住,它们的编号依次是 0 到 M−1.编号为 i 的 doge 最初居住于编号为 Bi 的摩天楼.每只 doge 都有一种神秘的力量,使它们能够在摩天楼之间跳跃,编号为 i 的 doge 的跳跃能力为 Pi (Pi>0). 在一次跳跃中,位于摩天楼 b 而跳…
若说代码 那真的是很水 但是 思想却有点意思 这道题是洛谷博弈论专题的第一道入门题, 然而刚开始我是不会做的, 毕竟是道入门题, 我博弈论还没入门呢. 这道题的做法就是: 如果m为偶数, 那么先手赢(即pb), 如果m为奇数, 那么后手赢(即zs). 做法很简单, 可是我们要知道怎么做的 说实话我对于他们两个都聪明绝顶, 都会按照最优策略来走很不感冒. 既然他们聪明绝顶, 那么先手明知道m为奇数时自己会输, 为什么不洒脱一点走呢? 也许乱走出奇迹? 那我们来试试看. 当m = 13时, 先手为什…
题目描述 印尼首都雅加达市有 N 座摩天楼,它们排列成一条直线,我们从左到右依次将它们编号为 0 到 N−1.除了这 N 座摩天楼外,雅加达市没有其他摩天楼. 有 M 只叫做 “doge” 的神秘生物在雅加达市居住,它们的编号依次是 0 到 M−1.编号为 i 的 doge 最初居住于编号为 Bi 的摩天楼.每只 doge 都有一种神秘的力量,使它们能够在摩天楼之间跳跃,编号为 i 的 doge 的跳跃能力为 Pi (Pi>0). 在一次跳跃中,位于摩天楼 b 而跳跃能力为 p 的 doge 可…
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 5来描述,第i个数字表示在第i行的相应位置有一个棋子,如下: 行号 1 2 3 4 5 6 列号 2 4 6 1 3 5 这只是跳棋放置的一个解.请编一个程序找出所有跳棋放置的解.并把它们以上面的序列方法输出.解按字典顺序排列.请输出前3个解.最后一行是解的总个数. //以下的话来自usaco官方…
今天难得做了做洛谷的题,而且还是两个! P1075:已知正整数n是两个不同的质数的乘积,试求出两者中较大的那个质数.输入格式:一个正整数n.输出格式:一个正整数p,即较大的那个质数. 第一版代码: #include<iostream> using namespace std; bool isZhi(int a) { )return false; ;i<a;i++) { )return false; } return true; } int main() { int n; cin>&…
正题 题目链接:https://www.luogu.com.cn/problem/P3645 题目大意 \(n\)个点,\(m\)条狗,第\(i\)条狗可以往左或者右跳恰好\(p_i\)步,开始是\(0\)号狗,每次跳跃到达一个点可以选择换一条狗,求到\(1\)号狗所在点的最短路. 解题思路 为了方便设\(n,m\)同级 对于\(p_i\leq \sqrt n\)的狗,\(p_i\)的种类只有\(\sqrt n\)级别,每条狗能到达的点是\(O(n)\)级别 对于\(p_i>\sqrt n\)的…
[NOIP2013 提高组] 华容道 P1979 洛谷 强烈推荐,更好的阅读体验 经典题目:spfa+bfs+转化 题目大意: 给出一个01网格图,和点坐标x,y空格坐标a,b,目标位置tx,ty要求移动空格最少步数使点到tx,ty 本题关键: 我们可以发现本题可以用BFS获得很高的暴力分,但是也可以使用DP: $f[i][j][x][y]表示空格在i,j目标点在x,y的最少操作次数$ 但是本题的多次询问给我们一个启发-->可以预处理 所有我们可能可以预先处理一些状态的转移 可以发现很多状态是无…
题目 题目oj(洛谷) Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes labeled 1 through N. They start with N stacks, each containing a single cube. Farmer John asks Betsy to perform P (1<= P <= 100,000) operation. There…
用了STL,其他的没什么,赤裸裸的拓扑排序 下面给出代码 #include<cstdio> #include<iostream> #include<vector> #include<stack> using namespace std; int n,m,u,v; +],dis[+]; vector<+]; stack<int>str ; int main(){ cin >> n >> m; while(m--){ s…
题目传送门:https://www.luogu.org/problem/show?pid=1019#sub 典型的爆搜,每次更新最大龙长度即可 搜索每个字符串编号,与已经连接好的字符串进行比较,以此往后找,若全部匹配,则可以接龙 注意: 1.自己也可以与自己相连 2.题目中所说的不能存在包含关系是连接好后的相邻两部分 并不是如果是子串就不能连接 否则第一个单词即起始字母无法连接 //Gang #include<iostream> #include<cstring> #include…
题目描述 琪露诺是拥有操纵冷气程度的能力的妖精,一天她发现了一片西瓜地.这里有n个西瓜,由n-1条西瓜蔓连接,形成一个有根树,琪露诺想要把它们冷冻起来慢慢吃. 这些西瓜蔓具有神奇的性质,可以将经过它的冷气的寒冷程度放大或缩小,每条西瓜蔓放大/缩小冷气寒冷程度的能力值为Wi,表示冷气经过它后,寒冷程度值x会变为x*wi.每个西瓜也有一个寒冷程度值,炎热的夏日,所有西瓜的寒冷程度值初始都为0. 琪露诺会做出两种动作: ①.对着西瓜i放出寒冷程度为x的冷气.这股冷气顺着西瓜蔓向“西瓜树”的叶子节点蔓延…
题意翻译 题目描述 农夫约翰正驾驶一条小艇在牛勒比海上航行. 海上有N(1≤N≤100)个岛屿,用1到N编号.约翰从1号小岛出发,最后到达N号小岛. 一张藏宝图上说,如果他的路程上经过的小岛依次出现了Ai,A2,…,AM(2≤M≤10000)这样的序列(不一定相邻),那他最终就能找到古老的宝藏. 但是,由于牛勒比海有海盗出没.约翰知道任意两个岛屿之间的航线上海盗出没的概率,他用一个危险指数Dij(0≤Dij≤100000)来描述.他希望他的寻宝活动经过的航线危险指数之和最小.那么,在找到宝藏的前…
题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X的扩展串,这里“□”代表空格字符. 如果A1是字符串A的扩展串,B1是字符串B的扩展串,A1与B1具有相同的长度,那么我扪定义字符串A1与B1的距离为相应位置上的字符的距离总和,而两个非空格字符的距离定义为它们的ASCII码的差的绝对值,而空格字符与其他任意字符之间的距离为已知的定值K,空格字符与空…
题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发现,由于很多书的宽度不同,所以书看起来还是非常不整齐.于是他决定从中拿掉k本书,使得书架可以看起来整齐一点. 书架的不整齐度是这样定义的:每两本书宽度的差的绝对值的和.例如有4本书: 1×21 \times 21×2 5×35 \times 35×3 2×42 \times 42×4 3×13 \times 13×1 那么Fr…
题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你什么时候能修完这条公路.问最早什么时候任意两个村庄能够通车,即最早什么时候任意两条村庄都存在至少一条修复完成的道路(可以由多条公路连成一条道路) 输入输出格式 输入格式: 第1行两个正整数N,M 下面MM行,每行3个正整数x,y,t,告诉你这条公路连着x,y两个村庄,在时间t时能修复完成这条公路. 输出格…
题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”:否则返回“NO”.表达式长度小于255,左圆括号少于20个. 输入输出格式 输入格式: 一行:表达式 输出格式: 一行:“YES” 或“NO” 输入输出样例 输入样例#1: 复制 2*(x+y)/(1-x)@ 输出样例#1: 复制 YES 输入样例#2: 复制 (25+x)*(a*(a+b+b)@ 输出样…
题目描述 请你编一程序实现两种不同进制之间的数据转换. 输入输出格式 输入格式: 共三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10n>10则用大写字母A−F表示数码10−15,并且该nn进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16). 输出格式: 一个正整数,表示转换之后的mm进制数. 输入输出样例 输入样例#1: 复制 16 FF 2 输出样例#1: 复制 11111111…
题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了).这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题. 输入输出格式 输入格式: 一行内输入一串整数,以0结束,以空格间隔. 输出格式: 一行内倒着输出这一串整数,以空格间隔. 输入输出样例 输入样例#1: 复制 3 65 23 5 34…