头像

多情剑客无情剑




离线:13天前


最近来访(17)
用户头像
空白b
用户头像
Michael_Yon
用户头像
TinyDolphin
用户头像
Fly_yyy
用户头像
Lims
用户头像
dhsmt
用户头像
C++小郑
用户头像
prstcoder
用户头像
强风吹拂2022
用户头像
qiu
用户头像
skydegree
用户头像
星逐月丶
用户头像
zombotany


X~E584P6O27J5@{2~O(P{DP.png linux选择命令行复制怎么变成选择状态
???



活动打卡代码 AcWing 789. 数的范围

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

int main(){
    int n,q;
    cin>>n>>q;
    int a[100001];
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    while(q--){
        int x;
        cin>>x;
        int l=0,r=n-1;

        while(l<r){
            // 求最左端的x
            int mid=l+r>>1;
            if(x>a[mid])l=mid+1;
            else r=mid;
        }
        // 不存在x
        if(a[l]!=x){
            cout<<"-1 -1"<<endl;
            continue;
        }
        int l1=l,r1=n;
        while(l1<r1){
            // 求最右端的x
            int mid=l1+r1>>1;
            if(x<a[mid]) r1=mid;
            else l1=mid+1;
        }
        cout<<l<<" "<<l1-1<<endl;
    }


}



题意其实就是判断斜率有几种,但是要注意斜率不存在的情况用res表示

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    double a,b;
    double x[1000],y[1000];
    map<long double,bool> st;
    int res=0;
    cin>>n>>a>>b;
    int ans=0;
    for(int i=0;i<n;i++){

        cin>>x[i]>>y[i];
        if(int(x[i]-a)==0 ||int(a-x[i])==0){res=1;}
        else{
            if(st[(y[i]-b)/(x[i]-a)]==0){

            st[(y[i]-b)/(x[i]-a)]=1;

            ans++;
        }
        }

    }
    cout<<ans+res;


}


活动打卡代码 工程课 Linux-2.0. homework_0

//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



 /*
// Definition for a Node.
class Node {
public:
    int val;
    Node* next;
    Node* random;

    Node(int _val) {
        val = _val;
        next = NULL;
        random = NULL;
    }
};
*/
class Solution {
public:
// 每个节点的next等于此节点,next->next是此节点的下一节点
// p->next为复制的节点
// 最后建立新表复制分离出来
    Node* copyRandomList(Node* head) {
        for(auto p=head;p;)
        {
            auto np=new Node(p->val);
            auto next=p->next;
            p->next=np;
            np->next=next;
            p=next;
        }
        for(auto p=head;p;p=p->next->next)
        {
            if(p->random)
            {
                p->next->random=p->random->next;
            }
        }
        auto dummy=new Node(-1);
        auto cur=dummy;
        for(auto p=head;p;p=p->next)
        {
            cur->next=p->next;
            cur=cur->next;
            // 前面破坏了原head链表,恢复链表
             p->next = p->next->next;
        }
        return dummy->next;

    }
};



#include<bits/stdc++.h>
using namespace std;
int main(){
    int res=0;
    int n;
    int a[1000001];
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<n-1;i++)
    {
        res+=max(a[i+1]-a[i],0);
    }
    cout<<res;
}



#include<bits/stdc++.h>
using namespace std;
int main(){
    int res=0;
    int tem=1<<28;
    int n;
    cin>>n;
    int a[10000001];
    for(int i=0;i<n;i++){
        cin>>a[i];
        res=max(res,a[i]-tem);
        tem=min(a[i],tem);

    }
    cout<<res;
}


活动打卡代码 AcWing 1606. C 语言竞赛

#include<bits/stdc++.h>
using namespace std;
int n,k;
unordered_map <string,int> mp;
bool f(int x){
    for(int i=2;i<=sqrt(x);i++){
        if(x%i==0){
            return false;
        }
    }
    return true;
}
int  main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        string x;
        cin>>x;
        mp[x]=i;
    }
    cin>>k;
    for(int i=1;i<=k;i++){
        string x;
        cin>>x;
        if(mp[x]!=0){
            if(mp[x]==1)
            {
                 cout << x<<": Mystery Award"<<endl;
                 mp[x]=-1;

            }
            else if(mp[x]==-1)
            {
               cout << x<<": Checked"<<endl;

            }
            else if(f(mp[x]))
            {
                cout << x<<": Minion"<<endl;
                mp[x]=-1;

            }

            else{
                cout << x<<": Chocolate"<<endl;
                mp[x]=-1;
            }

        }
        else if(mp[x]==0)
        {
            cout << x<<": Are you kidding?"<<endl;
        }
    }

}


活动打卡代码 AcWing 1631. 后序遍历

#include <bits/stdc++.h>
using namespace std;
const int N = 50010;
int pre[N], ino[N];
unordered_map<int, int> mp;
int pos[N];
int n, cnt = 0;
void build(int il, int ir, int pl, int pr)
{
    int root = pre[pl];
    int k = mp[root];
    if (il < k)
    {
        build(il, k - 1, pl + 1, pl + 1 + (k - 1 - il));       //重点 *** k是中序的下标序号 —— 用k推出前序的下标序号
    }
    if (ir > k)
    {
        build(k + 1, ir, pl + k - il + 1, pr);               //重点
    }
    pos[cnt++] = root;
}
int main()
{
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> pre[i];
    }
    for (int i = 0; i < n; i++)
    {
        cin >> ino[i];
        mp[ino[i]] = i;
    }
    build(0, n - 1, 0, n - 1);
    for (int i = 0; i < n;i++)
        cout << pos[i];
}



活动打卡代码 AcWing 1497. 树的遍历

// unordered_map比map时间复杂度低,插入查找接近O(1) 缺点没有顺序

include[HTML_REMOVED]

using namespace std;
int n;
vector[HTML_REMOVED] Inorder(40,0), post(40,0);
unordered_map[HTML_REMOVED] mp; //key存储值,value存储节点序号下标
unordered_map[HTML_REMOVED] l, r;
int build(int il,int ir,int pl,int pr){
int root = post[pr];
int k = mp[root];

if(il<k){
    l[root]=build(il, k-1, pl, pl + k - 1 - il);
}
if(ir>k){
    r[root]=build(k + 1, ir, pl+(k-1-il)+1, pr-1);
}
return root;

}
void bfs(int u){
queue[HTML_REMOVED] q;
q.push(u);
while(q.size()){
int t = q.front();
cout << t << ‘ ‘;
q.pop();
if(l[t]){
q.push(l[t]);
}
if(r[t]){
q.push(r[t]);
}
}
}
int main(){
cin >> n;
for (int i = 0;i[HTML_REMOVED]>post[i];
}
for (int i = 0; i < n;i++){
cin >> Inorder[i];
mp[Inorder[i]] = i;
}
int root = build(0, n - 1, 0, n - 1);
bfs(root);
}