2020 11 07 天梯赛
7-9 点赞狂魔
之前比赛的时候之所以WA是因为忽略了n==0和n==1的情况。这提醒我要注意观察题目所给变量的取值范围,注意临界值。
结构体排序,再按照要求格式化输出即可。
代码如下:
#include<bits/stdc++.h>
using namespace std;
struct per
{
string name;
int num=0;
int sum=0;
}p[200];
bool cmp(per i,per j)
{
if(i.sum==j.sum)
{
return i.num<j.num;
}
return i.sum>j.sum;
}
int main()
{
int n,i,j,k;
cin>>n;
string s;
for(i=0;i<n;i++)
{
cin>>s;
p[i].name=s;
cin>>k;
p[i].num=k;
set<int>ss;
for(j=0;j<k;j++)
{
int tem;
cin>>tem;
ss.insert(tem);
}
p[i].sum=ss.size();
}
sort(p,p+n,cmp);
if(n<3)
{
bool flag=0;
for(i=0;i<n;i++)
{
flag=1;
if(i==0)
cout<<p[i].name;
else
{
cout<<" "<<p[i].name;
}
}
for(i=0;i<(3-n);i++)
{
if(flag==1)
{
cout<<" -";
}
else
{
cout<<"- - -";
}
}
cout<<endl;
}
else
{
for(i=0;i<3;i++)
{
if(i==0)
{
cout<<p[i].name;
}
else
{
cout<<" "<<p[i].name;
}
}
cout<<endl;
}
return 0;
}
7-11 彩虹瓶
想复杂了。真正AC的代码比我WA的代码简单多了。如果一个题的代码太过复杂,要及时转换思路。
用一个栈来模拟题目中的架子,然后循环模拟即可。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m,k,i,j;
cin>>n>>m>>k;
int a[1000+8];
while(k--)
{
bool flag=1;
stack<int>s;
set<int>judge;
int d=1;
for(i=0;i<n;i++)
{
cin>>j;
s.push(j);
judge.insert(j);
if(s.top()==d)
{
s.pop();
judge.erase(d);
d++;
while(!s.empty())
{
if(s.top()==d)
{
s.pop();
judge.erase(d);
d++;
}
else
{
break;
}
}
}
else
{
;
}
if(s.size()>m)
{
flag=0;
}
if(judge.find(d)!=judge.end())
{
flag=0;
}
}
if(flag==1)
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}
return 0;
}