四道好题分享(看似简单,但是棘手)

简介: 四道好题分享(看似简单,但是棘手)

字符串丝带 (nowcoder.com) 


11.1.png

#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)


11.2.png

image.png

 排序——寻找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)

11.3.png11.4.png

#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;
}

拼数 (nowcoder.com)

image.png

🍔🍔🍔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];
    }
}

11.5.png

11.6.png

如果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;
}

相关文章
|
5月前
|
安全 Java 索引
如何克服Leetcode做题的困境
如何克服Leetcode做题的困境
26 0
|
7月前
|
消息中间件 前端开发 NoSQL
八股乱背,力扣不会!下辈子远离计算机
八股乱背,力扣不会!下辈子远离计算机
32 0
|
8月前
|
设计模式 网络协议 算法
|
8月前
|
测试技术
软件测试面试者注意啦!尽量避开这个坑,千万别让培训机构割韭菜啦!
软件测试面试者注意啦!尽量避开这个坑,千万别让培训机构割韭菜啦!
|
8月前
|
测试技术
害死人不偿命的(3n+1)猜想
害死人不偿命的(3n+1)猜想
|
8月前
|
算法 搜索推荐 程序员
一文学会算法复杂度分析,面试再也不用愁了。
一文学会算法复杂度分析,面试再也不用愁了。
|
12月前
|
并行计算 C++
这道小学六年级的数学题,恕我直言没几个人会做
这道小学六年级的数学题,恕我直言没几个人会做
258 0
|
12月前
|
人工智能 算法 C++
【每日算法Day 88】超越妹妹教你如何做这道排序题
【每日算法Day 88】超越妹妹教你如何做这道排序题
|
机器学习/深度学习 人工智能
把所有的谎言献给你β(找规律数学题)
梓川咲太的面前坐着野兔先辈,作为约定,只好乖乖的打开笔记本开始学习了。 “加法符号写歪了,变成了乘法符号,在算式的第三行那个地方。”樱岛麻衣突然开口。
113 0
把所有的谎言献给你β(找规律数学题)