#include<bits/stdc++.h>
using namespace std;
const int N = 1000010;
int main()
{
char str[N];
int cnt[N];
int ind[N];
int n,m;
scanf("%d %d",&n,&m);
scanf("%s",str+1);
for(int i = 1 ; i <= n ;i++){
cnt[str[i] - 'a']++;
ind[i] =cnt[str[i] - 'a'];
}
int x;
while(m--) {
scanf("%d",&x);
printf("%d\n",ind[x]);
}
return 0;
}
[NOIP2017]图书管理员 (nowcoder.com)
排序——寻找min,如果找到了,立即break
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,q;
cin>>n>>q;
long long a[n+1];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n);//排序!!!
for(int i=1;i<=q;i++)
{
long long len,x;
cin>>len>>x;
long long y=pow(10,len);//妙!!!
for(int j=1;j<=n;j++)
{
if(a[j]%y==x)
{
cout<<a[j]<<endl;
break;
}
if(j==n)
cout<<-1<<endl;
}
}
return 0;
}
或者
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,q,len;
vector<string> ve;
vector<int> nt;
string s;
cin>>n>>q;
while(n--)
{
cin>>len;
nt.push_back(len);
}
sort(nt.begin(),nt.end());//排序!!!
for(auto i:nt)//遍历nt容器
{
ve.push_back(to_string(i));//to_string 把i变成字符串
}
while(q--)
{
cin>>len>>s;
int flag=0;
for(auto i:ve)
{
int x=i.size()-len;
if(x<0)
{
continue;
}
if(i.substr(x,len)==s)//截取字符串
{
flag=1;
s=i;
break;
}
}
if(flag)
{
cout<<s<<endl;
}
else
{
cout<<"-1"<<endl;
}
}
}
[NOIP2007]纪念品分组 (nowcoder.com)
#include <iostream>
#include<algorithm>
using namespace std;
int n,w;
const int N=10010;
int p[N];
int main()
{
cin>>w>>n;
for(int i=0 ;i < n;i ++ ) cin>>p[i];
sort(p,p+n);//注意已经排过序了
int res =0;
int l=0;
for(int i=n-1;i >= l;i -- )
{
if(p[i] + p[l] <= w ) l ++;
res ++ ;
}
cout<<res<<endl;
return 0;
}
🍔🍔🍔string类型的按ASCII比较大小
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool cmp (string a, string b)
{
return a + b > b + a;
}
int main()
{
string s[21];
int n;
cin >> n;
for(int i = 1; i <= n; i ++ ){
cin >> s[i];
}
sort(s + 1, s + 1 + n, cmp);
for(int i = 1; i <= n; i ++ ){
cout << s[i];
}
}
如果Sl!=Sl+i,继续进行
一旦Sl=Sl+1,立刻截至,即使后面有Sl!=Sl+i也不能进行
#include <stdio.h>
int main(void) {
int n;
char s[5000];
scanf("%d", &n);
scanf("%s", s);
for (int i = 1; i < n; i++)
{
int l = 0;//关键点
while (l + i != n && s[l] != s[l+i])
{
l++;
}
printf("%d\n", l);
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131424.html