首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
[BJOI2019]奥术神杖——AC自动机+DP+分数规划+二分答案
】的更多相关文章
[BJOI2019]奥术神杖——AC自动机+DP+分数规划+二分答案
题目链接: [BJOI2019]奥术神杖 答案是$ans=\sqrt[c]{\prod_{i=1}^{c}v_{i}}=(\prod_{i=1}^{c}v_{i})^{\frac{1}{c}}$. 这样不大好求,我们将这个式子取$ln$,变成$ln\ ans=\frac{1}{c}\sum_{i=1}^{c}ln\ v_{i}$. 这显然是一个分数规划,每次二分一个答案$mid$,将每个串的权值都减去$mid$,那么只需要求最大价值是否大于$0$即可. 剩下的问题就是一个在$AC$自动机上的$D…
LOJ 3089 「BJOI2019」奥术神杖——AC自动机DP+0/1分数规划
题目:https://loj.ac/problem/3089 没想到把根号之类的求对数变成算数平均值.写了个只能得15分的暴力. #include<cstdio> #include<cstring> #include<algorithm> #define db double using namespace std; ,K=; ; ,c[N][K],fl[N]; db ans; ],nxt[N<<],vl[N],sm[N]; int l[N],v[N],dy[…
P5319-[BJOI2019]奥术神杖【0/1分数规划,AC自动机,dp】
正题 题目链接:https://www.luogu.com.cn/problem/P5319 题目大意 一个长度为\(n\)的串\(T\),用\(0\sim 9\)填充所有的\(.\). 然后给出\(m\)个串和它们的价值. 一个填充方案的价值等于:若\(T\)中出现了\(c\)个给出的串,那价值等于它们的价值乘积开\(c\)次根. \(1\leq m\leq 1501,1\leq V_i\leq 10^9\) 解题思路 \[ans=\sqrt[c]{\prod V_i} \] \[\ln an…
【Luogu】P3705新生舞会(费用流+分数规划+二分答案)
题目链接 本来以为自己可以做出来,结果……打脸了 (貌似来wc立了好几个flag了,都没竖起来) 不过乱蒙能蒙出一个叫“分数规划”的东西的式子还是很开心的 观察$C=\frac{a_{1}+a_{2}+.......+a_{n}}{b_{1}+b_{2}+.....b_{n}}$ 然后可以把分母乘到左边 然后可以把C乘进去 然后二分C,建图求最大权匹配,判断跟答案的关系. #include<cstdio> #include<cstdlib> #include<cctype&g…
[SDOI2017] 新生舞会 - 二分图最大权匹配,分数规划,二分答案
有一个二分图,每个部都有 \(n\) 个点,每条边有两个参数 \(a_e, b_e\),求一种匹配,使得 \(\sum a_i / \sum b_i\) 最大 Solution 显然的分数规划,考虑二分一个答案 \(mid\),那么设每条边的权值为 \(c_i = a_i - kb_i\) 然后跑二分图最大权匹配,如果跑出来答案大于 \(0\) 就表明 OK,可以将答案调大,否则调小. KM 在稠密的时候比 MCMF 跑的快点,对这题的话其实都能过吧 #include <bits/stdc++.…
poj2728 生成树01分数规划 (二分答案)
给定整数序列a,b,求出下式的最大值 sum{ai*xi}/sum{bi*xi},xi=0|1 通俗来说,就是选出一些整数对(ai,bi),使得选出的a之和与选出的b之和商最大化 二分答案L,即选出的a之和与b之和的商是L 判断L是否成立,只要判断是否存在sum{ai-L*bi}>0即可 poj2728为要找出各边收益除以各边成本的最大生成树 那么二分商L,另边权变成ai-L*bi求最大生成树,如果和>0,答案可行 #include <iostream> #include <…
hdu6070(分数规划/二分+线段树区间更新,区间最值)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6070 题意: 给出一个题目提交序列, 从中选出一个正确率最小的子串. 选中的子串中每个题目当且仅当最后一次提交是正确的. 思路: 分数规划 二分答案, 然后在 check 函数中查找是否存在某个区j间 [l, r] 使得 sum(l, r) / (r - l + 1) <= mid, 即 sum(l, r) + l * mid <= (r + 1) * mid. 可以用个线段树来维护 sum(l…
luoguP5319 [BJOI2019]奥术神杖(分数规划,AC自动机DP)
luoguP5319 [BJOI2019]奥术神杖(分数规划,AC自动机DP) Luogu 题解时间 难点在于式子转化,设有c个满足的子串,即求最大的 $ ans = \sqrt[c]{\prod_{ i = 1 }^{ c } w_{i} } $ . 取个对数变成 $ \ln Ans = \frac{1}{c} \sum_{ i = 1 } ^ { c } \ln w_{i} $ . 很明显是0/1分数规划. 二分mid倒腾一下式子变成 $ \sum_{ i = 1 }^{ c } ( \ln…
[BJOI2019]奥术神杖(分数规划,动态规划,AC自动机)
[BJOI2019]奥术神杖(分数规划,动态规划,AC自动机) 题面 洛谷 题解 首先乘法取\(log\)变加法,开\(c\)次根变成除\(c\). 于是问题等价于最大化\(\displaystyle \frac{\sum val_i}{c}\).典型的分数规划的形式. 二分权值\(k\),每个点的点权变成\(val_i-k\),转为求最值,那么直接在\(AC\)自动机上\(dp\)就行了. 注意精度问题. #include<iostream> #include<cstdio> #…
POJ1625 Censored!(AC自动机+DP)
题目问长度m不包含一些不文明单词的字符串有多少个. 依然是水水的AC自动机+DP..做完后发现居然和POJ2778是一道题,回过头来看都水水的... dp[i][j]表示长度i(在自动机转移i步)且后缀状态为自动机第j个结点的合法字符串数 dp[0][0]=1 转移转移... 注意要用高精度,因为答案最多5050. 还有就是要用unsigned char,题目的输入居然有拓展的ASCII码,编码128-255. #include<cstdio> #include<cstring>…