3 条题解
-
3
#include <bits/stdc++.h> using namespace std; int n,w; int a[1001]; int main() { cin>>n>>w; for(int i=1;i<=n;i++) { int x; cin>>x; a[x]++;//桶排序方法 int t=1.0*i*w/100;//例如第6个数,i=6,那么t=3,p=3 int p=max(1,t); int sum=0;// 输入10 60 for(int j=600;j>=0;j--)//输入200 300 400 500 600 600 0 300 200 100 {// 例如到第6个数600时,形成a[200]=1,a[300]=1,a[400]=1,a[500]=1,a[600]=2 if(sum+a[j]>=p)//只有a[500]=1,a[600]=2累加 >=p,所以分数线是500 { cout<<j<<" "; break; } sum+=a[j]; } } }
-
2
虽然有视频讲解,但省得你们下载去看,我给搞下来了,可以参考一下
#include<bits/stdc++.h> using namespace std; int n,w,t,a[605],sum=0; int main(){ cin >> n >> w; for(int i=1;i<=n;i++){ cin >> t; a[t]++; sum = 0; for(int j=600;j>=0;j--){ sum += a[j]; if(sum >= max(1,i*w/100)){ cout << j << " "; break; } } } return 0; }
-
2
提示 在计算计划获奖人数时,如用浮点类型的变量(如 C/C++ 中的 float 、 double,Pascal 中的 real 、 double 、 extended 等)存储获奖比例 w % w% w%,则计算 5 × 60 % 5 \times 60% 5×60% 时的结果可能为 3.000001 3.000001 3.000001,也可能为 2.999999 2.999999 2.999999,向下取整后的结果不确定。因此,建议仅使用整型变量,以计算出准确值
#include<bits/stdc++.h> using namespace std; int n,w,t,a[605],sum=0; int main(){ cin >> n >> w; for(int i=1;i<=n;i++){ cin >> t; a[t]++; sum = 0; for(int j=600;j>=0;j--){ sum += a[j]; if(sum >= max(1,i*w/100)){ cout << j << " "; break; } } } return 0; }
- 1
信息
- ID
- 1351
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 334
- 已通过
- 134
- 上传者