题目链接:点击打开链接
这题难点带就是输入?我是因为用float精度不够才不过的,改成double就ok了
#include <cstdio>using namespace std;int num[1011][1011];int main(){long long n, m;int p[1011], k[1011];double b[1011], ans[1011], sum;while(scanf("%lld%lld", &n, &m) != EOF){for(int i = 0; i < 1011; i++)b[i] = 0;for(int i = 0; i < n; i++){scanf("%d%d", &p[i], &k[i]);for(int j = 0; j < k[i]; j++)scanf("%d", &num[i][j]);}for(int i = 0; i < m; i++){int q;double temp;scanf("%d%lf", &q, &temp);if(b[q] < temp)b[q] = temp;}for(int i = 0; i < n; i++){sum = 1;for(int j = 0; j < k[i]; j++)sum += b[num[i][j]];ans[i] = p[i] * sum;}int ma = 0;for(int i = 1; i < n; i++)if(ans[i] > ans[ma])ma = i;printf("%.4lf\n", ans[ma]);}return 0;}
开了老多个数组,不怎么好看。其实用造一个枪结构题可以简化很多。
如果觉得《大吉大利今晚吃鸡——枪械篇》对你有帮助,请点赞、收藏,并留下你的观点哦!