【排列组合】UVALive
来源:互联网 发布:中科大软件学院信息化 编辑:程序博客网 时间:2024/06/06 01:14
Problem Decription
给你T组测试数据,给你n组数,每组数包含data, num,代表data这个数有num个。问你怎么排列这些数,求出最大的分数(如何求分数,一个数的左边递减个数包括相等 和 右边递减个数包括相等的和 加上 1(本身)就是该点的分数,但你要求出所有数的分数和)。求出最大分数一共有多少种组合
思路:从小到大排序一定是最大的分数和。因为(只要这串数保持弧形)所以从小到大排序,这样方便求最大分数和方案数。具体看代码。输出%llu不然会Wrong
#include<bits/stdc++.h>using namespace std;#define mod 1000000007struct node{ long long data, num; bool operator < (const node &b) const { return data < b.data; }};node a[100055];int main(){ int T, n, i, cas = 1; scanf("%d", &T); while(T--) { scanf("%d", &n); for(i = 0; i < n; i++) { scanf("%llu %llu", &a[i].data, &a[i].num); } long long nn = 0, sum = 0, ans = 1; sort(a, a + n); for(i = 0; i < n; i++) { if(i != n - 1) { ans = ((ans % mod) * ((a[i].num + 1) % mod)) % mod;//方案数会特别大 所以取mod } nn += a[i].num; sum += nn * a[i].num;//最大分数 } printf("Case %d: %llu %llu\n", cas++, sum, ans); } return 0;}
阅读全文
0 0
- 【排列组合】UVALive
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- 排列组合
- Windows下的Dump文件
- Android系统级服务:DevicePolicyManager
- 总结问题解决
- HDU
- Matconvnet中imagenet的getImageStart.m代码中求协方差的代码及均值(1,3)
- 【排列组合】UVALive
- 百练2738:实数加法题解
- day_10_多态性、类型信息
- PYTHON 一些基础面试题目总结
- HttpURLConnection用法详解
- (2017多校4)1004/hdu-6070 Dirt Ratio(二分 + 线段树)
- 学习android的JNI开发blog
- Android 集成ShareSDK分享QQ或空间成功后,回调却不执行的原因
- 一句话讲清楚什么是JavaEE