A. Polycarp's Pockets
题目链接:codeforces 1003A
题意:
给n个数,要求相同的数不能放在一个口袋,问最少需要多少个口袋
题解:
求出最多的相同数的个数,就是答案
#include<cstdio>
#include<cstring>
int main(){
int n;
int a[105];
memset(a,0,sizeof(a));
scanf("%d",&n);
for(int i = 1;i <= n;i++){
int x;
scanf("%d",&x);
a[x]++;
}
int max = -100;
for(int i = 1;i <= 100;i++){
if(max < a[i]){
max = a[i];
}
}
printf("%d\n",max);
return 0;
}
C. Intense Heat(暴力)
题目链接:codeforces 1003C
题意:
给出 n 个值,求 大于等于 k 个数的最大平均值
题解:
先求前缀和,然后暴力
AC代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll a[5005], u;
int n, k;
cin >> n >> k;
memset(a, 0, sizeof(a));
for(int i = 1; i <= n; i++){
cin >> u;
a[i] = a[i-1] + u;
}
a[0] = 0;
double maxx = 0.0;
for(int i = 1; i <= n; i++){
for(int j = i+k-1; j <= n; j++){
double k = (double)(a[j] - a[i-1]);
double p = (double) (j - i + 1);
if(k / p * 1.0 > maxx){
maxx = k / p * 1.0;
}
}
}
printf("%.12lf\n", maxx);
return 0;
}