链接:https://ac.nowcoder.com/acm/contest/9033/A
来源:牛客网
题目描述
小A去参加W大学的一个招生项目.
除了小A,还有n个人报名了W大学的这个招生项目,而W大学只招收m个人.
每个人有一个高考分和一个校测分,分数都是非负整数,满分都是p,分数都不大于p.
因为小A优异的竞赛成绩,W大学给了小A承诺,他将会校测给满分.
然后每个人的最终得分为 高考分85% + 校测分15%.
最终得分从高到低排前m高的将被录取,如果有同分,小A将优先被录取.
求小A高考至少要考到多少分才能被W大学录取.
题目本身不难,难的是有一个特殊情况没有考虑,如果小A只靠校测分就可以入取,那题目就解决了
上代码:
#include
using namespace std;
int main()
{
int n,m,p;
scanf("%d%d%d",&n,&m,&p);
int a[n],b[n];
double c[n];
int i;
for(i=0;i<n;i++)
{
scanf("%d%d",&a[i],&b[i]);
}
for(i=0;i<n;i++)
{
c[i] = a[i]*0.85+b[i]*0.15;
}
sort(c,c+n);
double x;
x = (c[n-m]-0.15*p)/0.85;
if(x<0)
printf("0");
else printf("%.0f",ceil(x));
return 0;
}链接:https://ac.nowcoder.com/acm/contest/9033/B
来源:牛客网
很久很久以前的idea.
给你一个序列c,长度为n。
现在有一个序列a,长度为n。
对于:
如果ci=0c_i = 0ci=0 并且i>1那么ai=ai−1a_i = a_{i-1}ai=ai−1。
如果ci=1c_i = 1ci=1并且iai=ai+1a_i=a_{i+1}ai=ai+1。
现在求序列a中最多有多少种不同的数字。找规律题,主要是分析出0和1的妙处,出现01连续的时候可以看出左右俩个数无关系,左边只和它的左边有关系,右边只和右边有关系,所以,出现01时就就可以有不同的数值出现;
没有01时,只有一种,有一个时就分成俩组,俩组没联系,就是可以有俩种数值,一直细分,索引01的出现次数,答案也就出来了,上代码
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
int n,i;
scanf("%d",&n);
int a[n],flag=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
int sum =1;
for(i=0;i<n-1;i++)
{
if(a[i]==0)
{
if(a[i+1]==1)
{
sum++;i++;
}
}
}
printf("%d",sum);
return 0;
}


京公网安备 11010502036488号