360 java后端两道编程
作者:
qbz666
,
2022-08-27 16:18:47
,
所有人可见
,
阅读 192
T1
int n,p,q;
const int N=1010;
int a[N];
void solve()
{
cin>>n>>p>>q;
set<int>s;
int res=0;
for(int i=1;i<=n;i++)cin>>a[i],s.insert(a[i]);
vector<int>v;
for(auto x:s)v.push_back(x);
reverse(v.begin(),v.end());
map<int,int>mp;
int sum=100;
for(int i=0;i<v.size();i++)
mp[v[i]]=sum--;
for(int i=1;i<=n;i++)
{
double num=(mp[a[i]]*p+a[i]*q)/100.0;
if(num>=60)res++;
}
cout<<res<<endl;
}
T2
int n1,n2,n3,m;
const int N=1010;
void solve()
{
cin>>n1>>n2>>n3;
map<string,int>mp1,mp2,mp3;
for(int i=0;i<n1;i++)
{
string s;
cin>>s;
mp1[s]++;
}
for(int i=0;i<n2;i++)
{
string s;
cin>>s;
mp2[s]++;
}
for(int i=0;i<n3;i++)
{
string s;
cin>>s;
mp3[s]++;
}
cin>>m;
getchar();
while(m--)
{
string str;
getline(cin,str);
stringstream ss(str);
string s;
vector<int>v(5);
int cnt=1;
int sum=0;
v[3]=0x3f3f3f3f;
while(ss>>s)
{
int a=0;
if(mp1.count(s))a=1;
else if(mp2.count(s))a=2,sum++;
else if(mp3.count(s))a=3;
v[a]=cnt;
cnt++;
}
if(sum>=2)
{
cout<<"NO"<<endl;
continue;
}
else if(v[1]==0)
{
cout<<"NO"<<endl;
continue;
}
else
{
bool f=false;
for(int i=1;i<=2;i++)
{
if(v[i]>=v[i+1])
{
f=true;
cout<<"NO"<<endl;
break;
}
}
if(!f)cout<<"YES"<<endl;
}
}
}