cf1076d 贪心最短路】的更多相关文章

#include<bits/stdc++.h> #include<queue> using namespace std; #define maxn 300005 #define ll long long struct qnode{ ll v,c,id; qnode(){} qnode(ll v,ll c,ll id):v(v),c(c),id(id){} bool operator<(const qnode&r)const{ return c>r.c; } };…
题目传送门(内部题115) 输入格式 第一行两个正整数$n,m$. 接下来$m$行,每行$4$个正整数$u_j,v_j,L_j,R_j$. 接下来一行$n$个数,若第$i$个数为$1$,则$i$号同学最后学会了毒瘤算法:若第$i$个数为$-1$,则$i$号同学最后没有学会毒瘤算法.若第$i$个数为$0$,则不知道$i$号同学最后是否学会了毒瘤算法. 输出格式 若结果不可能出现,输出一行$Impossible$:否则,输出$m$行,第$j$行一个正整数表示第$j$条信息中的两名同学在哪一天共用午餐…
题目链接: http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3946 题解: 用dijkstra跑单元最短路径,如果对于顶点v,存在一系列边(ui,v)使得dis[v]最小(dis[v]表示0到v的距离).这些边能且只能选一条,那么我们自然应该选cost最小的那个边了. #include<iostream> #include<cstdio> #include<cstring> #include<…
题目:http://codeforces.com/contest/360/problem/E 首先,每条边不是选 \( l[i] \) 就是选 \( r[i] \): 做法就是先把边权都设成 \( r[i] \),然后做 \( dijkstra \),如果有一条可改的边 \( (a,b) \) 而且 \( dis1[a] < dis2[a] \),那么就改边权为 \( l[i] \): 然后重复这个过程直到无边可改: 因为要考虑平局,所以只要 \( dis1[a] <= dis2[a] \)…
题意及思路:https://blog.csdn.net/huanghongxun/article/details/49846927 在假设所有边都是最大值的情况下,如果第一个人能比第二个人先到,那就缩短这条边. 代码: #include <bits/stdc++.h> #define LL long long using namespace std; const int maxn = 10010; int head[maxn], Next[maxn * 2], ver[maxn * 2], f…
WC2019 游记 课件 wc2019.zip_免费高速下载|百度网盘-分享无限制 提取码: un6z day 0 打飞机去广州... 在飞机上刷了爱乐(le)之城, 相当好看... 广二好大! 哈三中的操场一圈只有160m...瑟瑟发抖... 感觉大概有我们学校的10个大? 晚上开幕式... 作为HL省老少边穷地区愉快的坐在了第二排. 然后开始愉快的招租广告位23333 day 1 讲课的第一天 上午松松松讲评测系统, 不过窝并没有去. 然后去第二课堂听生成函数. 虽然老师是常州的教练, 但是…
基础(65) 巨水无比(4):1214.3816:2B题:1000A+B:2462:输出10个1 模拟/枚举/暴力(15):4063傻子模拟:1968小学生暴力:1218前缀和暴力:3856读英文:4106直接算:1800暴力判断:2208暴力判断(要会邻接表):1028枚举:1789&1830高能暴力:2241暴力:2120神奇的暴力:4145子集暴力:4029模拟处理:1086DFS树:1224暴力:3444暴力判 人类智慧题(17):2463输出0或1:1192找规律:1413奥数:143…
题目大意:给定 N 个点 M 条边的无向简单联通图,留下最多 K 条边,求剩下的点里面从 1 号顶点到其余各点最短路大小等于原先最短路大小的点最多怎么构造. 题解:我们可以在第一次跑 dij 时直接采用贪心策略,即:若当前答案集合的大小小于 K 且优先队列非空,则继续优先队列BFS,每次把一条边加入到答案集合中.因为是在求解最短路过程中向答案集合中加边,可知这就是一种最优策略. 代码如下 #include <bits/stdc++.h> using namespace std; typedef…
题目链接: 题目 E. Paths and Trees time limit per test 3 seconds memory limit per test 256 megabytes inputstandard input outputstandard output 问题描述 Little girl Susie accidentally found her elder brother's notebook. She has many things to do, more important…
<题目链接> 题目大意: n个点,m条边的无向图,现在需要删除一些边,使得剩下的边数不能超过K条.1点为起点,如果1到 i 点的最短距离与删除边之前的最短距离相同,则称 i 为 "good vertice",现在问你如果要使 "good vertice"最多,需要留下多少条边,并且输出这些边的序号. 解题分析: 我们最多只能留k条边 (或者是n-1条边,因为经过Dijkstra松弛后,其实只需要n-1条边就能使起点到所有点的最短距离仍然为未删边时的最短距…
[题目大意] 题目将从某点出发的所有最短路方案中,选择边权和最小的最短路方案,称为最短生成树. 题目要求一颗最短生成树,输出总边权和与选取边的编号.[题意分析] 比如下面的数据: 5 5 1 2 2 2 3 2 3 4 16 1 5 18 4 5 2 1 这个图对于从 1 出发,有两种最短路. 这种最短路方案中 dis[2]=2,dis[3]=4,dis[4]=20,dis[5]=18.边权总和 Sum=44 但如果这样选边,1点到各点的距离依然为最短路,但Sum降为了24. 那么如何选择到最优…
https://codeforces.com/contest/1146/problem/D 题意 有一只青蛙,一开始在0位置上,每次可以向前跳a,或者向后跳b,定义\(f(x)\)为青蛙在不跳出区间[0,x]能跳到多少个不同的位置上,计算\(\sum^m_{i=0}f(i)\) 题解 计算点贡献,计算有多少个区间包含i即i的贡献,设d[i]为走到i经过的最大的点,假如i点能走到,那么包含他的区间就是[d[i],d[i]+1,d[i]+2,...,n] 裴蜀定理有\(ax+by=gcd(a,b)\…
题意 求一个生成树,使得任意点到源点的最短路等于原图中的最短路.再让这个生成树边权和最小. http://codeforces.com/contest/545/problem/E 思路 先Dijkstra一下,再对每个点连的边判断是不是最短路上的边,如果是那再贪心取最小的边即可. 代码 #include<bits/stdc++.h> using namespace std; #define ll long long const ll inf=1e18; const int N=6e5+5; s…
题目传送门(内部题149) 输入格式 每个测试点第一行为四个正整数$n,b,s,m$,含义如题目所述. 接下来$m$行,每行三个非负整数$u,v,l$,表示从点$u$到点$v$有一条权值为$l$的有向边,数据保证图是强连通的,也就是任意两个点之间都可以互相走到. 输出格式 对每组数据输出一行一个非负整数表示答案. 样例 样例输入1: 5 4 2 105 2 12 5 13 5 54 5 01 5 12 3 13 2 52 4 52 1 13 4 2 样例输出1: 样例输入2: 5 4 2 105…
Cycling Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1418    Accepted Submission(s): 467 Problem Description You want to cycle to a programming contest. The shortest route to the contest migh…
正解:贪心 解题报告: 传送门! 贪心真的都是些神仙题,,,以我的脑子可能是不存在自己想出解这种事情了QAQ 然后直接港这道题解法趴,,, 首先因为这个是对称的,所以显然的是可以画一条斜右上的对角线,路径一定是关于这条对角线对称的,欧克然后就成功简化了点儿题目 然后就思考运动轨迹应该是什么样儿的?就可以发现,肯定是走到一层,然后沿着这一层的边框走到对角线处 这个很好解释嘛,如果你走到这一层,又回到外面那一层继续走,前面的代价都是一样的,可以考虑直接比较分叉那儿,如果内部那一层大一些,可以不走那一…
BZOJ4152 AMPPZ2014 The Captain Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. Input 第一行包含一个正整数n(2<=n<=200000),表示点数. 接下来n行,每行包含两个整数x[i],yi,依次表示每个点的坐标. Output 一个整数,即最小费用. Sample Input 5 2 2 1 1 4 5 7 1 6 7 Sample Outp…
题解 我的歪解 我首先想的是分治,我想二分肯定不行,因为它是没有单调性的. 我想了一下感觉它的大部分数据应该是有凸性的(例如\(y=x^2\)的函数图像),所以可以三分. 下面是我的三分代码(骗了不少分) 三分模板没过的我居然瞎歪歪了一个三分 歪解code: #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cctype> #inc…
题意:给你一张有向图,叫你给出四个点的序列a,b,c,d,使得这四个点依次间的最短路之和最大.(4 ≤ n ≤ 3000, 3 ≤ m ≤ 5000) 思路:O(n4)可用来对拍 我们需要O(n2)级别的算法 若枚举c,d,预处理出x到b比较远的3个x,d到y比较远的3个y,时间复杂度O(9n2) 为什么是3个而不是2个? abc已枚举,若d的备选是ab就要GG,所以应该多一个备用,也就是三个点 ..,..,..]of longint; head,vet,next,b,flag,q,x,y:..…
Description 小明来到青岛上学已经一年了,他给青岛这座城市画了一张地图.在这个地图上有n个点,小明的起始点为1号点,终点为n号点,并且地图上的所有边都是单向的.小明知道从i号点到j号点的时间花费为w分钟,那么问题来了,求从1号点到n号的最小时间花费是多少?这个最少花费的路径有多少条? Input 输入格式:输入文件第一行为两个空格隔开的数n,m,表示这张地图里有多少个点及有多少边的信息.下面m行,每行三个数I.J.w,表示从I点到J点有道路相连且花费为w.(注意,数据提供的边信息可能会…
题目链接:http://codeforces.com/gym/101061/problem/C 题意:一张图,图上的边有两种,一种是车道,一种是人行道.一个人要从A点到B点,可以坐车也可以走人行道.这个人希望在走最少的路的情况下尽可能早地到达B点(保证走路最少的清空下坐车时间最少),问要走多少路,一共花费多久. pair<int, int>保存这个人需要走路的时间和共计的时间,读入更新图的时候需要判断仔细.利用pair自身比较运算符优先判断first元素可以直接跑floyd. /* ━━━━━…
传送门 uoj Solution 简单题? 考虑一条路径长什么样子,一定是经过某一个字母环的左上角,那么答案就很简单了. 我们记一个前缀最小值,这样子让他一路走下去一定是最优! 然后扫一遍就好了. 代码实现 /* mail: mleautomaton@foxmail.com author: MLEAutoMaton This Code is made by MLEAutoMaton */ #include<stdio.h> #include<stdlib.h> #include&l…
题意:给出一棵树上的2*k个节点,给他们配对,使得他们之间的距离和最大. 思路:一条边的两侧如果有一侧没有给定的节点就不会被经过…… 如果有1个节点就会被经过1次…… 如果两侧分别有x,y个给定节点就会被经过min(x,y)次 因为要使总路程最大就是让每一条路被走过最多的次数 肯定是两侧各取一个 剩下的只能在某侧内部解决 所以按此统计即可 答案很大 用INT64 ..]of longint; n,k,tot,i:longint; ans:int64; procedure add(a,b:long…
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! Description "第七套广播体操,原地踏步--走!" 众所周知,跳蚤们最喜欢每天早起做早操,经常天还没亮就齐刷刷地站在操场做着反复纵跳热热身.跳晚国在研制三星 note7 的时候注意到了这点,于是他们打算让炸弹更快地引爆,这样就可以消灭更多…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5545 题意:有N个村庄, M 个战场: $ 1 <=N,M <= 10^5 $; 其中曹操会从第i个村庄中选出若个人 在x[i]战场为其作战, 同时第i个村庄也会有相同的人数在y[i]战场为袁绍作战: 每个战场i 有对应的重要度w[i],w[i]的值为 0,1,2: w[i]为2的战场,要求曹操的兵数(从村庄得到的) 严格大于 袁绍的兵的数量: w[i]为1的战场,曹操的兵数不少于袁绍的兵即可:…
题意:蚂蚁在木棍上爬,速度1cm/s,给出木棍长度和每只蚂蚁的位置,问蚂蚁全部下木棍的最长时间和最短时间. 模拟一下,发现其实灰常水的贪心... 不能直接求最大和最小的= =.只要求出每只蚂蚁都走长路下木棍时的最大值,和走短路时的就行了. 代码: /* * Author: illuz <iilluzen@gmail.com> * Blog: http://blog.csdn.net/hcbbt * File: uva10714.cpp * Lauguage: C/C++ * Create Da…
题目链接: http://codeforces.com/problemset/problem/704/B 题目大意: 给N个点,起点S终点T,每个点有X,A,B,C,D,根据I和J的X坐标可得I到J的距离计算公式:(题目描述的那个i<j有错!害我WA了好几次) |xi - xj| + ci + bj seconds if x[j] < x[i]. |xi - xj| + di + aj seconds otherwise (x[j] > x[i]). 求从起点到终点,经过N个点恰好一次的…
图论中一个经典问题就是求最短路.最为基础和最为经典的算法莫过于 Dijkstra 和 Floyd 算法,一个是贪心算法,一个是动态规划.这也是算法中的两大经典代表.用一个简单图在纸上一步一步演算,也是非常好理解的.理解透自己多默写几次就可以记住,机试时基本的工作往往就是高速构造邻接矩阵了. 对于平时的练习,一个非常厉害的 ACMer  @BenLin_BLY 说:"刷水题能够加快我们编程的速度,做经典则能够让我们触类旁通,初期假设遇见非常多编不出.最好还是就写伪代码,理思路.在纸上进行总体分析和…
Dijkstra算法: 解决的问题: 带权重的有向图上单源最短路径问题.且权重都为非负值.如果采用的实现方法合适,Dijkstra运行时间要低于Bellman-Ford算法. 思路: 如果存在一条从i到j的最短路径(Vi.....Vk,Vj),Vk是Vj前面的一顶点.那么(Vi...Vk)也必定是从i到k的最短路径.为了求出最短路径,Dijkstra就提出了以最短路径长度递增,逐次生成最短路径的算法.譬如对于源顶点V0,首先选择其直接相邻的顶点中长度最短的顶点Vi,那么当前已知可得从V0到达Vj…
前言:针对单源最短路算法,目前最经典的思路即标号算法,以Dijkstra算法和Bellman-Ford算法为根本演进了各种优化技术和算法.针对复杂网络,传统的优化思路是在数据结构和双向搜索上做文章,或者针对不必要的循环进行排除.近年来,最短路算法大量应用于需要高及时性的领域,比如GIS领域,也大量应用于网络规模巨大的社会网络分析领域,这使得传统思路并不能很好地解决,于是把最短路算法思路本身抽象成两阶段算法,第一阶段为数据预处理,第二阶段为实时地搜索.这二者是互相矛盾的,如何找到平衡是各种算法技术…