IQ(贪心)
来源:互联网 发布:泰国免税店mac口红价格 编辑:程序博客网 时间:2024/06/05 00:18
题目描述
根据世界某权威学会的一项调查,学信息学的学生IQ非常高。举个最好的例子,如果我们把学信息学的一些学生调去学数学,那么两个竞赛的学生平均IQ都会提升!!
现在给出一群数学竞赛全体学生的IQ和信息学竞赛全体学生的IQ,问最多能把几个学信息学的学生调去学数学,而两个竞赛的学生平均IQ都有提升呢?
每次只调一个学生,而且每次调配,两个竞赛的学生平均IQ都要提升。
输入
第1行一个正整数N(N≤I00),代表数学竞赛班学生的数目;
第2行,有N个正整数,代表每个数学学生的IQ(1到200之间);
第3行,一个整数M(M≤100),代表信息学竞赛班学生数目;
第4行,有M个正整数,代表每个信息学竞赛班学生的IQ(1到200之间)。
输入数据保证信息学学生平均IQ高于数学学生。
输出
一个正整数,代表能从信息学调去学数学的学生的个数。
样例输入
3
3 2 3
3
3 2 5
样例输出
1
这题有许多坑,是个贪心的题目,这考ACMer的思维能力
#include <stdio.h>#include <algorithm>using namespace std;int main (){ int a[10000]; int b[10000]; int n,m,i,j,sa=0,sb=0,t=0; int z,num=0; double aver1,aver2,a1,a2; scanf ("%d",&n); for (i=1; i<=n; i++) { scanf ("%d",&a[i]);//数学 sa+=a[i]; } scanf ("%d",&m); z=m; for (i=1; i<=m; i++) { scanf ("%d",&b[i]);//信息学 sb+=b[i]; } sort(b,b+m); aver1=(double)sa/n; aver2=(double)sb/m; while(1)//反复遍历,直到找不到这个数为止 { num=0; for (i=1; i<=z; i++) { if ((double)(sa+b[i])/(n+1)>aver1&&(double)(sb-b[i])/(m-1)>aver2)//条件 { ++t; aver1=(double)(sa+b[i])/(n+1); aver2=(double)(sb-b[i])/(m-1); sa+=b[i]; sb-=b[i]; n++; m--; b[i]=-1; sort(b,b+m); continue; } num++; } if(num==z) break; } printf ("%d",t); return 0;}
阅读全文
0 0
- IQ(贪心)
- IQ
- 笔试面试(IQ题集)
- 微软面试IQ题~~(转载)
- 尤妮斯的婚姻状况(IQ题)
- 智力金字塔( IQ Pyramid Games)
- IQ使命 北京(建长城)攻略
- 微软面试题汇总--IQ篇(转)
- CF - 409 - A. The Great Game(IQ)
- csu 1597 薛XX后代的IQ(循环节)
- CUIT ACM Personal Training 11.27(FM)B - IQ Test
- CSU 1597: 薛XX后代的IQ (矩阵运算)
- IQ使命 Marrakech 马拉喀什(六边形图案)攻略
- IQ使命 Luxor 埃及卢克索(华容道) 攻略
- IQ使命 Antwerp 安特卫普(选宝石放木块) 攻略
- IQ使命 Monte Carlo 蒙特卡洛(推箱子)攻略
- IQ使命 Paris 巴黎(构建旋转图)攻略
- IQ使命 London 伦敦(一笔画)攻略
- Spring 06 声明式事务
- Effective Java读书笔记二五(Java Tips.Day.25)
- poj 1321 棋盘问题(深搜)
- 字符串:表示数值的字符串
- leetcode-9. Palindrome Number
- IQ(贪心)
- Unique Substrings in Wraparound String
- 百练_2760数字三角形(递归)(动态规划)
- Android开发之定制ProgressBar
- Lua 元表(Metatable)
- 51Nod--1018 排序
- AVL树旋转总结
- 在工厂模式中使用Properties配置文件出现java.lang.ExceptionInInitializerError的问题
- @PathVariable和@RequestParam的区别