jzoj3852-单词接龙【0/1分数规划,负环】
正题
题目链接:https://jzoj.net/senior/#main/show/3852
题目大意
nnn个单词串,头尾有两个相同单词就可以连在一起,求一个最长的环使得平均单词长度最长。
解题思路
其实总共26∗2626*2626∗26个点,然后求一个回路使得平均边长最长
就是0/1分数规划问题
二分一个答案midmidmid,将边权改为mid−wmid-wmid−w,然后跑负环判断即可。
codecodecode
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int N=800;
const double eps=1e-5;
struct node{int to,next,c;double w;
}a[100010];
queue<int> q;
int n,ls[N],cnt[N],tot;
char s[1100];
bool v[N];
double f[N];
void addl(int x,int y,int c){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;a[tot].c=c;
}
bool SPFA(){for(int i=1;i<N;i++)f[i]=0,v[i]=cnt[i]=1,q.push(i);memset(cnt,0,sizeof(cnt));while(!q.empty()){int x=q.front();q.pop();v[x]=0;for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(f[x]+a[i].w<f[y]){f[y]=f[x]+a[i].w;cnt[y]=cnt[x]+1;if(cnt[y]>=N&&a[i].w<0)return 1;if(!v[y]){v[y]=1;q.push(y);}}}}return 0;
}
bool check(double x){for(int i=1;i<=tot;i++)a[i].w=x-a[i].c;if(SPFA()) return 1;return 0;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%s",s+1);int l=strlen(s+1);int x=(s[1]-'a')*26+s[2]-'a'+1,y=(s[l-1]-'a')*26+s[l]+1-'a';addl(x,y,l);}double l=2,r=1000;while(r-l>eps){double mid=(l+r)/2;if(check(mid)) l=mid;else r=mid;}if(check(l))printf("%lf",l);else printf("No solution.");
}
jzoj3852-单词接龙【0/1分数规划,负环】相关推荐
- P3288-[SCOI2014]方伯伯运椰子【0/1分数规划,负环】
正题 题目链接:https://www.luogu.com.cn/problem/P3288 题目大意 给出nnn个点mmm条边的一张图,没条边iii流量为cic_ici,费用是did_idi,然 ...
- bzoj 3232 圈地游戏——0/1分数规划(或网络流)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 当然是0/1分数规划.但加的东西和减的东西不在一起,怎么办? 考虑把它们合在一起.因为 ...
- jzoj4017-逃跑【0/1分数规划,线段树,dp】
正题 题目链接:https://jzoj.net/senior/#contest/show/3011/2 题目大意 n+1n+1n+1个连续的地方,每个地方有(a,b,c)(a,b,c)(a,b,c) ...
- [学习笔记]0/1分数规划
对于一类:每个元素有两个属性A,B 选择若干个元素,使得$\frac{\sum A_i}{\sum B_i}$取到最值. 这类问题可以采用二分的方法.然后构造出模型用于判定. 推导: 二分mid 如果 ...
- #0/1分数规划,SPFA,负环#洛谷 1768 天路
题目链接 分析 可以发现,这是一道0/1分数规划的题目,需要二分答案,然后判定是否存在负环,所以说bfs貌似不高效,那就用dfs吧,若二分答案为0,即不合法 代码 #include <cstdi ...
- 转载二分 01 分数规划即最大化平均值的证明0/1分数规划、最优比率生成树、最优比率环
首页 新随笔 联系 管理 订阅 随笔- 20 文章- 0 评论- 9 [Algorithm]01分数规划--Update:2012年7月27日 [关键字] 0/1分数规划.最优比率生成树.最优比率 ...
- POJ2976——Dropping tests(0/1分数规划)
传送门 最简单的分数规划 对于最终答案ans,有 ans=Σai∗100Σbians=\frac{Σa_i*100}{Σb_i}ans=ΣbiΣai∗100 则 Σbi∗ans=Σai∗100Σ ...
- [JSOI2016] 最佳团体(0/1分数规划 + 树形dp)
problem luogu-P4322 solution 假设每个人是否被招募,用 xi={0,1}x_i=\{0,1\}xi={0,1} 代替,max∑pi∗xi∑si∗xi\max\frac{ ...
- P4292-[WC2010]重建计划【长链剖分,线段树,0/1分数规划】
正题 题目链接:https://www.luogu.com.cn/problem/P4292 题目大意 给出nnn个点的一棵树,然后求长度在[L,U][L,U][L,U]之间的一条路径的平均权值最大. ...
最新文章
- 360度看IT行业--3月12日西安工程大学讲座
- java 7 g1_java7中G1垃圾收集器使用和流程总结
- python画柱形图-python绘制双柱形图代码实例
- java之 代理设计模式
- 组播 收发_[HCIARoutingamp;Switching]网络篇单播广播和组播
- 多模块Struts应用程序的几个问题(及部分解决方法)
- 我经历的学术与论文写作
- Java常用类(三):FileUtils类
- 核心单词Word List 2
- 问卷星指定内容批量自动填写的Python+Selenium+Pandas+Excel解决方案
- CCS编译错误:error #10099-D和error#10234-D unresolved symbols remain解决方法
- 学习新方法:帅到没朋友
- Linux端口被占用怎么解决
- 苹果CMSV10本地DPLAYER播放器自动下一集设置教程
- java swing+mysql简单零件销售管理系统、订货决策系统
- CVE-2021-40539-Zoho ManageEngine ADSelfService Plus如何从bypass到RCE
- c语言基础题(笔记二)
- 难道天才都容易罹患精神疾病?还是西方医学不知道风邪所犯?
- Nacos默认用户名和密码
- 电脑win10显示依赖服务器,Win10系统弹出错误1068依赖服务或组无法启动如何解决...
热门文章
- 手把手教你用Java的swing制作计算器
- 创维linux进入工厂模式,创维电视怎么进入工厂模式?
- java 逐行写入csv_go|使用go读写CSV文件
- java io流 教程_Java基础教程:IO流与文件基础
- ssd windows未能启动服务器,ssd安装win10无法启动你安装方法对吗?来看一下
- leetcode844. 比较含退格的字符串
- 哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之上——原理与设计
- [mybatis]映射文件_select_返回集合(List,Map)
- [C++11]initializer_lisr模板类的使用
- 洛谷 P1958 上学路线-dfs