洛谷P1560 蜗牛的旅行】的更多相关文章

明显这是一道搜索题,其他题解写的有点复杂,我有更简便的写法 既然题目说走到不能再走,那我们就干脆一点,一条路走到黑,不到南墙不回头,一下把要走的路都走完,不但效率高,也好写,关键是大大节省了系统栈 一口气走很多点的关键在于如何记录一个点是否遍历过呢?退出后又如何删除标记呢? 或许正是这两个问题使一些想到这种解法的人退缩了,但解决这种问题并不难.我们照常可以用一个二维数组记录一个点是否走过,再用一个栈来记录走过的点,退出时,将栈顶依次弹出就好 也许有人会说don't talk,show me yo…
题目 搜索,注意判断特殊情况,并且区分开什么时候转弯什么时候停止.然后转弯的时候更是要注意是否会进入障碍. #include <bits/stdc++.h> using namespace std; int n, b, maxn; int m[1011][1011], vis[1001][1001]; int dx[4] = {0, 1, 0, -1}; int dy[4] = {1, 0, -1, 0};//0,1,2,3分别表示上右下左. void dfs(int x, int y, in…
洛谷P1027 Car的旅行路线 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t. 图例(从上而下) 机场 高速铁路 飞机航线 注意:图中并没有 标出所有的铁路与航线. 那么Car应如何安排到城市B的路线才能尽可能的节省花费呢?她发现这并不是一个简单的问题,于是她来…
[洛谷P2134] 百日旅行 题目背景 重要的不是去哪里,而是和你在一起.--小红 对小明和小红来说,2014年7月29日是一个美好的日子.这一天是他们相识100天的纪念日. (小明:小红,感谢你2场大考时默默的支持,100个日夜的陪伴:感谢你照亮我100个美好的日子,给我留下无数美好的回忆--在这个美好的日子里,我准备带你去旅行.) 题目描述 小明和小红还剩下N天的假期,小明可以安排旅行的计划.如果连续X天旅游,小明需要花旅行费用\(P*X*X\)元:如果连续X天不旅游,小明需要请小红吃饭,花…
P1560 [USACO5.2]蜗牛的旅行Snail Trails 题目描述 萨丽·斯内尔(Sally Snail,蜗牛)喜欢在N x N 的棋盘上闲逛(1 < n <= 120). 她总是从棋盘的左上角出发.棋盘上有空的格子(用“.”来表示)和B 个路障(用“#”来表示). 下面是这种表示法的示例棋盘: 萨丽总是垂直(向上或者向下)或水平(向左或者向右)地走.她可以从出发地(总是记作A1 )向下或者向右走.一旦萨丽选定了一个方向,她就会一直走下去.如果她遇到棋盘边缘或者路障,她就停下来,并且…
P1560 [USACO5.2]蜗牛的旅行Snail Trails 题目描述 萨丽·斯内尔(Sally Snail,蜗牛)喜欢在N x N 的棋盘上闲逛(1 < n <= 120). 她总是从棋盘的左上角出发.棋盘上有空的格子(用“.”来表示)和B 个路障(用“#”来表示). 下面是这种表示法的示例棋盘: 萨丽总是垂直(向上或者向下)或水平(向左或者向右)地走.她可以从出发地(总是记作A1 )向下或者向右走.一旦萨丽选定了一个方向,她就会一直走下去.如果她遇到棋盘边缘或者路障,她就停下来,并且…
题目链接 题解 一看题没什么思路.写了个暴力居然可过?! Code #include<bits/stdc++.h> #define LL long long #define RG register using namespace std; inline int gi() { bool f = 0; char c = getchar(); RG int x = 0; while (c!='-' && (c < '0' || c > '9')) c = getchar(…
---恢复内容开始--- P1522 牛的旅行 Cow Tours189通过502提交题目提供者该用户不存在标签 图论 USACO难度 提高+/省选-提交该题 讨论 题解 记录 最新讨论 输出格式题目描述 农民 John的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧区通过任何路径都不连通.这样,Farmer John就有多个牧场了. John想在牧场里添加一条路径(注意,恰好一条).对这条路径有以下限制: 一个牧场的直径就是牧…
题目描述 在人类的触角伸向银河系的边缘之际,普通人上太空旅行已经变得稀松平常了.某理科试验班有n个人,现在班主任要从中选出尽量多的人去参加一次太空旅行活动. 可是n名同学并不是和平相处的.有的人,比如小A和小B整天狼狈为奸,是好朋友:但还有的人,比如(政治敏感)和(政治敏感)就水火不相容.这n名同学,由于是理科生,都非常的理性,所以“朋友的朋友就是朋友”和“敌人的朋友就是敌人”这两句话对这些同学无效.换句话说,有可能小A和小B是朋友,小B和小C是朋友,但是小A和小C两人势如水火. 任意两个人之间…
P1027 Car的旅行路线 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t. 图例(从上而下) 机场 高速铁路 飞机航线 注意:图中并没有 标出所有的铁路与航线. 那么Car应如何安排到城市B的路线才能尽可能的节省花费呢?她发现这并不是一个简单的问题,于是她来向你…
P1522 牛的旅行 Cow Tours 题目描述 农民 John的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧区通过任何路径都不连通.这样,Farmer John就有多个牧场了. John想在牧场里添加一条路径(注意,恰好一条).对这条路径有以下限制: 一个牧场的直径就是牧场中最远的两个牧区的距离(本题中所提到的所有距离指的都是最短的距离).考虑如下的有5个牧区的牧场,牧区用"*"表示,路径用直线表示.每一个牧区都…
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1027 Car的旅行路线 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有4个飞机场,分别位于一个矩形的4个顶点上,同一个城市中2个机场之间有1条笔直的高速铁路,第 $ i $ 个城市中高速铁路了的单位里程价格为 $ T_i $ ,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为 $ t $ 注意:图…
原题链接 将每个城市拆成四个点,即四个机场来看,那么这题就是求最短路. 不过建图有些麻烦,先要找出第四个机场的坐标. 设另外三个机场的坐标为\((x_1, y_1), (x_2, y_2), (x_3, y_3)\),其中\((x_1, y_1), (x_3, y_3)\)为对角线两点. 那么第四个点的坐标即为\((x_1 + x_3 - x_2, y_1 + y_3 - y_2)\). 这个是通过对角线交点为中点,坐标为线段两端点坐标和的一半算得.当然可以用勾股等方法算. 至于找出对角线的两端…
题面 传送门 题解 如果暴力的话,我们可以把所有的二元组全都扔进一个队列里,然后每次往两边更新同色点,这样的话复杂度是\(O(m^2)\) 怎么优化呢? 对于一个同色联通块,如果它是一个二分图,我们只要保留一棵生成树就够了.否则我们对其中任意一个点连一个自环 为什么呢?因为如果是二分图,重复走可以改变长度,但是无法改变长度的奇偶性.而如果不是二分图,那么是可以改变奇偶性的,我们需要连上一条自环来资瓷这种情况 对于不同的颜色,它们之间肯定是二分图,保留一棵生成树就可以了 这样的话可以把边数优化到\…
题目描述 农民 John的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧区通过任何路径都不连通.这样,Farmer John就有多个牧场了. John想在牧场里添加一条路径(注意,恰好一条).对这条路径有以下限制: 一个牧场的直径就是牧场中最远的两个牧区的距离(本题中所提到的所有距离指的都是最短的距离).考虑如下的有5个牧区的牧场,牧区用“*”表示,路径用直线表示.每一个牧区都有自己的坐标: (15,15) (20,15) D…
题目:https://www.luogu.org/problemnew/show/P1522 懒于仔细分情况而直接像题解那样写floyd然后不明白最后一步max的含义了... 分开考虑怎么保证在一个内呢?如果新连边的min与原直径的max在三个连通块里怎么办? 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; dou…
题目描述 农民 John的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧区通过任何路径都不连通.这样,Farmer John就有多个牧场了. John想在牧场里添加一条路径(注意,恰好一条).对这条路径有以下限制: 一个牧场的直径就是牧场中最远的两个牧区的距离(本题中所提到的所有距离指的都是最短的距离).考虑如下的有5个牧区的牧场,牧区用“*”表示,路径用直线表示.每一个牧区都有自己的坐标: (15,15) (20,15) D…
题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个 矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间均有航线, 所有航线单位里程的价格均为t. 图例(从上而下) 机场 高速铁路 飞机航线 注意:图中并没有 标出所有的铁路与航线. 那么Car应如何安排到城市B的路线才能尽可能的节省花费呢?她发现这并不是一个简单的问题,于是她来向你请教. 找出一条从城市A到…
https://www.luogu.org/problem/show?pid=1027#sub 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t. 图例(从上而下) 机场 高速铁路 飞机航线 注意:图中并没有 标出所有的铁路与航线. 那么Car应如何安排到城市B的路线…
题目链接:https://www.luogu.org/problem/P1522 思路:编号,然后跑floyd,这是很清楚的.然后记录每个点在这个联通块中的最远距离. 然后分连通块,枚举两个点(不属于同一个连通块的)建边,计算可能的直径 dist[i] + dist[j] + dis(i,j). 当然,这里有一个需要注意,(sccno[x]表示属于哪一个编号的连通块,sccdis[x]表示该连通块的直径), 在枚举点建边,形成新的牧场,得到新的可能的直径时,dist[i] + dist[j] +…
https://www.luogu.org/problem/P1522 好坑啊,居然还有直径不通过新边的数据,还好不是很多. 注意一定要等Floyd跑完之后再去找连通块的直径,不然一定是INF. #include <iostream> #include <cmath> #include <cstdio> #include <algorithm> using namespace std; int pre[155]; void init(int n) { for…
先上一波题目  https://www.luogu.org/problem/P1522 这道题其实就是给你几个相互独立的连通图 问找一条新的路把其中的两个连通图连接起来后使得新的图中距离最远的两个点之间的距离最小 当然这里不同点之间的距离都取最短的距离 那么我们可以预处理一波 每个独立的连通图里面最远的两个点的距离是多少 可以利用并查集维护哪些点是在同一个连通图中的 然后每一个点单独跑一遍最短路 然后就可以处理出每个独立的连通图的‘直径’了 然后再暴力枚举新的边(i,j) 新形成的图的直径就是两…
题目:https://www.luogu.org/problemnew/show/P1081 预处理从每个点开始a能走多少.b能走多少.可以像dp一样从后往前推. 但有X的限制.所以该数组可以变成倍增的样子. 预处理第一步的找下一个点可以从后往前弄,在树状数组上二分.然后正常转移即可. 树状数组上的二分有细节: 找第一个 f 值为需要的值k的,可以if( query( mid )>=k )ans=mid,r=mid-1:也可以if( query(mid)<=k-1 )ans=mid,l=mid…
题面 简化版题意:给出 \(n\) 个点 \(m\) 条边的无向图,可以交换任意两条边的权值 \(k\) 次,求 \(1\) 结点到 \(n\) 结点的最短路. 考虑\(\text{DP}\). 把所有的边从小到大排序,那么贪心的做的话,肯定有一个分界线 \(L\) ,使得 \(L\) 前面的边全部被使用,后面的边都不会被选用,我们枚举这个分界线 \(L\). 设 \(dp_{i,j,k}\) 表示当前是 \(i\) 结点,使用了前 \(L\) 条边的 \(j\) 条,用了 \(k\) 次魔法.…
qwq 首先,我们观察到题目中提到的每天只能乘坐一次航班的限制,很容易想到建分层图,也就是通过枚举天数,然后每天加入一层新的点. (然而我一开始想的却是erf) 考虑从小到大枚举天数,然后每次新建一层. 首先我们先让\(S->第0层的对应的起始节点\),流量为初始人数的边 然后相邻两层之间,若存在航班,则两个之间连流量为次数的边. 对应节点之间连\(inf\)的边,表示可以待在原地. 然后每一层的结束节点,都向T连边,表示每一天都可以有人到达终止节点. 然后直接跑最大流,假设初始人数是\(k\)…
题目描述 S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教.绝地教都是常见的信仰. 为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行.旅行时他们总会走最短路,并且为了避免麻烦,只在信仰和他们相同的城市留宿.当然旅程的终点也是信仰与他相同的城市.S国政府为每个城市标定了不同的旅行评级,旅行者们常会记下途中(包括起点和终点)留宿过的城市的评级总和或最大值. 在S国的历史上常会发生以下…
输入输出样例 输入样例#1: 1 3 10 1 3 1 1 1 3 3 1 30 2 5 7 4 5 2 1 8 6 8 8 11 6 3 输出样例#1: 47.5 import java.util.Scanner; //洛谷 public class car的旅行路线 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in);…
洛谷P1522 [USACO2.4]牛的旅行 Cow Tours 题意: 给出一些牧区的坐标,以及一个用邻接矩阵表示的牧区之间图.如果两个牧区之间有路存在那么这条路的长度就是两个牧区之间的欧几里得距离. 对于一个联通块,称之为一个牧场,也就是说一个牧场内任意一个牧区都可以到达该牧场内的任意的另外一个牧区. 对于一个牧场,它的直径是这个联通块内最短路的最大值. 现在让你在恰当地选择两个牧场,在这两个牧场中各自选一个牧区,在这两个牧区之间建路,要求建路之后所有牧场中最大的直径最小.这里其实如果产生了…
洛谷题目传送门 LCT维护子树信息常见套路详见我的总结 闲话 题目摘自WC模拟试题(by Philipsweng),原题目名Wander,"山村游历"是自己搞出来的中文名. 数据自测,如有问题欢迎反馈 对耐心的人来说,这道题是个裸题(当我什么也没说) 题面 题目描述 在一个偏远的小镇上,有一些落后的山村.山村之间通过一些道路来连接.当然有的山村可能不连通. 一年当中会发生很多大事,比如说有人提议要在山村\(i\)与\(j\)之间修建一条道路,也有人觉得山村\(i\)和\(j\)之间的道…
洛谷题目传送门 LCT维护子树信息常见套路详见我的总结 闲话 题目摘自WC模拟试题(by Philipsweng),原题目名Wander,"山村游历"是自己搞出来的中文名. 数据自测,如有问题欢迎反馈 对耐心的人来说,这道题是个裸题(当我什么也没说) 题面 题目描述 在一个偏远的小镇上,有一些落后的山村.山村之间通过一些道路来连接.当然有的山村可能不连通. 一年当中会发生很多大事,比如说有人提议要在山村\(i\)与\(j\)之间修建一条道路,也有人觉得山村\(i\)和\(j\)之间的道…