【数据结构1-3】集合 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路:这道题用map,存一下每个球数所在的位置,然后输出就行了
完整代码:
#include <bits/stdc++.h>
#define int long long
signed main()
{
std::map<int,int>mp;
int n;
std::cin >> n;
for(int i = 1;i <= n;i ++)
{
int x;
std::cin >> x;
mp[x]=i;
}
int m;
std::cin >> m;
for(int i = 1;i <= m;i ++)
{
int y;
std::cin >> y;
std::cout<<mp[y]<<"\n";
}
return 0;
}
思路:a-b=c,要求b,可以转化为a-c=b
完整代码:
#include <bits/stdc++.h>
#define int long long
int len,n,m;
signed main()
{
int t;
std::cin >> t;
while(t --)
{
std::cin >> n;
m=n;
while(m!=0)
{
m/=10;
len++;
}
//std::cout<<"len "<<len<<"\n";
int num=pow(10,len-1);
//std::cout<<"num"<<num<<"\n";
std::cout<<n-num<<"\n";
len=0;
}
return 0;
}
题意:每天只能记三个字母,问要多少天才能把单词背完
注意:考虑边界 如:test这种单词在一天就可以记完
完整代码:
#include <bits/stdc++.h>
#define int long long
signed main()
{
int t;
std::cin >> t;
while(t --)
{
std::string s;
std::cin >> s;
std::set<char>st;
int num=0,ans=0;
int len=s.length();
for(int i = 0;i < len;i ++)
{
char ss=s[i];
if(st.find(ss)!=st.end())
{
continue;
}
if(st.find(ss)==st.end())
{
num++;
st.insert(ss);
if(num%3==0)
{
while(st.find(s[i])!=st.end())
{
i ++;
}
st.clear();
i --;
}
}
}
int a=num/3,b=num%3;
// std::cout<<num<<"\n";
// std::cout<<a <<" "<<b<< "\n ";
if(b)
{
std::cout<<a+1<<"\n";
}
else
{
std::cout<<a<<"\n";
}
}
return 0;
}