【无标题】

个人空间 - AcWing

提交链接(题目名称):\AcWing 762. 字符串匹配 - AcWing 

提交AC截图:

提交代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int flag = 0;
    int k;
    string a,b;
    cin>>k>>a>>b;
    int c = a.size();
    for(int i = 0;i<c;i++)
    {
        if(a[i] == b[i])
            flag++;
    }
    flag= flag/c;
    if(k<=flag)
    {
        cout<<"yes";
        return 0;
    }
    else cout<<"no";
    return 0;
}

提交链接(题目名称):AcWing 768. 忽略大小写比较字符串大小 - AcWing

提交AC截图:

提交代码:

#include <bits/stdc++.h> 

using namespace std;
int main(){
    string a,b;
    getline(cin,a);
    getline(cin,b);
    for(int i=0;i<a.size();i++){
        if(a[i] >= 'A' && a[i] <= 'Z') a[i]=a[i]+32;
        if(b[i] >= 'A' && b[i] <= 'Z') b[i]=b[i]+32;
    }

    if(a==b) cout<<"=";
    else if(a<=b) cout<<"<";
    else cout<<">";
}

提交链接(题目名称):AcWing 766. 去掉多余的空格 - AcWing可以利用cin读入遇到空格停止;也可以逐个读入常规解

提交AC截图:

提交代码:

方法一:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    while(cin>>s)
    {
        cout<<s<<" ";
    }
    return 0;
}

方法二:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    getline(cin,s);
    int flag=0;
    for(int i=0;i<s.size();i++)
    {
        if(s[i]!=' ')
            { cout<<s[i];
             flag=0;}
        else if(flag==0)
            {
                cout<<" ";
                flag=1;
            }
        else
            continue;
    }
    return 0;
}

提交链接(题目名称):838. 堆排序 - AcWing题库

提交AC截图:

 

提交代码:

#include <bits/stdc++.h>
using namespace std;
const int N=100010;
int a[N],b;//b为循环次数 

void down(int u)
{
    int t=u;
    if (2 * u <= b && a[t] > a[2 * u])
        t = 2 * u;
    if (2 * u + 1 <= b && a[t] > a[2 * u + 1])
        t = 2 * u + 1;
    if (u != t)
    {
        swap(a[u], a[t]);
        down(t);
    }   
}


int main ()
{
    int n,m;
    cin>>n>>m;
    b=n;
    for(int i=1;i<=n;i++) cin>>a[i];//读入
    for(int i=n/2;i;i--)//n除以二节省时间
    {
        down(i);
    }
    while(m--)//保证顺序
    {
        cout<<a[1]<<" ";
        a[1]=a[b--];
        down(1);//从头结点重新排列一遍,确保下标是1的值,输出出来,然后删除,依次输出当前堆里面最小的值
    }    
    return 0;
}

删除任意一个元素:把最后一个点的值赋值给要删除的节点,再把最后一个点删除,最后down、up一遍排序即可

提交链接(题目名称):839. 模拟堆 - AcWing题库  带映射的堆(不常考)

提交AC截图:

 

提交代码:

1、交换插入时注意要另存一下堆来确保可以找到

2、这道题与上一道堆的题目的不同在于映射,需要多写一个swap函数来进行映射交换

 

#include<bits/stdc++.h>
using namespace std;
int const n =1e5+10;
int h[n],kp[n],pk[n],f,c;
void swap(int a,int b)
{
    swap(h[a],h[b]); //交换数值
    swap(pk[a],pk[b]);//交换pk映射
    swap(kp[pk[a]],kp[pk[b]]);//交换kp映射
}

void down(int u)                  
{
    int t=u;                                  
    if(2*u<=c && h[u*2]<h[t]) t=u*2;
    if(2*u+1<=c && h[u*2+1]<h[t]) t=u*2+1;

    if(t!=u) //如果t不相等则表示不满足小堆条件,应该继续递归处理 
    {       
        swap(t,u);                  
        down(t);//递归 
    }
}

void up(int u)
{
    int t=u;
    if(u/2>0 && h[u/2]>h[t]) t=u/2; //up操作中只需要判断up儿子与根的大小!!! 

    if(t!=u)//递归                          
    {
        swap(t,u);
        up(t);
    }
}

int main()
{
    int n; cin>>n;
    while(n--)
    {
         string l; cin>>l;
        if(l=="I")
        {
            int x; cin>>x;
            h[++c]=x;
            pk[d]=++f;          
            kp[f]=len;
            up(len);
        }
        else if(l=="PM")
        {
            cout<<h[1]<<endl;
        }
        else if(l=="DM")
        {
            swap(1,d--);
            down(1);
        }
        else if(l=="D")
        {
            int k; cin>>k;
            int u=kp[k]; 
            swap(kp[k],c--);
            up(u);
            down(u);
        }
        else if(l=="C")
        {
            int k,x; cin>>k>>x;
            h[kp[k]]=x;
            up(kp[k]);
            down(kp[k]);
        }
    }
}

提交链接(题目名称):题目详情 - L1-077 大笨钟的心情 (pintia.cn)

提交AC截图:

 

提交代码:

#include <bits/stdc++.h>
using namespace std;
int main ()
{
    int a[30],b;
    for(int i=0;i<24;i++) cin>>a[i];
    while(cin>>b && b>=0 && b<=23)
    {
        cout<<a[b];
        if(a[b]>50) {
        cout<<" Yes"<<endl;
    }    else {
    cout<<" No"<<endl;}
     } 
    
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值