【luogu P1343 地震逃生】 题解】的更多相关文章

题目链接:https://www.luogu.org/problemnew/show/P1343 菜 #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 10000 + 10; const int inf = 1e9; int n, m…
P1343 地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,x名学生分几批才能运完. 输入格式 第一行3个整数n,m,x(x<2^31,n<=200,m<…
P1343地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,x名学生分几批才能运完. 输入输出格式 输入格式: 第一行3个整数n,m,x(x<2^31,n<=20…
题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,x名学生分几批才能运完. 输入输出格式 输入格式: 第一行3个整数n,m,x(x<2^31,n<=200,m<=20…
题目大意:有n个点m条单向边,每条边有一个容量.现有x人要分批从1走到n,问每批最多能走多少人,分几批运完(或输出无法运完). 解题思路:一看就是网络流的题目.每批最多能走多少人,即最大流.分几批运完,除一下即可.当最大流为0时无法运完. 以下是Dinic算法的代码(为什么我那么喜欢用Dinic?因为我个人认为它好写!): C++ Code: #include<cstdio> #include<queue> #include<cstring> using namespa…
P1343 地震逃生 题目描述 汶川地震发生时,四川XX中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,x名学生分几批才能运完. 输入输出格式 输入格式: 第一行3个整数n,m,x(\(x<2^{31},n…
P1343 地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有\(n\)个点,\(m\)条边.1号点为教室,\(n\)号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,\(x\)名学生分几批才能运完. 输入输出格式 输入格式: 第一行3个整数\(…
一道傻吊的网络流题,wori我写的读入优化怎么老T? 远离读入优化报平安? #include<bits/stdc++.h> #define N 4005 #define inf 1000000007 using namespace std; *N],tot=,n,m,x,s,t,ans; ]; inline void addedge(int u,int v,int f){ G[tot].u=u;G[tot].v=v;G[tot].f=f;G[tot].next=head[u];head[u]=…
Time Limit: 1 second Memory Limit: 64 MB [问题描述] 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点 ,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分 成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生 ,x名学生分几批才能运完. [输入…
题意 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,x名学生分几批才能运完. \(x<2^{31},n \leq 200,m \leq 2000\) 分析 都不用建模了,直接跑网络…
题目连接:https://www.luogu.org/problemnew/show/P5022 \(NOIP2018 DAY2T1\) 考场上只写了60分,很容易想到当 m = n - 1 时的树的做法. 读题推一下样例不难发现,如果选择一个分支节点就必须走到头--直到一个节点没有子树. 那么我们就可以贪心的求得最小字典序序列,每次选择节点编号最小的走. 即对当前节点的所有子节点排序选择最小编号的往下进行即可. 60分code: #include <cstdio> #include <…
题目链接:https://www.luogu.org/problemnew/show/P2831 写点做题总结:dp,搜索,重在设计状态,状态设的好,转移起来也方便. 对于一条抛物线,三点确定.(0,0)是固定的,所以我们一条抛物线要用两只猪确定.再多的猪就只能用来判断是不是在这条抛物线上了. 于是我们把猪分成两种:在已有方程里的猪,单独的猪还没有确定方程. 那么对于一只猪,就会有被以前方程覆盖/和前面单独的猪构成新抛物线/自己单独. #include <cmath> #include <…
题目链接:https://www.luogu.org/problemnew/show/P2827 35分:暴力sortO(mnlogn). 80分:考虑到每次不好维护不被切的点+q,正难则反.改成维护被切的点-q,再维护一个q*m,跑大根堆O(mlogn). 100分:考虑到先切的点一定比后切的点分出来的大. 若切两个点a,b.a > b,a切成a1 > a2,T秒后,切b,b1 > b2 此时a1 = Tq + pa,a2 = Tq + (1-p)a, b1 = pTq + pb,b2…
题目链接:https://www.luogu.org/problemnew/show/P3959 我只是心血来潮想学SA(考场上骗分总行吧). 这个题可以状压DP.爆搜+剪枝.有意思的还是随机化搜索(是的,这个题用的不叫SA,没有降温). code: #include <queue> #include <ctime> #include <cstdio> #include <cstdlib> #include <cstring> #include…
题目链接:https://www.luogu.org/problemnew/show/P3410 这个题就是求一个最大权闭合图 在一个图中,一些点构成一个集合,且集合中的出边指向的终点也在这个集合中,则我们称这个集合为闭合图. 整个图中点的权值之和最大的闭合图,为最大权闭合图. 最大权闭合图可以用网络流来求 造出一个超级源点S和一个超级汇点T,把S连边到所有带有正权的点上,容量是这个点的权:把所有带负权的点连边到T,容量是这个点的权的相反数.原来的边呢,把它们的容量都设成无限大. (带负权的是员…
题目链接:https://www.luogu.org/problemnew/show/P1113 菜 #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 50000 + 10; const int inf = 0x7fffffff; i…
题目链接:https://www.luogu.org/problemnew/show/P4114 1.把边权转化到点权:选取连接这条边的两个点中较深的一个. 2.查询点到点之间的边权时,要从seg[x]+1 到 seg[y],因为seg[x]其实连接的是上面一条边的边权. #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define ll long…
题目链接:https://www.luogu.org/problemnew/show/P3979 除了换根操作都是裸的树剖 所以换根时考虑: 1.我查询的根等于换的根:无影响 2.我查询的根是换的根的子树:无影响 3.我查询的根是换的根的祖先:查询 除换的根及其往上直到为要查询的根的第一层儿子的祖先(设为S)的子树 以外的所有节点 (此时满足seg[S] <= seg[root] <= seg[S]+size[S]-1) 求LCA 查询1到seg[S]-1 和 seg[S]+size[S]到n…
题目链接:https://www.luogu.org/problemnew/show/P2169 tarjan缩点 + SPFA 缩完点之后加边注意别写错. 也可以不用建两个图,可以在一张图上判断是否强连通再SPFA. #include <queue> #include <stack> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm&g…
题目链接:https://www.luogu.org/problemnew/show/P2024 摘吊打集训队的九日dalao一句话 关于带有多个相对集合的全集,我们可以多开几倍的空间.每一倍的元素表示这个当前里的相对元素 那么这道题,既然只有三种关系,我们就可以搞三个并查集来记录不同的关系. 我们令fa[i]表示自己本身,fa[i+n]表示猎物,fa[i+n+n]表示天敌. 接着就是对这道题的处理: 首先,吐槽一句,这nm什么xjb食物链..明明是个环.. 其次,吐槽两句,这nm为什么无脑相信…
最近一直在学习数论,讲得很快,害怕落实的不好,所以做一道luogu的同余方程练练手. 关于x的同余方程 ax ≡ 1 mod m 那么x其实就是求a关于m的乘法逆元 ax + my = 1 对于这个不定方程的全部解是 { x = x0 + m/gcd(a,m) { y = y0 - a/gcd(a,m) 我们可以用exgcd来求出其中的一组特解x0 那么什么是exgcd? 先不考虑exgcd,假设当前我们要处理的是求出 a 和 b的最大公约数,并求出 x 和 y 使得 a*x + b*y= gc…
题目链接:https://www.luogu.org/problemnew/show/P1816 用st表来解决rmq问题. 表示同时培训学的st表,然后我就忘得差不多了,在这里推荐一篇blog 大佬cym的 自己再转载一篇 ST表学习 作用:ST算法是用来求解给定区间RMQ的最值,本文以最小值为例 举例: 给出一数组A[0~5] = {5,4,6,10,1,12},则区间[2,5]之间的最值为1. 方法:ST算法分成两部分:离线预处理 (nlogn)和 在线查询(O(1)).虽然还可以使用线段…
对于2017 D1 T2 这道题 实实在在是个码力题,非常考验耐心. 其实大体的思路并不是非常难想出来,但是要注意的小细节比较多. 题目链接:https://www.luogu.org/problemnew/show/P3952 思路 对于每一个程序,先读入L和O(),并将其中的时间复杂度抠出来. 其次整行读入字符串,即所给定的程序. 判断第一个字符是F or E F i x y 需要把x y拿出来,把i压进栈 E 退栈 压进i后为了方便退栈及退栈时判断,用一个flag标记 每做完一个程序,与前…
题目链接:https://www.luogu.org/problem/show?pid=1343 dinic跑最大流. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; <<; int inline readint(){ // int Num;char ch; // while((ch=getchar())<'0'||ch>'9');Num=ch…
原文:https://www.luogu.org/problemnew/solution/P1018?page=7 题目:P1018[乘积最大] 前言: 这题的正解理论上说是DP,可是由于民间数据太水,用暴力过并不难 整体思路: 利用一个b数组标记每一位之间是否分割(1位分割,0为连接). 利用STL里的 next_permutation 求出b的各种排列(即暴力枚举每种情况). 由于本题数据规模大,所以要使用高精度计算每种分割的最后结果,并找出最大. next_permutation函数: 即…
题目链接: https://www.luogu.org/problemnew/show/P1552 分析: 一开始愣是没看懂题,后面发现就是你要找一个树上点集使得各点权值之和小于\(M\),并且找一个点集的公共祖先\(Anc\)(管理者),使\(Anc\)的领导力乘以点集大小最大 一开始想DP,一看数据范围,我们可以稍微暴力一点,枚举每个点作为管理者的答案最大值,我们只要在子树中权值最小的点选起使权值之和小于\(M\)就可以了,一下问题简单了许多. 再暗中观察分析,发现这个信息是可以维护转移的,…
前言: 这题真ex... 强烈谴责在题解里面放毒瘤题链接的屑出题人! 吐 ️ 解析: 这题分成两步走. 首先,既然题目中的修改操作是区间加等差数列,那么就容易想到在差分数组上进行操作. 然后就是相当恶心的查询. 转化到差分数组上,相信会有一部分小朋友会向我一样,傻乎乎的以为就是求一个区间极大相同连续段个数... 其实我是联想到了这个题..虽说线段树维护的思路是相似的,但是显然这道黑题比那个树剖难维护的多... 回到这个题.刚才说到,求区间极大相同连续段个数其实是不行的. 因为可以发现下面的数组:…
题目传送门 [题目大意] 一个口袋里装了t种颜色的球,第i种颜色的球的数目为a[i],每次随机抽一个小球,然后再放d个这种颜色的小球进口袋. 给出n个要求,第x个抽出的球颜色为y,求满足条件的概率. [思路分析] 抽出一个球颜色为i的概率设为f[i],球的总数为sum 在第k步时,$f[i]=\frac{a[i]}{sum}$ 那么在k+1步就有两种情况: 1.第k步抽中了颜色为i的球,那么此时概率为$\frac{a[i]}{sum}*\frac{a[i]+d}{sum+d}$ 2.第k步没有抽…
题目传送门 [题目大意] 给定一个正整数N,可以被分解为两个不同的质数p和q,计算出r=(p-1)*(q-1). 然后给出了一个小于r且与r互质的整数e,已知e*d≡1(mod r),求d. 最后给定一个数c,求n=cd%N [思路分析] 这题总体来说思路真的很简单QWQ 首先既然是找因数,那么可以立刻想到Pollard-rho(其实只是因为这是一道Pollard-Rho的模板题) 然后求d的过程就是求e的乘法逆元嘛也很简单 最后求cd,就很明显是快速幂了 于是就……over了!? [代码实现]…
include include include include using namespace std; const int maxn = 505000; int n, m, dis[maxn], vis[maxn], ans; struct edge{ int from, to, next, len; }e[maxn<<2]; int head[maxn], cnt; void add(int u, int v, int w) { e[++cnt].from = u; e[cnt].len…