又到了周末,发现很堕落啊,眼看都星期天了,赶紧发一篇文章,总结一下上周学的。

原题见UVA11300,Spreading the wealth,和 UVA 11729 Commando War;先说突击战问题,关键问题是,一个任务要完成首先要先交代,然后再去执行,而且不能同时交代任务但可以同时执行各自的任务。经过简单的推理即可看出,显然是让执行时间长的任务先交代,这样所有任务执行的时间最短,思路简单,我就直接上代码了。

#include <iostream>
#include <cstdio>
#define M 1000using namespace std;
struct node
{int Kjob;int Djob;
}Node[M];int FindMax(int a[],int n)
{int max = a[0];int k = 0;for(int i = 1;i<n;++i){if(a[i] > max){max = a[i];k = i;}}return k;
}int main()
{int n,test;int output[M] = {0};test = 0;int B[M],J[M];while(scanf("%d",&n) == 1 && n){for(int i =0;i < n;++i){scanf("%d%d",&Node[i].Kjob,&Node[i].Djob);}for(int i =0;i < n;++i){B[i] = Node[i].Kjob;J[i] = Node[i].Djob;}int sum[M] = {0};int count = 0;for(int i =0;i< n;++i){int m = FindMax(J,n);//J[m] = 0;count +=  B[m];sum[i] = count + J[m];J[m] = 0;}int l = FindMax(sum,n);output[test] = sum[l];++test;}for(int i = 1;i<=test;++i){cout << "case " << i << ":" << output[i-1] << endl;}return 0;
}

其实这道题的思路很直接,我写的程序也非常简单易懂,但有一点倒是很值得注意,就是, 当有多个数据相关联时,最好使用结构体这种很好的数据结构,效果很不错!

分金币问题,我耗费了很长时间也没有解出来,说实在话,我很讨厌环形结构,我记得USACO中也有一道相似的“项链问题”,题目我就不多说了,我刚开始的想法就是,先确定比平均数少的人数n,然后对整个数组遍历n次,就能找出最少的结果。然而,我尝试的结果显示,这样的值不是最小,我才发现,因为循环结构,才导致距离的相对性,因此不是能按顺序遍历就能得出结果的。之后我尝试了使用二维数组记录每个点到当前点的距离,结果很悲哀,没有结论!

#include <iostream>
#include <cstdio>
#include <cstdlib>#define M 1000using namespace std;
int arc[M][M];int FindMin(int B[],int n)
{int min = B[0];int k = 0;for(int i =1;i<n;++i){if(B[i] < min){min = B[i];k = i;}}return k;
}int MinDistance(int arc[][M],int divide[],int B[],int n,int k)
{int mark = 0;//int l =0;for(int j = 1;j<n && j!=k;++j){int distancemin = arc[k][0];if(arc[k][j] < distancemin ){distancemin = arc[k][j];  //怎样记录数组中的两个最小的数的标号mark = j;}}if( Dvalue[k] < 0 && Dvalue[j] > 0 && (abs(Dvalue[k]) >=Dvalue[j])  ){B[k] += Dvalue[j];B[j] = average;Dvalue[k] += Dvalue[j];least += arc[k][j] * Dvalue[j];Dvalue[j] = 0;}if(Dvalue[k] < 0 && Dvalue[j] > 0 && abs(Dvalue[k]) < Dvalue[j]){B[k] = average;B[j] += Dvalue[k];Dvalue[j] += Dvalue[k];least += arc[k][j] * abs(Dvalue[k]);Dvalue[k] = 0;}}
int main()
{int n;int average;int sum = 0;int counting  = 0;int B[M] = {0};while(scanf("%d",&n) == 1){for(int i =0; i<n;++i){cin  >> B[i];sum += B[i];}average = sum / n;for(int i =0;i<n;++i){for(int j=0;j<n;++j){if(j<= n/2)arc[i][j] = j;elsearc[i][j] = n-j;}}for(int i =0;i<n;++i){if(average > B[i])counting  +=1;}int Dvalue[M] = {0};for(int i =0;i<n;++i){Dvalue[i] = B[i] - average;}int least = 0;/*//for(int i =0;i<counting ;++i)  //判断条件有问题,导致得到的不是最优解{int k= FindMin(B,n);for(int j =0;j<n;++j){if( Dvalue[k] < 0 && Dvalue[j] > 0 && (abs(Dvalue[k]) >=Dvalue[j])  ){B[k] += Dvalue[j];B[j] = average;Dvalue[k] += Dvalue[j];least += arc[k][j] * Dvalue[j];Dvalue[j] = 0;}if(Dvalue[k] < 0 && Dvalue[j] > 0 && abs(Dvalue[k]) < Dvalue[j]){B[k] = average;B[j] += Dvalue[k];Dvalue[j] += Dvalue[k];least += arc[k][j] * abs(Dvalue[k]);Dvalue[k] = 0;}}}cout << least << endl;int mark[M] = {0};int l =0;for(int j = 1;j<n && j!=k;++j){int distancemin = arc[k][0];if(arc[k][j] < distancemin ){distancemin = arc[k][j];mark[l] = j;++l;}}//*/for(int i =0;i<counting;++i){int k =FindMin(B,n);int mark[M] = {0};}int l =0;for(int j = 1;j<n && j!=k;++j){int distancemin = arc[k][0];if(arc[k][j] < distancemin ){int mark[M] = {0};int l =0;for(int j = 1;j<n && j!=k;++j){int distancemin = arc[k][0];if(arc[k][j] < distancemin ){distancemin = arc[k][j];mark[l] = j;++l;}}distancemin = arc[k][j];mark[l] = j;++l;}}for(int i =0;i<)}}return 0;
}

《训练指南》中的“突击战”和分金币问题相关推荐

  1. 一根绳子从一头烧需30时分钟_小学生一分钟跳绳满分训练指南

    小学生一分钟跳绳测试项目是体育老师和众多家庭的痛,大多数的孩子1分钟跳不到60个.而跳绳又是体质健康测试里占分比较高的一个项目,所以很多宝妈/宝爸们很是焦虑.因此,我们根据平时儿童跳绳训练的经验和网上 ...

  2. 《算法竞赛入门经典——训练指南》第一章相关内容

    #<算法竞赛入门经典--训练指南>第一章相关内容 希望各位大牛能指导! 红色为已经做了的...黄色背景是还有不懂地方,希望在年前能刷完第一章啊.... 更新版.google上貌似又加了ex ...

  3. 训练指南第一部分解题报告

    主要是提供训练指南第一部分解题报告链接,后面会持续更新中 307 - Sticks  (DFS+剪枝) 11292 - Dragon of Loowater (贪心) 11729 - Commando ...

  4. DeepLearning tutorial(2)机器学习算法在训练过程中保存参数

    FROM: http://blog.csdn.net/u012162613/article/details/43169019 DeepLearning tutorial(2)机器学习算法在训练过程中保 ...

  5. Keras多GPU训练指南

    更多深度文章,请关注:https://yq.aliyun.com/cloud Keras是我最喜欢的Python深度学习框架,特别是在图像分类领域.我在很多地方都使用到了Keras,包括生产系统.我自 ...

  6. 算法竞赛训练指南代码仓库_数据仓库综合指南

    算法竞赛训练指南代码仓库 重点 (Top highlight) As a data scientist, it's valuable to have some idea of fundamental ...

  7. 训练指南——数学专题一的总结

    差不多一个星期过去了,在这一个多星期里,我做了一个数学专题和两场训练赛,要说对自己的感觉,只能说很差劲,开始的时候以为环境会比现在宽松很多,后来才发现想法是错误的,实验室室里室一种紧张的气氛,感觉就像 ...

  8. 战斗机嵌入式训练系统中的智能虚拟陪练

    战斗机嵌入式训练系统中的智能虚拟陪练 人工智能技术与咨询 来源:<航空学报> ,作者陈斌等 摘 要:智能化"实虚"对抗是现代先进战斗机嵌入式训练系统的重要功能需求.自主 ...

  9. 《算法竞赛入门经典训练指南》pdf

    下载地址:网盘下载 基本介绍 编辑 内容简介 <算法竞赛入门经典:训练指南>题目多选自近年来ACM/ICPC区域赛和总决赛真题,内容全面,信息量大,覆盖了常见算法竞赛中的大多数细分知识点. ...

最新文章

  1. 使用ABAP(ADBC)和Java(JDBC)连接SAP HANA数据库 1
  2. Mycat 安装配置
  3. macos实现输入文件输入结束符
  4. js禁止鼠标滑轮_js实现鼠标滑动到某个div禁止滚动
  5. 学习推荐《精通Python网络爬虫:核心技术、框架与项目实战》中文PDF+源代码
  6. 数据结构与算法-二叉树的名词概念与相关数据的计算
  7. Redis 集群密码配置
  8. python可视化库matplotlib_Python数据可视化库-Matplotlib(一)
  9. maven 阿里云的镜象
  10. [Altera在线教学].Altera SERDES应用教学,2小时10分钟,172张胶片
  11. Subversive-connectors 下载地址
  12. 前端视频播放初探总结,video标签-视频插件jwplayer
  13. 微信公共号开发教程java版——基础知识和环境搭建(一)
  14. linux va list,vsprintf函数以及va_list使用详解
  15. 用qq来搞定gmail,yahoo,hotmail,126 邮箱 POP3协议
  16. bios设置使用集成显卡输出视频信号后,显示器黑屏了
  17. 国外有哪些知名的游戏资讯网站或博客?
  18. 小熊、九阳、苏泊尔,小家电玩家们乱了阵脚?
  19. MATLAB冒号用法
  20. 97年世界编程大赛一等奖作品

热门文章

  1. 二十年前的互联网长啥样?你还记得03年的“山寨”淘宝吗
  2. 利用html5中canvas实现类似淘宝的放大图片效果
  3. 专访中标软件曹冬:Moblin引发Linux革命
  4. サザンカ(sasanqua)平假名
  5. 微信与星巴克合推用星说,小卡背后有什么大招?
  6. android .beats音效安装器,beats音效安装器
  7. 键盘输入一段英文,输出其中的单词个数。
  8. 基于java的校园网站设计
  9. 华三交换机配置access命令_h3c交换机配置命令详解
  10. Ubuntu 20.04 阿里云镜像、国内源