L KaChang!
这题很简单,看懂就能做。
找出y的几倍能大于等于所给的所有数,同时倍数必须大于等于2;
因此,我们直接找出这组数中最大的一个,对y做除法并向上取整就好了。
cpp
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
signed main()
{
int n,y;
cin>>n>>y;
int maxn=-1;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
maxn=max(maxn,x);
}
int d=maxn/y;
if(maxn%y) d++;
cout<<max(d,2);
return 0;
}
A 预选赛排名规则
做题重点在于理解题意。我们做的时候看不懂题目,根据样例反推的。
我一开始以为每次只要能就必须要输出一组的string,后来根据样例反推发现,如果这一组的string刚好输出过了,那么直接输出另一组的string就好了。
。
"使用合并排序方法合并大学的两个排名。对于任何两所大学在不同比赛中获得相同排名的,在第一场比赛中获得此排名的大学将排名第一。"
也就是按排名排序,第一组中排第一的第一个输出,第二组排第一的下一个输出,
cpp
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
map<string,int> mp1,mp2,mp3;
vector<string> v1,v2;
signed main()
{
int m,n;
cin>>m>>n;
for(int i=1;i<=m;i++)
{
string x;
cin>>x;
if(!mp1[x])
{
v1.push_back(x);
mp1[x]=1;
}
}
for(int i=1;i<=n;i++)
{
string x;
cin>>x;
if(!mp2[x])
{
v2.push_back(x);
mp2[x]=1;
}
}
int len=0;
for(;len<min(v1.size(),v2.size());len++)
{
if(!mp3[v1[len]])
{
mp3[v1[len]]=1;
cout<<v1[len]<<endl;
}
if(!mp3[v2[len]])
{
mp3[v2[len]]=1;
cout<<v2[len]<<endl;
}
}
if(len<v1.size())
{
for(;len<v1.size();len++)
{
if(!mp3[v1[len]])
{
cout<<v1[len]<<endl;
}
}
}
if(len<v2.size())
{
for(;len<v2.size();len++)
{
if(!mp3[v2[len]])
{
cout<<v2[len]<<endl;
}
}
}
return 0;
}
D Transitivity
更新中......