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

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

字符串丝带 (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;
}

相关文章
|
4月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
4月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
4月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构的基本概念;算法的基本概念、特性以及时间复杂度、空间复杂度等举例说明;【含常见的报错问题及其对应的解决方法】
|
4月前
|
存储 人工智能 算法
2024重生之回溯数据结构与算法系列学习(7)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
IKU达人数据结构与算法系列学习之队列的基本概念、如何判断队列已满/已空、队列的链式存储结构[头的出入队]、双端队列、中缀、后缀、前缀表达式、特殊矩阵和一二维数组的压缩储存等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法 你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
测试技术
软件测试面试者注意啦!尽量避开这个坑,千万别让培训机构割韭菜啦!
软件测试面试者注意啦!尽量避开这个坑,千万别让培训机构割韭菜啦!
|
Python
一日一技:你的代码是如何被炫技毁掉的
一日一技:你的代码是如何被炫技毁掉的
135 0
六石管理学:人是不可以被说服的,除非自己想明白
六石管理学:人是不可以被说服的,除非自己想明白
76 0
|
数据安全/隐私保护
【杂(瞎)谈(聊)】易经当中的密码学
看到这个标题,估计可能会有不少读者会有疑问,易经这不是个文学作品吗,怎么和数学相关的密码学给搞到一起了,这不是标题党蛤, 下面小Q来给大家聊聊在易经当中所体现的一些密码学的思想,有些资料来源也不太确定,我凭借记忆进行搜索的,如有错误还请各位读者海涵。
【杂(瞎)谈(聊)】易经当中的密码学
|
消息中间件 架构师 NoSQL
做好职业规划,做一个平凡而不平庸的自己
做好职业规划,做一个平凡而不平庸的自己
213 0
做好职业规划,做一个平凡而不平庸的自己