CF444A DZY Loves Physics【结论】
话说这道题不分析样例实在是太亏了...结论题啊...
但是话说回来不知道它是结论题的时候会不会想到猜结论呢...毕竟样例一、二都有些特殊。
观察样例发现选中的子图都只有一条边。
于是猜只有一条边的时候解最优。
飞快地写个暴力,然后和结论对拍,然后假装这个结论是对的,然后就$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$为起点的算过了。
但是反正是拿来写对拍嘛,节约考试时间。
#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
#define N 505
#define ll long long
int n,m;
int a[N];
bool vis[N];
double ans=0.0;
vector<pair<int,int> >G[N];
int rd()
{
int f=,x=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-; c=getchar();}
while(c>=''&&c<=''){x=(x<<)+(x<<)+(c^);c=getchar();}
return f*x;
}
void dfs(int u,int d,int b)
{
for(int i=;i<G[u].size();i++)
{
int v=G[u][i].first;
if(vis[v]) continue;
vis[v]=;
int tmp=;
for(int j=;j<G[v].size();j++)
if(vis[G[v][j].first]) tmp+=G[v][j].second;
dfs(v,d+a[v],b+tmp);
vis[v]=;
}
if(b==) return ;
ans=max(ans,1.0*d/b);
}
int main()
{
n=rd(),m=rd();
for(int i=;i<=n;i++)
a[i]=rd();
for(int i=;i<=m;i++)
{
int u=rd(),v=rd(),w=rd();
G[u].push_back(make_pair(v,w));
G[v].push_back(make_pair(u,w));
}
for(int i=;i<=n;i++)
{
vis[i]=;
dfs(i,a[i],);
vis[i]=;
}
printf("%.9f\n",ans);
return ;
}
//不分析样例真的是个不好的习惯啊
Code
正解程序:(比暴力好写)
#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
#define N 505
#define ll long long
int n,m;
int a[N];
double ans=0.0;
int rd()
{
int f=,x=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-; c=getchar();}
while(c>=''&&c<=''){x=(x<<)+(x<<)+(c^);c=getchar();}
return f*x;
}
int main()
{
n=rd(),m=rd();
for(int i=;i<=n;i++)
a[i]=rd();
for(int i=;i<=m;i++)
{
int u=rd(),v=rd(),w=rd();
ans=max(ans,1.0*(a[u]+a[v])/w);
}
printf("%.9f\n",ans);
return ;
}
Code
CF444A DZY Loves Physics【结论】的更多相关文章
- cf444A DZY Loves Physics
A. DZY Loves Physics time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces 444A DZY Loves Physics(图论)
题目链接:Codeforces 444A DZY Loves Physics 题目大意:给出一张图,图中的每一个节点,每条边都有一个权值.如今有从中挑出一张子图,要求子图联通,而且被选中的随意两点.假 ...
- CF 444C DZY Loves Physics(图论结论题)
题目链接: 传送门 DZY Loves Chemistry time limit per test1 second memory limit per test256 megabytes Des ...
- Codeforces Round #254 (Div. 1) A. DZY Loves Physics 智力题
A. DZY Loves Physics 题目连接: http://codeforces.com/contest/444/problem/A Description DZY loves Physics ...
- CodeForces 444C. DZY Loves Physics(枚举+水题)
转载请注明出处:http://blog.csdn.net/u012860063/article/details/37509207 题目链接:http://codeforces.com/contest/ ...
- 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+\ ...
- 【权值分块】bzoj3570 DZY Loves Physics I
以下部分来自:http://www.cnblogs.com/zhuohan123/p/3726306.html 此证明有误. DZY系列. 这题首先是几个性质: 1.所有球质量相同,碰撞直接交换速度, ...
- 【Codeforces 444A】DZY Loves Physics
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 两个点的子图他们的"密度"是比所有联通生成子图都要大的 "只要胆子大,遇到什么问题都不怕!" [代码] ...
- @codeforces - 444A@ DZY Loves Physics
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个 n 点 m 边的图,边有边权,点有点权. 找到一个连通 ...
随机推荐
- Codeforces Round #588 (Div. 2) C. Anadi and Domino(思维)
链接: https://codeforces.com/contest/1230/problem/C 题意: Anadi has a set of dominoes. Every domino has ...
- ansible-playbook 显示命令返回结果
--- - hosts: test gather_facts: F #开启debug vars: war: "ps -ef | grep tomcat | grep -v grep | aw ...
- vue上传大文件的解决方案
众所皆知,web上传大文件,一直是一个痛.上传文件大小限制,页面响应时间超时.这些都是web开发所必须直面的. 本文给出的解决方案是:前端实现数据流分片长传,后面接收完毕后合并文件的思路. 实现文件夹 ...
- 在 CentOS 7 上安装 RabbitMQ
RabbitMQ 服务器在安装之前需要安装 erlang. 最新版本的 RabbitMQ 3.8.0 需要 Erlang 21.3 以上的版本支持. 在这里,我们需要在你的 CentOS 中安装 Er ...
- Noip2011 提高组 Day1 T3 Mayan游戏
题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指在规定 ...
- 泛目录程序(莲花泛目录程序/黑帽SEO/寄生虫/莲花泛目录解析/泛目录软件)
莲花泛目录程序强大之处: 1.内容分类详细2.自动推送URL链接3.内置超强原创内容功能系统,页面深受百度搜索引擎喜爱.4.蜘蛛触发繁殖:蜘蛛触发程序任何页面,程序自动生成独立页面并引导繁殖.5.操作 ...
- 创建express项目(nodejs)
1.下载nodejs安装包 nodejs官网下载最新版本就行,网址:http://nodejs.cn/download/,点击自己适用的系统,自动下载跟电脑操作系统位数符合的安装包, 2.配置环境 最 ...
- vuex中mutation和action的详细区别
const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment (state) { state.count++ } ...
- 解决Linux下Firefox无法启动的问题
在linux下使用Firefox连接被测系统的GUI,一次偶然操作导致linux系统运行缓慢,Firefox无法正常操作,从system monitor 杀掉所有java进程将Firefox强行关闭. ...
- 图及其衍生算法(Graphs and graph algorithms)
1. 图的相关概念 树是一种特殊的图,相比树,图更能用来表示现实世界中的的实体,如路线图,网络节点图,课程体系图等,一旦能用图来描述实体,能模拟和解决一些非常复杂的任务.图的相关概念和词汇如下: 顶点 ...