正题

题目链接: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分数规划,负环】相关推荐

  1. P3288-[SCOI2014]方伯伯运椰子【0/1分数规划,负环】

    正题 题目链接:https://www.luogu.com.cn/problem/P3288 题目大意 给出nnn个点mmm条边的一张图,没条边iii流量为cic_ici​,费用是did_idi​,然 ...

  2. bzoj 3232 圈地游戏——0/1分数规划(或网络流)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 当然是0/1分数规划.但加的东西和减的东西不在一起,怎么办? 考虑把它们合在一起.因为 ...

  3. 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) ...

  4. [学习笔记]0/1分数规划

    对于一类:每个元素有两个属性A,B 选择若干个元素,使得$\frac{\sum A_i}{\sum B_i}$取到最值. 这类问题可以采用二分的方法.然后构造出模型用于判定. 推导: 二分mid 如果 ...

  5. #0/1分数规划,SPFA,负环#洛谷 1768 天路

    题目链接 分析 可以发现,这是一道0/1分数规划的题目,需要二分答案,然后判定是否存在负环,所以说bfs貌似不高效,那就用dfs吧,若二分答案为0,即不合法 代码 #include <cstdi ...

  6. 转载二分 01 分数规划即最大化平均值的证明0/1分数规划、最优比率生成树、最优比率环

    首页 新随笔 联系 管理 订阅 随笔- 20  文章- 0  评论- 9 [Algorithm]01分数规划--Update:2012年7月27日 [关键字] 0/1分数规划.最优比率生成树.最优比率 ...

  7. POJ2976——Dropping tests(0/1分数规划)

    传送门 最简单的分数规划 对于最终答案ans,有 ans=Σai∗100Σbians=\frac{Σa_i*100}{Σb_i}ans=Σbi​Σai​∗100​ 则 Σbi∗ans=Σai∗100Σ ...

  8. [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{ ...

  9. P4292-[WC2010]重建计划【长链剖分,线段树,0/1分数规划】

    正题 题目链接:https://www.luogu.com.cn/problem/P4292 题目大意 给出nnn个点的一棵树,然后求长度在[L,U][L,U][L,U]之间的一条路径的平均权值最大. ...

最新文章

  1. 360度看IT行业--3月12日西安工程大学讲座
  2. java 7 g1_java7中G1垃圾收集器使用和流程总结
  3. python画柱形图-python绘制双柱形图代码实例
  4. java之 代理设计模式
  5. 组播 收发_[HCIARoutingamp;Switching]网络篇单播广播和组播
  6. 多模块Struts应用程序的几个问题(及部分解决方法)
  7. 我经历的学术与论文写作
  8. Java常用类(三):FileUtils类
  9. 核心单词Word List 2
  10. 问卷星指定内容批量自动填写的Python+Selenium+Pandas+Excel解决方案
  11. CCS编译错误:error #10099-D和error#10234-D unresolved symbols remain解决方法
  12. 学习新方法:帅到没朋友
  13. Linux端口被占用怎么解决
  14. 苹果CMSV10本地DPLAYER播放器自动下一集设置教程
  15. java swing+mysql简单零件销售管理系统、订货决策系统
  16. CVE-2021-40539-Zoho ManageEngine ADSelfService Plus如何从bypass到RCE
  17. c语言基础题(笔记二)
  18. 难道天才都容易罹患精神疾病?还是西方医学不知道风邪所犯?
  19. Nacos默认用户名和密码
  20. 电脑win10显示依赖服务器,Win10系统弹出错误1068依赖服务或组无法启动如何解决...

热门文章

  1. 手把手教你用Java的swing制作计算器
  2. 创维linux进入工厂模式,创维电视怎么进入工厂模式?
  3. java 逐行写入csv_go|使用go读写CSV文件
  4. java io流 教程_Java基础教程:IO流与文件基础
  5. ssd windows未能启动服务器,ssd安装win10无法启动你安装方法对吗?来看一下
  6. leetcode844. 比较含退格的字符串
  7. 哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之上——原理与设计
  8. [mybatis]映射文件_select_返回集合(List,Map)
  9. [C++11]initializer_lisr模板类的使用
  10. 洛谷 P1958 上学路线-dfs