洛谷 P2085 最小函数值】的更多相关文章

P2085 最小函数值(minval) 218通过 487提交 题目提供者该用户不存在 标签堆高级数据结构 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). 输入输出格式 输入格式: 输入数据:第一行输入两个正整数n和m.以下n行每行三个正整数,其中第i行的三个数分别位Ai…
题目 首先我们先分析一下题目范围,\(a,b,c\) 都是整数,因此我们可以得出它的函数值在\((0,+\infty )\)上是单调递增的,,然后我们可以根据函数的性质,将每个函数设置一个当前指向位置,都从从小的自变量开始找,每次找到最小的函数,并将最小函数的当前指向位置+1,因为并不知道最小函数自变量+1后的因变量是否要比现在的值要大,因此在下一次的比较中也要比较.且我们可以用堆来优化. 代码 #include <iostream> #include <cstdio> #incl…
题目大意:有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,要求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). 解题思路:因为$n,m\leq 10000$,暴力枚举肯定是不可取的.我们发现,Fi(x)一定不会大于Fi(x+1),那么我们可以把所有Fi(1)放进一个小根堆里,每次取出一个Fi(x),就把Fi(x+1)放进去,这样就能保证答案从小到大.时间复杂度为$O(m\log n)$. C++ Cod…
题目描述 有n个函数,分别为\(F_1,F_2,...,F_n\).定义\(F_i(x)=A_i*x^2+B_i*x+C_i (x∈N*)\).给定这些\(A_i.B_i和C_i\),请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). 输入格式 输入数据:第一行输入两个正整数n和m.以下n行每行三个正整数,其中第i行的三个数分别位Ai.Bi和Ci.\(Ai<=10,Bi<=100,Ci<=10 000\). 输出格式 输出数据:输出将这n个函数所有可以生成的函数值排序后的前…
目录 题目 思路 \(Code\) 题目 戳 思路 首先这些函数全部单带递增,因为\(a\),\(b\),\(c\)都是正整数. 我们将全部的函数的\(x\)为\(1\)时的函数值放入优先度列(小根堆),然后输出并弹出堆顶元素,将该函数的\(x++\)再将函数值放入优先队列. \(Code\) #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<…
题目描述 有n个函数,分别为F1,F2,-,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). 输入输出格式 输入格式: 输入数据:第一行输入两个正整数n和m.以下n行每行三个正整数,其中第i行的三个数分别位Ai.Bi和Ci.Ai<=10,Bi<=100,Ci<=10 000. 输出格式: 输出数据:输出将这n个函数所有可以生成的函数值排序后的前m个元素.这m个数应该输出到一行,用空…
洛谷4951 地震 #include<iostream> #include<cstdio> #include<algorithm> #define go(i,a,b) for(register int i=a;i<=b;i++) #define ll long long #define db long double #define M 10001 #define N 401 #define inf 1e15 #define eps 1e-12 using name…
P2085 最小函数值(minval) 题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). 输入输出格式 输入格式: 输入数据:第一行输入两个正整数n和m.以下n行每行三个正整数,其中第i行的三个数分别位Ai.Bi和Ci.Ai<=10,Bi<=100,Ci<=10 000. 输出格式: 输出数据:输出将这n个函数所有可以生成的函数值排序…
题面 Bzoj 洛谷 题解(0/1分数规划+spfa) 考虑\(0/1\)分数规划,设当前枚举到的答案为\(ans\) 则我们要使(其中\(\forall b_i=1\)) \[ \frac{\sum_{i=1}^ta[e_i]}{\sum_{i=1}^tb[v_i]}< ans \\ \therefore\sum a[e_i]-ans*b[v_i]=\sum a[e_i]-ans<0 \] 则问题就变成了判断图内是否存在一个负环... 时间复杂度:\(O(nmlog)\) #include…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - CodeVS1904 题目传送门 - 洛谷2764 题意概括 给出一个有向无环图,现在请你求一些路径,这些路径覆盖且仅覆盖所有的点一次. 现在让你求最少要几条路径. CodeVS1904 - 只需要输出几条边 洛谷2764 - 先输出路径,再输出几条.(但是截止2017-08-11,还没有SPJ) 题解 话说我这一题一开始在洛谷做,由于没有SPJ,多次爆零,据说在洛谷的那个数据只有网络流可以做?匈牙利挂了(…
题目描述:          有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个).    输入样例: 3 10 4 5 3 3 4 5 1 7 1    输出样例: 9 12 12 19 25 29 31 44 45 54题目分析:(MLE,TLE做法)看到题目我们第一眼肯定想到的是将每个函数枚举m次,然后对这n*m个数进行排序,输出前m个.代码如下: #…
https://www.luogu.org/problem/show?pid=2085 题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). 输入输出格式 输入格式: 输入数据:第一行输入两个正整数n和m.以下n行每行三个正整数,其中第i行的三个数分别位Ai.Bi和Ci.Ai<=10,Bi<=100,Ci<=10 000. 输出格式: 输…
题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Aix^2+Bix+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). 输入输出格式 输入格式: 输入数据:第一行输入两个正整数n和m.以下n行每行三个正整数,其中第i行的三个数分别位Ai.Bi和Ci.Ai<=10,Bi<=100,Ci<=10 000. 输出格式: 输出数据:输出将这n个函数所有可以生成的函数值排序后的前m个元素.这m个数应该输出到一行,用空…
题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Aix^2+Bix+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). 输入输出格式 输入格式: 输入数据:第一行输入两个正整数n和m.以下n行每行三个正整数,其中第i行的三个数分别位Ai.Bi和Ci.Ai<=10,Bi<=100,Ci<=10 000. 输出格式: 输出数据:输出将这n个函数所有可以生成的函数值排序后的前m个元素.这m个数应该输出到一行,用空…
题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). 输入输出格式 输入格式: 输入数据:第一行输入两个正整数n和m.以下n行每行三个正整数,其中第i行的三个数分别位Ai.Bi和Ci.Ai<=10,Bi<=100,Ci<=10 000. 输出格式: 输出数据:输出将这n个函数所有可以生成的函数值排序后的前m个元素.这m个数应该输出到一行,…
题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). 输入输出格式 输入格式: 输入数据:第一行输入两个正整数n和m.以下n行每行三个正整数,其中第i行的三个数分别位Ai.Bi和Ci.Ai<=10,Bi<=100,Ci<=10 000. 输出格式: 输出数据:输出将这n个函数所有可以生成的函数值排序后的前m个元素.这m个数应该输出到一行,…
有向无环图的最小路径点覆盖 最小路径覆盖就是给定一张DAG,要求用尽量少的不相交的简单路径,覆盖有向无环图的所有顶点. 有定理:顶点数-路径数=被覆盖的边数. 要理解的话可以从两个方向: 假设DAG已经被n条路径覆盖,那么任意一条路径又有 顶点数-1=边数.那么对所有路径等式两边求和,每条路径的顶点数之和=所有点数,-1的和=路径数,每条路径的边数之和=被覆盖的边数..这样上面的定理就成立了. 还有一种方法,我们要先引入二分图 我们把原图中的点拆成出点(边从该点出)和入点(边从该点入),即原图点…
类型:Floyd 传送门:>Here< 题意:定义一条路径密度 = 该路径长度 / 边数.给出一张$DAG$,现有$Q$次询问,每次给出$X,Y$,问$X,Y$的最小密度路径($N \leq 50$) 解题思路 由于$N$非常小,考虑$Floyd$求最短路.但是这题与$Floyd$的不同就在于需要除以边数 可以枚举边的数量.在边的数量$k$确定时,只需要求得恰好经过$k$条边的最短路即可.有没有联想到矩阵乘法……但是这道题是要求先预处理之后询问,因此矩阵乘法的$log \ M$优化就没有意义了…
P2764 最小路径覆盖问题 问题描述: 给定有向图\(G=(V,E)\).设\(P\) 是\(G\) 的一个简单路(顶点不相交)的集合.如果\(V\) 中每个顶点恰好在\(P\) 的一条路上,则称\(P\)是\(G\) 的一个路径覆盖.\(P\) 中路径可以从\(V\) 的任何一个顶点开始,长度也是任意的,特别地,可以为\(0\).\(G\) 的最小路径覆盖是\(G\)的所含路径条数最少的路径覆盖.设计一个有效算法求一个有向无环图\(G\) 的最小路径覆盖. 提示:设\(V={1,2,....…
题目:https://www.luogu.org/problemnew/show/P1029 题意: 给定两个数$x$和$y$,问能找到多少对数$P$$Q$,使得他们的最小公约数是$x$最大公倍数是$y$ 思路: 我们知道两个数的最小公倍数是他们的乘积除以最大公约数. 也就是说我们可以把$P,Q$表示成 $P = k_1x, Q = k_2x, y = \frac{PQ}{x}$ 即$k_{1}k_{2}x = y$,且$k_1,k_2$互质 那么我们只用在$\frac{x}{y}$中找到有多少…
这题其实并不难,重点在你对回文数的了解,根本就不需要高精度. 打个比方: 对于一个形如 ABCDEFGH 的整数 有且仅有一个比它大的最小回文数 有且仅有一个比它小的最大回文数 而整数 ABCDDCBA 一定是其中之一 ~ 如:99299是比99200大的最小回文数 10101 是比 10201 小的最大回文数 所以可以得出结论: ~ 输入一个整数 ABCD ,若整数ABBA 比 ABCD 大,则 ABBA 就是比它大的最小回文数,然后就可以直接输出这个答案了. ~ 而如果 ABBA 比 ABC…
题目链接:https://www.luogu.org/problemnew/show/P2764 题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开始,长度也是任意的,特别地,可以为0.G 的最小路径覆盖是G 的所含路径条数最少的路径覆盖.设计一个有效算法求一个有向无环图G 的最小路径覆盖.提示:设V={1,2,.... ,n},构造网络G1=(V…
题目戳 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元. 输入输出格式 输入格式: 第一行输入两个正整数n,m,分别表示总人数和可以互相转账的人的对数. 以下m行每行输入三个正整数x,y,z,表示标号为x的人和标号为y的人之间互相转账需要扣除z%的手续费 (z<100). 最后一行输入两个正整数A,B.数据保证A与B之间可以直接或间接地转账. 输出格式:…
题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开始,长度也是任意的,特别地,可以为0.G 的最小路径覆盖是G 的所含路径条数最少的路径覆盖.设计一个有效算法求一个有向无环图G 的最小路径覆盖.提示:设V={1,2,.... ,n},构造网络G1=(V1,E1)如下: 每条边的容量均为1.求网络G1的( 0 x , 0 y )最大流. «编程任务:…
题目描述 回文数是从左向右读和从右向左读结果一样的数字串. 例如:121.44 和3是回文数,175和36不是. 对于一个给定的N,请你寻找一个回文数P,满足P>N. 满足这样条件的回文数很多,你的任务是输出其中最小的一个. 输入输出格式 输入格式: 1行,一个正整数N.N的数值小于10^100,并且N没有前导0. 输出格式: 你的程序应该输出一行,最小的回文数P(P>N). 输入输出样例 输入样例#1: 复制 44 输出样例#1: 复制 55 说明 50%的数据,N<10^9 100%…
传送门 先说做法:把原图拆成一个二分图,每一个点被拆成$A_i,B_i$,若原图中存在边$(u,v)$,则连边$(A_u,B_v)$,然后$S$对所有$A$连边,所有$B$对$T$连边,然后跑一个最大流求二分图的最大匹配,那么最小路径覆盖就就是点数减去最大匹配 证明:设一开始的时候每一条路径都只覆盖一个点,然后考虑如何把两条路径合起来.因为两条路径不能相交,所以在二分图上一条路径必定是增广路,而这一条增广路上的匹配数就是被合并的边数,也就是减少的路径数.所以只要求出最大匹配,再用一开始的$n$条…
题意 题目链接 Sol zz floyd. 很显然的一个dp方程\(f[i][j][k][l]\)表示从\(i\)到\(j\)经过了\(k\)条边的最小权值 可以证明最优路径的长度一定\(\leqslant N\) 然后一波\(n^4\) dp就完了 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int INF = 1e9 + 10; inline in…
https://www.luogu.org/problemnew/show/1609 题目描述 回文数是从左向右读和从右向左读结果一样的数字串. 例如:121.44 和3是回文数,175和36不是. 对于一个给定的N,请你寻找一个回文数P,满足P>N. 满足这样条件的回文数很多,你的任务是输出其中最小的一个. 输入输出格式 输入格式: 1行,一个正整数N.N的数值小于10^100,并且N没有前导0. 输出格式: 你的程序应该输出一行,最小的回文数P(P>N). 输入输出样例 输入样例#1: 复…
经典二分图匹配问题.把每个点拆成两个,对于原图中的每一条边(i,j)连接(i,j+n),最小路径覆盖就是点数n-二分图最大匹配.方案直接顺着匹配dsf.. #include<iostream> #include<cstdio> using namespace std; const int N=505,M=120005; int n,m,h[N],cnt,lk[N],t,v[N],ans; struct qwe { int ne,to; }e[M]; int read() { int…
P1576 最小花费 题目背景 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元. 输入输出格式 输入格式: 第一行输入两个正整数n,m,分别表示总人数和可以互相转账的人的对数. 以下m行每行输入三个正整数x,y,z,表示标号为x的人和标号为y的人之间互相转账需要扣除z%的手续费 (z<100). 最后一行输入两个正整数A,B.数据保证A与B之间可以直接或…