题目传送门

话说这道题不分析样例实在是太亏了...结论题啊...

但是话说回来不知道它是结论题的时候会不会想到猜结论呢...毕竟样例一、二都有些特殊。

观察样例发现选中的子图都只有一条边。

于是猜只有一条边的时候解最优。

飞快地写个暴力,然后和结论对拍,然后假装这个结论是对的,然后就$AC$了(大雾

还是证明一下这个结论吧:

用反证法。

设这样三个点的点权分别为$A$,$B$,$C$,两条边的边权为$n$,$m$

假设子图中有$A,B,C$三个点比只有两个点更优。

也就是三个点都选的答案比只选$AB$和只选$BC$都大。

三个都选的答案:$(A+B+C)/(n+m)$

只选$AB$:$(A+B)/m$

只选$BC$:$(B+C)/n$

则:

$$(A+B+C)/(n+m)>(A+B)/m$$

$$(A+B+C)/(n+m)>(B+C)/n$$

化简:(权都是正数)

$$(A+B+C)*m>(A+B)*(n+m)$$

$$(A+B+C)*n>(B+C)*(n+m)$$

$$↓$$

$$C*m>A*n+B*n$$

$$A*n>B*m+C*m$$

相加:
$$C*m+A*n>A*n+B*n+B*m+C*m$$

$0>B*n+B*m$

由于$B$和$n$,$m$都是正数,导出矛盾。

所以假设不成立。

另外,如果$AC$之间有连边的话,那三个都选肯定更不优,分子不变,分母变大了嘛。只选$AC$都不用讨论,至少在这种情况下三个都选干不过只选$AB$或$BC$。

暴力程序(拿来对拍)

有同学写的$2^n$枚举子集的暴力,我觉得略麻烦,还是更喜欢自己的(笑)

甚至还想优化一下自己的暴力,就是在以$1$以外的点为起点的时候,就不把$1$加进去,因为$1$有的状态已经在$1$为起点的算过了。

但是反正是拿来写对拍嘛,节约考试时间。

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<vector>
  4. #include<queue>
  5. using namespace std;
  6. #define N 505
  7. #define ll long long
  8. int n,m;
  9. int a[N];
  10. bool vis[N];
  11. double ans=0.0;
  12. vector<pair<int,int> >G[N];
  13. int rd()
  14. {
  15. int f=,x=;char c=getchar();
  16. while(c<''||c>''){if(c=='-')f=-; c=getchar();}
  17. while(c>=''&&c<=''){x=(x<<)+(x<<)+(c^);c=getchar();}
  18. return f*x;
  19. }
  20. void dfs(int u,int d,int b)
  21. {
  22. for(int i=;i<G[u].size();i++)
  23. {
  24. int v=G[u][i].first;
  25. if(vis[v]) continue;
  26. vis[v]=;
  27. int tmp=;
  28. for(int j=;j<G[v].size();j++)
  29. if(vis[G[v][j].first]) tmp+=G[v][j].second;
  30. dfs(v,d+a[v],b+tmp);
  31. vis[v]=;
  32. }
  33. if(b==) return ;
  34. ans=max(ans,1.0*d/b);
  35. }
  36. int main()
  37. {
  38. n=rd(),m=rd();
  39. for(int i=;i<=n;i++)
  40. a[i]=rd();
  41. for(int i=;i<=m;i++)
  42. {
  43. int u=rd(),v=rd(),w=rd();
  44. G[u].push_back(make_pair(v,w));
  45. G[v].push_back(make_pair(u,w));
  46. }
  47. for(int i=;i<=n;i++)
  48. {
  49. vis[i]=;
  50. dfs(i,a[i],);
  51. vis[i]=;
  52. }
  53. printf("%.9f\n",ans);
  54. return ;
  55. }
  56. //不分析样例真的是个不好的习惯啊

Code

正解程序:(比暴力好写)

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<vector>
  4. #include<queue>
  5. using namespace std;
  6. #define N 505
  7. #define ll long long
  8. int n,m;
  9. int a[N];
  10. double ans=0.0;
  11. int rd()
  12. {
  13. int f=,x=;char c=getchar();
  14. while(c<''||c>''){if(c=='-')f=-; c=getchar();}
  15. while(c>=''&&c<=''){x=(x<<)+(x<<)+(c^);c=getchar();}
  16. return f*x;
  17. }
  18. int main()
  19. {
  20. n=rd(),m=rd();
  21. for(int i=;i<=n;i++)
  22. a[i]=rd();
  23. for(int i=;i<=m;i++)
  24. {
  25. int u=rd(),v=rd(),w=rd();
  26. ans=max(ans,1.0*(a[u]+a[v])/w);
  27. }
  28. printf("%.9f\n",ans);
  29. return ;
  30. }

Code

CF444A DZY Loves Physics【结论】的更多相关文章

  1. cf444A DZY Loves Physics

    A. DZY Loves Physics time limit per test 1 second memory limit per test 256 megabytes input standard ...

  2. Codeforces 444A DZY Loves Physics(图论)

    题目链接:Codeforces 444A DZY Loves Physics 题目大意:给出一张图,图中的每一个节点,每条边都有一个权值.如今有从中挑出一张子图,要求子图联通,而且被选中的随意两点.假 ...

  3. CF 444C DZY Loves Physics(图论结论题)

    题目链接: 传送门 DZY Loves Chemistry time limit per test1 second     memory limit per test256 megabytes Des ...

  4. Codeforces Round #254 (Div. 1) A. DZY Loves Physics 智力题

    A. DZY Loves Physics 题目连接: http://codeforces.com/contest/444/problem/A Description DZY loves Physics ...

  5. CodeForces 444C. DZY Loves Physics(枚举+水题)

    转载请注明出处:http://blog.csdn.net/u012860063/article/details/37509207 题目链接:http://codeforces.com/contest/ ...

  6. BZOJ3570 : DZY Loves Physics I

    考虑两个质量均为m,速度分别v1.v2的小球发生完全弹性碰撞的影响: 由动能守恒得: $\frac{1}{2}mv_1^2+\frac{1}{2}mv_2^2=\frac{1}{2}mv_1'^2+\ ...

  7. 【权值分块】bzoj3570 DZY Loves Physics I

    以下部分来自:http://www.cnblogs.com/zhuohan123/p/3726306.html 此证明有误. DZY系列. 这题首先是几个性质: 1.所有球质量相同,碰撞直接交换速度, ...

  8. 【Codeforces 444A】DZY Loves Physics

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 两个点的子图他们的"密度"是比所有联通生成子图都要大的 "只要胆子大,遇到什么问题都不怕!" [代码] ...

  9. @codeforces - 444A@ DZY Loves Physics

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个 n 点 m 边的图,边有边权,点有点权. 找到一个连通 ...

随机推荐

  1. TypeHandler简介及配置(mybatis源码篇)

    作者:南柯梦 Mybatis中的TypeHandler是什么? 无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器 ...

  2. PHP流协议

    目前对PHP流协议的定义是数据传输过程中,不同数据类型采用不同处理函数的技术规范(个人理解)这一规范比起传统文件处理函数来的更规范(诸如fget,fwrite,fopen,fclose等) $opts ...

  3. Fiddler 显示客户端请求时间,请求耗时,服务器地址

    # 效果图 打开 CustomRules.js (C:\Users\UsersName\Documents\Fiddler2\Scripts):打开 fiddler 时 windows 快捷键 -&g ...

  4. String替换占位符

    /** * 依次替换占位符 * 例如: 姓名:{s},电话:{s},邮箱:{s} --> 姓名:小张,电话:18800000001,邮箱:abc@123.com * pattern = &quo ...

  5. Word:自动编号超过9后缩进太大

     造冰箱的大熊猫,本文适用于Microsoft Office 2007@cnblogs 2019/7/30 文中图片可通过点击鼠标右键查看大图 1.场景 如下图所示,使用Word的自动编号功能时,当编 ...

  6. 使用ImageProcessor、CodeCarvings.Piczard组件生成缩略图和添加水印

    技术栈: 1.ImageProcessor(专业图像处理,不能合成水印,NetCore中有它的升级版ImageSharp目前是预览包) 2.CodeCarvings.Piczard(缩略图,水印都能搞 ...

  7. Codeforces 1106E. Lunar New Year and Red Envelopes(DP)

    E. Lunar New Year and Red Envelopes 题意: 在长度为n的时间轴上,有k个红包,每个红包有领取时间段[s,t],价值w,以及领了个这个红包之后,在时间d到来之前无法再 ...

  8. AVL平衡树(非指针实现)

    看了网上三四篇博客,学习了AVL树维护平衡的方式.但感觉他们给出的代码都有一点瑕疵或者遗漏,懂得了思想之后,花了一些时间把他们几篇的长处结合起来,没有使用指针,实现了一下.每个小逻辑功能都抽象成了函数 ...

  9. springMVC课程笔记(二)springMVC组件配置

    1.springMVC的DispatcherServlet前段控制器配置,如下图所示在web.xml中配置如下内容: 2.在spring配置文件中,配置处理器适配器HandlerAdapter和映射器 ...

  10. Linux如何修改环境变量

    如果想要环境变量永久生效可以修改下面两个文件中的任何一个: 1 /etc/profile 2 .bash_profile 其中,/etc/profile是全局的环境变量,对所有用户生效,而.bash_ ...