USACO 1.1.2 Greedy Gift Givers(gift1)
这道题大意就是几个人互送礼物,让你求每个人的盈利。
原题给的样例数据:
5(人的个数。)
=========(下面是人名,输出按照这顺序)
dave
laura
owen
vick
amr
==========(下面是每个人的要给的人)
dave
200 3
laura
owen
vick
----------
owen
500 1
dave
----------
amr
150 2
vick
owen
-----------
laura
0 2
amr
vick
----------
vick
0 0
这题使用模拟算法就行了,就是注意输入的时候不要掉坑里了。
还有就是比如说自己有200快钱给3个人,每个人得到66块,剩下两块自己收,并计入答案。
还有就是想题目里的vick,分给0个人,千万不要除以了0。。对了为了找人名方便,可以把一个人的名字和编号存到一个map容器中,具体在代码里已经有了,就不细说了。
下面是我的程序:
/*
ID:aaabbbr1
LANG:C++
TASK:gift1
*/
#include <stdio.h>
#include <string>
#include <map>
#include <iostream>
using namespace std;
struct person
{
string name;
int gave[10],have,cnt,receive;
person(){have=receive=0;}
}a[10];
map<string,int>link;//这只是方便从人名找到编号而已
void gavemoney(int x)
{
if(a[x].cnt==0)return;//小心除以0了(也就是如果给的人数为0就不给了)
int per=a[x].have/a[x].cnt;//计算每人多少钱
int tot=per*a[x].cnt;//计算一共给多少钱
a[x].receive+=a[x].have-tot;//计算自己的零钱 并汇入收到的钱里面
for(int i=0;i<a[x].cnt;i++)//给钱
a[ a[x].gave[i] ].receive += per;
}
void display(int x)
{
cout << a[x].name << " " << a[x].receive-a[x].have << "\n";
}
int main()
{
freopen("gift1.in","r",stdin);
freopen("gift1.out","w",stdout);
string tmp;
int n,x,t1,t2;
cin >> n;
for(int i=0;i<n;i++)
{
cin >> tmp;
a[i].name=tmp;
link[tmp]=i;
}
for(int i=0;i<n;i++)
{
cin >> tmp;
x=link[tmp];
cin >> t1 >> t2;
a[x].have=t1;
a[x].cnt=t2;
for(int j=0;j<a[x].cnt;j++)
{
cin >> tmp;
a[x].gave[j]=link[tmp];
}
}
for(int i=0;i<n;i++)
gavemoney(i);
for(int i=0;i<n;i++)
display(i);
fclose(stdin);
fclose(stdout);
return 0;
}
USACO 1.1.2 Greedy Gift Givers(gift1)的更多相关文章
- USACO Section 1.1-2 Greedy Gift Givers
Greedy Gift Givers 贪婪的送礼者 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少. 在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那 ...
- usaco training <1.2 Greedy Gift Givers>
题面 Task 'gift1': Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided t ...
- USACO Section 1.1 Greedy Gift Givers 解题报告
题目 问题描述 有若干个朋友,朋友之间可以选择互相赠送一些有价值的礼物.一个人可以选择将一部分钱分给若干个朋友,例如某人送给其他两个人钱,总共赠送3元,两个人平均分,原本应该是每人1.5元,但是只能取 ...
- USACO Training Section 1.1 贪婪的送礼者Greedy Gift Givers
P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers 题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一 ...
- Java实现【USACO】1.1.2 贪婪的礼物送礼者 Greedy Gift Givers
[USACO]1.1.2 贪婪的礼物送礼者 Greedy Gift Givers 题目描述 对于一群要互送礼物的朋友,你要确定每个人送出的礼物比收到的多多少(and vice versa for th ...
- USACO . Greedy Gift Givers
Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts ...
- Greedy Gift Givers 贪婪的送礼者 USACO 模拟
1002: 1.1.2 Greedy Gift Givers 贪婪的送礼者 时间限制: 1 Sec 内存限制: 128 MB提交: 9 解决: 9[提交] [状态] [讨论版] [命题人:外部导入 ...
- Section 1.1 Greedy Gift Givers
Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends hasdecided to exchange gifts o ...
- USACO-Greedy Gift Givers(贪婪的送礼者)-Section1.2<2>
[英文原题] Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange ...
随机推荐
- Python命令模块argparse学习笔记(二)
argparse模块可以设置两种命令参数,一个是位置参数,一个是命令参数 位置参数 import argparse parser = argparse.ArgumentParser(descripti ...
- PDM生成数据库-0设置表名和字段名中不带双引号
如果PDM直接导出脚本的话,所有的表和字段都会被加上双引号,非常不方便,去除双引号的办法: Database->Edit Current DBMS在弹出窗体中第一项General中找到 Scri ...
- linux环境下Apache+Tomcat集群配置
写在前面 apache配置多个tomcat,实现请求分流,多个tomcat服务均衡负载,增加服务的可靠性.最近研究了一下,遇到许多问题,记录一下,方便以后查阅,不喜欢apache,nginx也是可以做 ...
- CSS——常用
1.超链接样式 a:link {color: #FF0000} /* 未访问的链接 */a:visited {color: #00FF00} /* 已访问的链接 */a:hover {color: ...
- 简单cpu web flask mysql
转:http://blog.csdn.net/u010663768/article/details/60632133 python 2.7 cpu入库 #!/usr/bin/python # -*- ...
- C语言学习笔记--动态内存分配
1. 动态内存分配的意义 (1)C 语言中的一切操作都是基于内存的. (2)变量和数组都是内存的别名. ①内存分配由编译器在编译期间决定 ②定义数组的时候必须指定数组长度 ③数组长度是在编译期就必须确 ...
- java执行linux命令的工具类
package com.starfast.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ja ...
- powerdesigner自动将name填充到注释的脚本
我在建模的时候,希望在生成脚本的时候有注释,所以才会看到Comment列,实际上,只要你的表中的Name列不为空,运行下面的VBScript,PD会帮你自动填充注释的Comment列值. '把pd中那 ...
- ES02 变量、数组、对象、方法
1 变量 1.1 变量的声明 利用var关键字来声明变量,例如: var a = 100; <!DOCTYPE html> <html> <head> <me ...
- Excel VBA 若要在64位系统上使用,则必须更新此项目中的代码,请检查并更新Declare语句,然后用PtrSafe属性标记它们
在Office 2010 32位上开发的Excel VBA系统,迁移到Office 2010 64位下面,打开后使用,报下面错误: 解决办法: 在Declare 后面加PtrSafe 进行标记