USACO Section 1.2 Greedy Gift Givers (简单查找)
2017-05-21 15:39
330 查看
2018-3-25 changed
题目大意就是说我们要互相 ” 送钱 ” ,一共NP个人,指定某一个人将sum这么多的钱分给num个人,那么这些人每个人多了sum/num,送钱的那个人减少了sum,但是由于我们要保证每个人分到的钱都是整数,所以没有被整除的那一部分又回来了。如果说分给了0个人,则不做处理,继续输入。
主要是根据名字找到所在位置,然后改变对应的数值
法一:线性查找
法二:map键值对应
题目大意就是说我们要互相 ” 送钱 ” ,一共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-Section1.1 Greedy Gift Givers【查找】
- USACO Training Section 1.2 Greedy Gift Givers
- USACO-Section1.2 Name That Number【暴力枚举】【二分查找】
- USACO-Greedy Gift Givers(贪婪的送礼者)-Section1.2<2>
- USACO Section 1.1 Greedy Gift Givers
- 【USACO】【Section1.1】Greedy Gift Givers
- USACO-Section1.1 Greedy Gift Givers [hash表]
- USACO-Section1.1 Greedy Gift Givers
- Section 1.2 Translate:USACO/Greedy Algorithm
- USACO:Section 1.1 Greedy Gift Givers
- [USACO] Section1.1 Greedy Gift Givers[线性时间查找]
- USACO-Section1.1 Greedy Gift Givers
- USACO Section1.1 Greedy Gift Givers
- USACO Section 1.1 Greedy Gift Givers
- USACO-Section1.2 Friday the Thirteenth (简单日期处理)
- USACO-Section1.2 Dual Palindromes【暴力枚举】【查找】
- USACO Section1.1 Greedy Gift Givers
- USACO Section 1.1 Greedy Gift Givers
- USACO - Chapter1 Section 1.1 - Greedy Gift Givers
- 【USACO】【Section1.1】Greedy Gift Givers