贪心,第一次溢出了,只好用vector(也许是代码写错了,看大家用数组都过了)
先判断当m<=x时,仅发起单体攻击;当m>x时,先对前n-x个怪兽发起群体攻击,然后再对后者进行单体攻击
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
typedef unsigned long long ll;
bool cmp(ll a,ll b)
{
return a>b;
}
vector<ll> a;
int main()
{
ll n,x,i;
cin>>n>>x;
ll s=0,c;
for(i=0;i<n;i++)
{
cin>>c;
s+=c;
a.push_back(c);
}
ll sum=0;
if(n<=x)
{
cout<<s<<endl;
}
else if(s>n)
{
sort(a.begin(),a.end());
sum=x*a[n-x];
for(i=n-x+1;i<n;i++)
{
sum=sum+a[i]-a[n-x];
}
cout<<sum<<endl;
}
}
极端思想,分数最低的情况,隐藏的分数均为最低分 1 分;分数最高的情况,隐藏的分数均为最高分 5 分
#include<iostream>
#include<cstdio>
using namespace std;
typedef unsigned long long ll;
int main()
{
ll n,m,i,a;
cin>>n>>m;
double s=0;
for(i=0;i<n-m;i++)
{
cin>>a;
s+=a;
}
printf("%.5f %.5f\n",(s+m)/n,(s+5*m)/n);
}
有若干的字符串读入,用(cin>>s)读取,在最后测评机会自动Ctrl+z,跳出读取循环,然后开一个26长度的数组来记录每个字符出现的数量。
#include<iostream>
#include<cstdio>
#include<string>
#include<string.h>
using namespace std;
typedef unsigned long long ll;
int main()
{
string s;
ll a[26]={0},m=0,ma=0;
cin.ignore();
while(cin>>s)
{
ma=m=0;
for(ll i=0;i<s.length();i++)
{
if(s[i]>='a'&&s[i]<='z')
{
a[s[i]-'a']++;
}
}
for(ll i=0;i<26;i++)
{
if(ma<=a[i])
{
ma=a[i];
m=i;
}
}
}
printf("%c\n",m+'a');
}