AI GOD:1015: 布阵
来源:互联网 发布:sqlserver 评估期已过 编辑:程序博客网 时间:2024/06/15 04:23
http://118.190.162.167/p1015.html
题目描述
小华对兵法非常感兴趣,他研究出一个新的布阵方法。他把所有军队分成n个军团,在这n个军团之间加上m个联系。一个联系是指,对任意的i,j,第i个军团和第j个军团产生联系,当自己和自己发生联系时,效果翻倍,即当自己和自己发生联系时算两个。为了保证军队的团结,每个军团至少建立一个联系。当一个军团建立了联系时,它的战斗力会和联系的数量有关。小华想知道他的军队能产生的最大战斗力是多少。每个军团最多发生k个联系。
数据范围
对于小数据: 1<=n<=m<=10,1<=k<=500,1<=f(i)<=100
对于大数据: 1<=n<=m<=500,1<=k<=500,1<=f(i)<=100000
对于所有数据:n-1<=m<=n(n-1)/2
输入描述
第一行有3个数n, m, k。
第二行有k个数f(1),f(2),…,f(k),用空格隔开 (1<=f(i)<=100000)。第i个数f(i)表示当一个军团和其他i个军团有联系的时候它的战斗力。
输出描述
只有一行,包含一个数,军队的最大战斗力。
样例输入(精确内容)
2 2 3
3 1 10
样例输出(精确内容)
13
解题思路:重点在军团节点的分配上,军团的联系可以不用在意。因为不论联系怎么分配,一个联系总会产生两个节点。故本题可以转化为2n个节点如何分配,能够在保证每个军团至少有一个节点且战斗力最高。其次,根据f(i)的值,用f(i)/i 可以判断出那种节点分配方案最优.根据最优排序,依次尝试为每个军团分配节点且能满足要求。
代码:
#include<iostream>#include<stdio.h>#include<vector>#include<algorithm>using namespace std;bool cmp(vector<float> &a,vector<float> &b) { return a[2] > b[2]; }int main(){ int num,line,limit,Count; double Max=0; // freopen("input.txt","r",stdin); cin>>num>>line>>limit; vector<vector<float> >f(limit,vector<float>(3,0)); for(int i=0;i<limit;i++) { cin>>f[i][1]; f[i][0]=(double)i+1; f[i][2]=f[i][1]/f[i][0]; } sort(f.begin(),f.end(),cmp); // for(int i=0;i<limit;i++) // cout<<f[i][0]<<" "<<f[i][1]<<" "<<f[i][2]<<endl; Count=line*2; for(int i=0;i<num;i++) { for(int j=0;j<limit;j++) { if(f[j][0]<=Count+i+1-num) { Max=Max+f[j][1]; Count=Count-f[j][0]; break; } } } cout<<Max<<endl; return 0;}
阅读全文
0 0
- AI GOD:1015: 布阵
- AI GOD:1012: Attack
- AI GOD:1016: 忍者
- AI GOD:1013: 小英的咖啡厅
- AI GOD:1014: 卡特兰数
- GOD
- God Object
- god father
- God Says
- my god
- THANK GOD
- AI
- ai
- ai
- AI
- ai
- ai
- ai
- PHP7中新的Hashtable实现和性能改进
- linux内核编译
- org.springframework.beans.factory.BeanDefinitionStoreException:IOException parsing XML document fro
- 头插法,尾插法,创建单链表,然后删除所有结点值为x的结点
- iptables规则备份和恢复
- AI GOD:1015: 布阵
- 深入理解Zend执行引擎
- 简单理解springboot
- TF-IDF(文档向量化)
- 山大2015级2班软件工程实验
- ThinkPHP5.1 多级控制器路由
- 从数据结构角度分析foreach效率比for循环高的原因
- C语言中 常量和变量
- Java之美[从菜鸟到高手演变]之HashMap、HashTable