题解 CF1286C1 【Madhouse (Easy version)】
Hard version link
题意:有一个字符串
考虑询问
相对于
使用
将
code:
#include <bits/stdc++.h>
#define _ 0
using namespace std;
string s;
multiset<string> st;
string ss[110];
char ans[1000];
bool cmp(string s1,string s2)
{
return s1.size()<s2.size();
}
int buc[1100];
int main()
{
int n;
cin>>n;
if (n==1)
{
cout<<"? "<<1<<' '<<1<<'\n';
fflush(stdout);
char c;
cin>>c;
cout<<"! "<<c;
fflush(stdout);
return 0;
}
cout<<"? "<<1<<' '<<n<<'\n';
fflush(stdout);
for (int i=0;i<n*(n+1)/2;i++)
{
cin>>s;
sort(s.begin(),s.end());
st.insert(s);
}
cout<<"? "<<2<<' '<<n<<'\n';
fflush(stdout);
for (int i=0;i<n*(n-1)/2;i++)
{
cin>>s;
sort(s.begin(),s.end());
st.erase(st.find(s));
}
int cnt=0;
for (auto p:st)
{
ss[cnt++]=p;
}
sort(ss,ss+cnt,cmp);
ans[0]=ss[0][0];
for (int i=1;i<cnt;i++)
{
for (auto p:ss[i-1])
buc[p]--;
for (auto p:ss[i])
buc[p]++;
for (int j=0;j<255;j++)
if (buc[j]>0)
{
buc[j]=0;
ans[i]=j;
}
}
cout<<"! "<<ans;
fflush(stdout);
return ~~(0^_^0);
}