2018-3-25 changed

题目大意就是说我们要互相 ” 送钱 ” ,一共NP个人,指定某一个人将sum这么多的钱分给num个人,那么这些人每个人多了sum/num,送钱的那个人减少了sum,但是由于我们要保证每个人分到的钱都是整数,所以没有被整除的那一部分又回来了。如果说分给了0个人,则不做处理,继续输入。

主要是根据名字找到所在位置,然后改变对应的数值

法一:线性查找

/*
ID: 18795871
PROG: gift1
LANG: C++
*/
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;ifstream fin("gift1.in");
ofstream fout("gift1.out");const int N = 10;
char name[N+1][15];
int mon[N+1];
int n;int getIndex(char *p){for (int i=0;i<n;i++){if (strcmp(name[i],p)==0) return i;}
}int main(){int i,j;while (fin>>n){memset(mon,0,sizeof(mon));for (i=0;i<n;i++){fin>>name[i];}char t[15],k[15];int sum,num,ave,giv;while (fin>>t>>sum>>num){if (num==0) continue;ave=sum/num;giv=sum-ave*num;mon[getIndex(t)]+=(giv-sum);for (j=0;j<num;j++){fin>>k;mon[getIndex(k)]+=ave;}}for (i=0;i<n;i++){fout<<name[i]<<" "<<mon[i]<<endl;}}return 0;
}

法二:map键值对应

/*
ID: 18795871
PROG: gift1
LANG: C++
*/
#include<iostream>
#include<fstream>
#include<cstring>
#include<map>
using namespace std;ifstream fin("gift1.in");
ofstream fout("gift1.out");const int N = 10;
string name[N+1];
int n;int main(){int i,j;string tmp;while (fin>>n){map<string,int>myMap;for (i=0;i<n;i++){fin>>name[i];myMap[name[i]]=0;}int sum,num,ave,giv;while (fin>>tmp>>sum>>num){if (num==0) continue;ave=sum/num;giv=sum-ave*num;myMap[tmp]+=(giv-sum);for (j=0;j<num;j++){fin>>tmp;myMap[tmp]+=ave;}}for (i=0;i<n;i++){fout<<name[i]<<" "<<myMap[name[i]]<<endl;}}return 0;
}

USACO Section 1.2 Greedy Gift Givers (简单查找)相关推荐

  1. USACO题解——Section 1.2——Greedy Gift Givers

    题目地址:https://train.usaco.org/usacoprob2?a=BGOMbIJsisd&S=gift1. 或者我的OJ网站,http://47.110.135.197/pr ...

  2. USACO Training Section 1.1 贪婪的送礼者Greedy Gift Givers

    P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers 题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一 ...

  3. 贪婪的送礼者Greedy Gift Givers [USACO 1.2]

    贪婪的送礼者Greedy Gift Givers [USACO 1.2]题目描述: 有一群(N个)要互送礼物的朋友,现在要确定每个人送出的钱比收到的钱多多少.每个人都准备了一些钱来送礼物,而这些钱将会 ...

  4. Greedy Gift Givers

    原题地址 Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange g ...

  5. [USACO1.1]贪婪的送礼者Greedy Gift Givers

    题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人.然而,在任何一群朋友中 ...

  6. USACO1.1.2 - Greedy Gift Givers

    贪婪礼品送货员 一组NP(2≤NP≤10)唯一命名的朋友决定交换礼物的钱.这些朋友中的每一个可能或可能不会给任何或所有其他朋友一些钱.同样,每个朋友可能或可能不从任何或所有其他朋友接收钱.你在这个问题 ...

  7. [USACO 2017 Dec P]Greedy Gift Takers-----二分+推理

    题目链接 思路: 首先我们可以发现,如果第x个牛不能拿到礼物,则x之后的所有牛都不能拿到礼物,则区间具有单调性,可以想到用二分来解决 然后思考怎么写判断条件 我们需要知道一个结论: 怎么样会形成一个死 ...

  8. YTU ---1402-Greedy Gift Givers 贪婪的送礼者

    1402: 1.1.2 Greedy Gift Givers 贪婪的送礼者 Time Limit: 1 Sec   Memory Limit: 64 MB Submit: 31   Solved: 1 ...

  9. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

最新文章

  1. java 怎么让一个jlabel和一个jtextfield在一行_今天小哥大家分享一下Java编程语言的第一个程序应该怎么样去写...
  2. 线程安全退出 VS PostMessage,SendMessage的区别
  3. python编译器如何设置中文_如何使setup.py test使用特定的fortran编译器?
  4. 剑指Offer 斐波那契数列
  5. 1215B. The Number of Products
  6. 分享Db4o的便捷封装类源码
  7. android url 快捷方式,Android向桌面添加快捷方式,使其指向特定的(URL)网页
  8. php人才招聘网可二开
  9. 4.2 字符串简介
  10. 零基础学python电子书-零基础学Python
  11. 社交网络与社会计算课程内容梳理总结
  12. 计算机基础知识五笔,教你简单快速学习五笔打字
  13. 抖音下载android,抖音完整版
  14. 如何成为一名优秀的程序员
  15. 硬盘出现异响应急方案
  16. Ubuntu20.04设置WiFi热点
  17. 市场规模一年猛增24% 这个靠“打印”出来的市场正在韩国崛起
  18. echart图片库_基于html5 Canvas图表库 : ECharts
  19. Akka 指南 之「消息传递可靠性」
  20. Google Earth Engine(GEE)——下载2020-2021年的NDBI

热门文章

  1. STM32----摸石头过河系列(七)
  2. android 自定义 打包文件类型,Android设置apk打包文件名报错
  3. 我身边的计算机网,电脑在我身边作文700字
  4. nginx location 斜杠_【一点资讯】斜杠青年双·11买什么本最划算?光影精灵6让你做“多面娇娃” www.yidianzixun.com...
  5. 计算机专业相关的毕业设计论文合集免费下载
  6. 【ES6(2015)】Reflect
  7. java程序优化快捷键_Java 代码中针对性能优化的总结方案
  8. Python笔记-方差分析之多因素方差分析
  9. Java笔记-解决Cause: java.sql.SQLException: 试图在只读事务中修改数据(达梦数据库)
  10. Java笔记-RabbitMQ中生产者端confirm模式(异步模式)