day21
时间:2019-08-21
本文章向大家介绍day21,主要包括day21使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
好难,得分40/400;
加个0不就满分了吗
T1写了个最小生成树,但没有考虑完全;
题意:从N个点中取M个点生成一棵最小生成树,使他的边权与点权的比值最小;
由于N及其小,可以枚举取哪些点来做一棵最小生成树;
为了避免精度问题,可以考虑去分母变成乘法
代码
#include<iostream> #include<cstdio> #include<algorithm> #include<cctype> #include<cstring> #define oyy main using namespace std; inline int read() { int x=0,f=1;char c=getchar(); while(!isdigit(c)){if(c=='-')f=-1;c=getchar();} while(isdigit(c)){x=(x<<3)+(x<<1)+(c^48);c=getchar();} return x*f; } int w[20],m,n; int mp[20][20]; int ans[20],v[20],temp[20],ans1=1,ans2=1,bq,dq; void prime() { int d[20]={},vv[20]={}; memset(d,0x3f,sizeof(d)); d[temp[1]]=0; for(int i=1;i<=m;i++) { int k=0,minn=0x7ffff; for(int j=1;j<=m;j++) if(!vv[temp[j]]&&minn>d[temp[j]]) { minn=d[temp[j]];k=temp[j]; } vv[k]=1; for(int j=1;j<=m;j++) if(!vv[temp[j]]&&d[temp[j]]>mp[k][temp[j]])d[temp[j]]=mp[k][temp[j]]; } for(int i=1;i<=m;i++) { bq+=d[temp[i]]; dq+=w[temp[i]]; } if(bq*ans2<dq*ans1) { for(int i=1;i<=m;i++) ans[i]=temp[i]; ans1=bq; ans2=dq; } return; } void dfs(int x,int i) { if(x==m) { bq=0;dq=0; prime(); return; } i++; for(;i<=n;i++) if(!v[i]) { x++; temp[x]=i; v[i]=1; dfs(x,i); temp[x]=0; v[i]=0; x--; } } inline int cmp(int x,int y){return x<y;} int oyy() { freopen("ratio.in","r",stdin);freopen("ratio.out","w",stdout); n=read();m=read(); for(int i=1;i<=n;i++) w[i]=read(); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ mp[i][j]=read();if(i==j)mp[i][j]=0x7ffff;} dfs(0,0); sort(ans+1,ans+m+1,cmp); for(int i=1;i<=m;i++) cout<<ans[i]<<" "; return 0; }
原文地址:https://www.cnblogs.com/Frost-Delay/p/day21.html
- Java中使用线程时,请不要忘记Spring TaskExecutor组件
- 常见.NET功能代码汇总
- 如何通过追踪代码自动发现网站之间的“关联”
- 教你如何和使用这款强大的渗透平台-Xerosploit
- No.014 Longest Common Prefix
- Java实现解析IP地址的方法,给出一串数字,生成正确的IP地址
- 图解“管道过滤器模式”应用实例:SOD框架的命令执行管道
- No.013 Roman to Integer
- OData – the best way to REST–实例讲解ASP.NET WebAPI OData (V4) Service & Client
- Java实现的手工做乘法方法,给出二个字符串数字,返回相乘结果
- No.012 Integer to Roman
- 黑帽SEO剖析之手法篇
- IOS学习1——IOS应用程序的生命周期及基本架构
- 浅议“全局变量”、“多线程”和“编译器陷阱”
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 编程语言经典小例题—Python版【持续更新】
- Python+selenium 自动化-切换窗口页签、切换iframe框架。确定页面是否包含iframe方法。
- JavaScript 技术篇-js获取iframe内的元素方法。
- QQ二维码登录API源码
- JavaScript 技术篇-js获取document的几种方式,js获取dom元素的常用方法。
- 不好意思,我膨胀了!shader 入门精要!Cocos Creator 3D Shader !
- JavaScript 技术篇-js获取dom节点、html标签自定义属性的值。
- 测试 APP 抓不到数据包该怎么办
- 手把手教你搭建SSM框架(Eclipse版)
- 【手把手教你】使用pyfinance进行证券收益分析
- [English] Creating a New Theme
- 脏读,不可重复读,幻读
- 建议收藏!这份MySQL 连接查询超全详解送给你
- Redis点赞新思路 bitmap
- PyQt5 技术篇-调用字体对话框(QFontDialog)获取字体,控件设置字体。