头像

ash_heat

$\href{https://www.cnblogs.com/liangqianxing/}{{我滴博客}}$$\color{red}{\texttt{Legendary Grandmaster}}$




离线:2小时前


最近来访(337)
用户头像
漂浮自在的中微子
用户头像
kesmeey
用户头像
图灵机
用户头像
zbs
用户头像
Pharaoh
用户头像
Dreaife
用户头像
我yao一杯冰可乐
用户头像
魏金龙是好人
用户头像
简单男孩_9
用户头像
harper886
用户头像
陈越姥姥死忠粉
用户头像
王不懂
用户头像
泠憨youser
用户头像
perfectionist
用户头像
昊子
用户头像
incra
用户头像
aspirant_C
用户头像
86_4
用户头像
小鹿_2
用户头像
Zlc晨鑫


ash_heat
12小时前

于是他错误的点名开始了[trie]

于是他错误的点名开始了

板子题;判断有没有点过名就查询一下就行,判断有没有念错名用set维护一下就行

#include<bits/stdc++.h>
const int N=2e6+10;
int n,m;
int tr[N][26];
int sum[N];
int idx;
void insert(std::string s,int v){
    int root=0;
    for(int i=0;i<s.size();i++){
        int id=s[i]-'a';
        if(!sum[tr[root][id]]){
            tr[root][id]=++idx;
        }
        root=tr[root][id];sum[root]+=v;
    }
}
int query(std::string s){
    int root=0;
    for(int i=0;i<s.size();i++){
        int id=s[i]-'a';
        if(!sum[tr[root][id]])return 0;
        root=tr[root][id];
    }
    return sum[root];
}
void solve(){std::set<std::string>S;
    std::cin>>n;
    std::string s;while(n--){
        std::cin>>s;S.insert(s);
    }std::cin>>m;while(m--){std::string q;std::cin>>q;
        if(query(q))std::cout<<"REPEAT"<<std::endl;
        else{
            if(!S.count(q))std::cout<<"WRONG"<<std::endl;
            else{
                std::cout<<"OK"<<std::endl;insert(q,1);
            }
        }
    }
}
signed main(){
    solve();return 0;
}



ash_heat
13小时前

trie 之类的就是贪心的搜索

#include<bits/stdc++.h>
typedef std::pair<int,int> PII;
const int N=3e6+10;
int n,m;
int cnt[N*10];
int tr[N][3],idx;
void insert(int x,int v){
    int root=0;int res=x;
    for(int i=30;~i;i--){
        int id=res>>i&1;
        if(!tr[root][id])tr[root][id]=++idx;
        root=tr[root][id];cnt[root]+=v;
    }
}
int query(int x){
    int root=0;int res=0;
    for(int i=30;~i;i--){
        int id=x>>i&1;
        if(cnt[tr[root][!id]])id^=1,res+=1<<i;
        root=tr[root][id];
    }return res;
}
void solve(){
    std::cin>>n;std::vector<int>a(n);
    for(auto &it:a)std::cin>>it;
    int res=0;for(auto it:a)insert(it,1);
    for(auto it:a)res=std::max(res,query(it));
    std::cout<<res<<std::endl;
}
signed main(){
    solve();return 0;
}


活动打卡代码 AcWing 1227. 分巧克力

//这里填你的代码^^
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int> PII;
const int N=2e5+10;
int n,m;
int a[N],b[N];
bool check(int x){
    int sum=0;
    for(int i=1;i<=n;i++){
        sum+=(a[i]/x)*(b[i]/x);
    }
    return sum>=m;
}
void solve(){
    cin>>n>>m;
    int maxl=0;
    for(int i=1;i<=n;i++){
        cin>>a[i]>>b[i];
        maxl=max({maxl,a[i],b[i]});
    }
    int l=1,r=maxl;
    int ans=1;
    while(l<r){
        int mid=l+r+1>>1;
        if(check(mid)){
            ans=mid;
            l=mid;
        }
        else r=mid-1;
    }
    cout<<ans<<endl;
}
signed main(){
    // int __;std::cin>>__;while(__--)
    solve();return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 99. 激光炸弹

//这里填你的代码^^
// Problem: 激光炸弹
// Contest: AcWing
// URL: https://www.acwing.com/problem/content/description/101/
// Memory Limit: 168 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#pragma GCC optimize("-fdelete-null-pointer-checks,inline-functions-called-once,-funsafe-loop-optimizations,-fexpensive-optimizations,-foptimize-sibling-calls,-ftree-switch-conversion,-finline-small-functions,inline-small-functions,-frerun-cse-after-loop,-fhoist-adjacent-loads,-findirect-inlining,-freorder-functions,no-stack-protector,-fpartial-inlining,-fsched-interblock,-fcse-follow-jumps,-fcse-skip-blocks,-falign-functions,-fstrict-overflow,-fstrict-aliasing,-fschedule-insns2,-ftree-tail-merge,inline-functions,-fschedule-insns,-freorder-blocks,-fwhole-program,-funroll-loops,-fthread-jumps,-fcrossjumping,-fcaller-saves,-fdevirtualize,-falign-labels,-falign-loops,-falign-jumps,unroll-loops,-fsched-spec,-ffast-math,Ofast,inline,-fgcse,-fgcse-lm,-fipa-sra,-ftree-pre,-ftree-vrp,-fpeephole2",3,2)
#include<map>
#include<set>
#include<list>
#include<stack>
#include<cmath>
#include<queue>
#include<cstdio>
#include<time.h>
#include<cstring>
#include<ostream>
#include<limits.h>
#include<iostream>
#include<iterator>
#include<algorithm>
#include<functional>
#include<unordered_set>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
#define int long long
#define ull unsigned long long
#define PII pair<int,int>
#define puts(res) cout<<res<<'\n'
#define debug(a) cout<<#a<<"="<<a<<endl
#define debug2(a,b) cout<<#a<<"="<<a<<" "<<#b<<"="<<b<<endl
#define mem1(a) memset(a,-1,sizeof(a))
#define mem0(a) memset(a,0,sizeof(a))
#define mem(a) memset(a,0x3f,sizeof(a))
#define fup(o,a,b) for(int o=a;o<=b;o++)
#define up(a,b) for(int o=a;o<=b;o++)
#define dn(a,b) for(int o=a;o>=b;o--)
#define fdn(o,a,b) for(int o=a;o>=b;o--)
#define show(a) for(auto it:a)cout<<it<<" ";
#define cvec(a) for(auto &it:a)cin>>it;
#define all(a) (a).begin(),(a).end()
#define YES {puts("YES");return;}
#define NO {puts("NO");return;}
#define IOS ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define endl '\n'
#define fi first
#define se second
#define pb emplace_back
#define pob pop_back
#define pof pop_front
#define pf emplace_front
#define db double
#define MAX 0x7ffffffffffffffff
#define INF 0x3f3f3f3f3f3f3f3f
const int N=5010;
signed n,m,k,s[N][N];
void solve(){
    //try it again.
    int r;
    cin>>n>>r;
    r=min(5001ll,r);
    up(1,n){
        int x,y,w;
        cin>>x>>y>>w;
        s[++x][++y]+=w;
    }
    fup(i,1,5001)
        fup(j,1,5001){
            s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
        }
    signed ans=0;
    fup(i,r,5001)
        fup(j,r,5001){
            ans=max(ans,s[i][j]-s[i-r][j]-s[i][j-r]+s[i-r][j-r]);
        }
    cout<<ans<<endl;
}
signed main(){
    IOS;
    // int __;
    // cin>>__;
    // while(__--)
        solve();
    return 0;
}


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


活动打卡代码 AcWing 1208. 翻硬币

//这里填你的代码^^
// Problem: 翻硬币
// Contest: AcWing
// URL: https://www.acwing.com/problem/content/1210/
// Memory Limit: 64 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

// #pragma GCC optimize("-fdelete-null-pointer-checks,inline-functions-called-once,-fexpensive-optimizations,-foptimize-sibling-calls,-ftree-switch-conversion,-finline-small-functions,inline-small-functions,-frerun-cse-after-loop,-fhoist-adjacent-loads,-findirect-inlining,-freorder-functions,no-stack-protector,-fpartial-inlining,-fsched-interblock,-fcse-follow-jumps,-falign-functions,-fstrict-aliasing,-fschedule-insns2,-ftree-tail-merge,inline-functions,-fschedule-insns,-freorder-blocks,-funroll-loops,-fthread-jumps,-fcrossjumping,-fcaller-saves,-fdevirtualize,-falign-labels,-falign-loops,-falign-jumps,unroll-loops,-fsched-spec,-ffast-math,Ofast,inline,-fgcse,-fgcse-lm,-fipa-sra,-ftree-pre,-ftree-vrp,-fpeephole2",3,2)
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
using i64=long long;
#define int long long
#define ull unsigned long long
#define PII pair<int,int>
#define eps 1e-7
#define puts(res) cout<<res<<'\n'
#define put cout<<'\n'
#define cout(a) cout<<a<<'\n';
#define debug(a) cout<<#a<<"="<<a<<endl
#define debug2(a,b) cout<<#a<<"="<<a<<" "<<#b<<"="<<b<<endl
#define debug3(a,b,c) cout<<#a<<"="<<a<<" "<<#b<<"="<<b<<" "<<#c<<"="<<c<<endl
#define mem1(a) memset(a,-1,sizeof(a))
#define mem0(a) memset(a,0,sizeof(a))
#define mem(a) memset(a,0x3f,sizeof(a))
#define fup(o,a,b) for(int o=a;o<=b;o++)
#define up(a,b) for(int o=a;o<=b;o++)
#define dn(a,b) for(int o=a;o>=b;o--)
#define fdn(o,a,b) for(int o=a;o>=b;o--)
#define show(a) for(auto it:a)cout<<it<<" ";
#define cvec(a) for(auto &it:a)cin>>it;
#define sz(v) (int)v.size()
#define all(a) (a).begin(),(a).end()
#define range(a,n) a+1,a+1+n
#define crange(a,n) up(1,n)cin>>a[o]
#define showcase(a,n) up(1,n)cout<<a[o]<<" \n"[o==n];
#define rall(x) (x).rbegin(), (x).rend()
#define YES {puts("YES");return;}
#define NO {puts("NO");return;}
#define IOS ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define ls(x) (tr[x].l)
#define rs(x) (tr[x].r)
#define sum(x) tr[x].sum
#define endl '\n'
#define fi first
#define se second
#define pb emplace_back
#define pob pop_back
#define pof pop_front
#define pf emplace_front
#define db double
#define MAX 0x7ffffffffffffffff
#define INF 0x3f3f3f3f3f3f3f3f
const int N=2e5+10;
int n,m;
string s;
string to;
int ans;
void filp(int x){
    if(s[x]=='*')s[x]='o';
    else s[x]='*';
    if(s[x+1]=='*')s[x+1]='o';
    else s[x+1]='*';
    ans++;
}

void solve(){
    //try it again.
    cin>>s>>to;
    n=sz(s);
    s="?"+s;
    to="?"+to;
    up(1,n-1){
        if(s[o]!=to[o])filp(o);
    }
    if(s[n]==to[n])cout<<ans<<endl;
    else cout<<-1<<endl;
}
signed main(){
    IOS;
    // int __;
    // cin>>__;
    // while(__--)
        solve();
    return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 717. 简单斐波那契

//这里填你的代码^^
// Problem: 简单斐波那契
// Contest: AcWing
// URL: https://www.acwing.com/problem/content/719/
// Memory Limit: 64 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int> PII;
const int N=2e5+10;
int n,m;
void solve(){
    cin>>n;
    int a=0,b=1,c=0;
    while(n--){
        cout<<a<<" ";
        c=b+a;
        a=b,b=c;
    }
}
signed main(){
    // int __;std::cin>>__;while(__--)
    solve();return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 95. 费解的开关

//这里填你的代码^^
// Problem: 费解的开关
// Contest: AcWing
// URL: https://www.acwing.com/problem/content/description/97/
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#pragma GCC optimize("-fdelete-null-pointer-checks,inline-functions-called-once,-fexpensive-optimizations,-foptimize-sibling-calls,-ftree-switch-conversion,-finline-small-functions,inline-small-functions,-frerun-cse-after-loop,-fhoist-adjacent-loads,-findirect-inlining,-freorder-functions,no-stack-protector,-fpartial-inlining,-fsched-interblock,-fcse-follow-jumps,-falign-functions,-fstrict-aliasing,-fschedule-insns2,-ftree-tail-merge,inline-functions,-fschedule-insns,-freorder-blocks,-funroll-loops,-fthread-jumps,-fcrossjumping,-fcaller-saves,-fdevirtualize,-falign-labels,-falign-loops,-falign-jumps,unroll-loops,-fsched-spec,-ffast-math,Ofast,inline,-fgcse,-fgcse-lm,-fipa-sra,-ftree-pre,-ftree-vrp,-fpeephole2",3,2)
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
using i64=long long;
#define int long long
#define ull unsigned long long
#define PII pair<int,int>
#define eps 1e-7
#define puts(res) cout<<res<<'\n'
#define put cout<<'\n'
#define cout(a) cout<<a<<'\n';
#define debug(a) cout<<#a<<"="<<a<<endl
#define debug2(a,b) cout<<#a<<"="<<a<<" "<<#b<<"="<<b<<endl
#define debug3(a,b,c) cout<<#a<<"="<<a<<" "<<#b<<"="<<b<<" "<<#c<<"="<<c<<endl
#define mem1(a) memset(a,-1,sizeof(a))
#define mem0(a) memset(a,0,sizeof(a))
#define mem(a) memset(a,0x3f,sizeof(a))
#define fup(o,a,b) for(int o=a;o<=b;o++)
#define up(a,b) for(int o=a;o<=b;o++)
#define dn(a,b) for(int o=a;o>=b;o--)
#define fdn(o,a,b) for(int o=a;o>=b;o--)
#define show(a) for(auto it:a)cout<<it<<" ";
#define cvec(a) for(auto &it:a)cin>>it;
#define sz(v) (int)v.size()
#define all(a) (a).begin(),(a).end()
#define range(a,n) a+1,a+1+n
#define crange(a,n) up(1,n)cin>>a[o]
#define showcase(a,n) up(1,n)cout<<a[o]<<" \n"[o==n];
#define rall(x) (x).rbegin(), (x).rend()
#define YES {puts("YES");return;}
#define NO {puts("NO");return;}
#define IOS ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define endl '\n'
#define fi first
#define se second
#define pb emplace_back
#define pob pop_back
#define pof pop_front
#define pf emplace_front
#define db double
#define MAX 0x7ffffffffffffffff
#define INF 0x3f3f3f3f3f3f3f3f
const int N=2e5+10;
int n,m;
int a[6][6];
int tmp[6][6];
bool yes(int x,int y){
    if(x<1||x>5)return false;
    if(y<1||y>5)return false;
    return true;
}
void turn(int x,int y){
    if(yes(x,y))a[x][y]^=1;
    if(yes(x+1,y))a[x+1][y]^=1;
    if(yes(x-1,y))a[x-1][y]^=1;
    if(yes(x,y+1))a[x][y+1]^=1;
    if(yes(x,y-1))a[x][y-1]^=1;
}
void solve(){
    //try it again.
    fup(i,1,5){
        fup(j,1,5){
            char x;cin>>x;
            a[i][j]=x-'0';
        }
    }
    int ans=INF;
    for(int i=0;i<(1<<5);i++){
        int res=0;
        memcpy(tmp,a,sizeof tmp);
        fup(j,0,4){
            if(i>>j&1){
                res++;
                turn(1,j+1);
            }
        }
        fup(i,1,4){
            fup(j,1,5){
                if(!a[i][j]){
                    res++;
                    turn(i+1,j);
                }
            }
        }
        bool falg=false;
        fup(i,1,5)if(!a[5][i])falg=true;
        if(!falg)ans=min(ans,res);
        memcpy(a,tmp,sizeof a);
    }
    if(ans>6)cout<<-1<<endl;
    else cout<<ans<<endl;
}
signed main(){
    IOS;
    int __;
    cin>>__;
    while(__--)
        solve();
    return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 1236. 递增三元组

//这里填你的代码^^
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define debug(a) cout<<#a<<"="<<a<<endl
#define debug2(a,b) cout<<#a<<"="<<a<<" "<<#b<<"="<<b<<endl
#define debug3(a,b,c) cout<<#a<<"="<<a<<" "<<#b<<"="<<b<<" "<<#c<<"="<<c<<endl
typedef pair<int,int> PII;
const int N=2e5+10;
int n,m;
int a[N],b[N],c[N];
void solve(){
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++)cin>>b[i];
    for(int i=1;i<=n;i++)cin>>c[i];
    sort(a+1,a+1+n);
    sort(b+1,b+1+n);
    sort(c+1,c+1+n);
    int ans=0;
    for(int i=1;i<=n;i++){
        auto idx1=lower_bound(a+1,a+1+n,b[i])-a-1;
        if(b[i]<=a[idx1])continue;
        auto idx2=upper_bound(c+1,c+1+n,b[i])-c;
        if(c[idx2]<=b[i])continue;
        ans+=(idx1)*(n-idx2+1);
        // debug2(idx1,idx2);
        // debug2(b[idx1],c[idx2]);
    }
    cout<<ans;
}
signed main(){
    // int __;std::cin>>__;while(__--)
    solve();return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



#include<bits/stdc++.h>
std::stack<int>s;
int n,q;
const int N=1e5+10;
const int M=22;
int d[N],c[N];//d代表的是直径//c代表的是容量
int l[N],dep[N];
int fa[N][M];
int sum[N][M];
std::vector<int>G[N];
void dfs(int u,int f){
    dep[u]=dep[f]+1;fa[u][0]=f;
    for(auto it:G[u]){
        if(it==f)continue;
        dfs(it,u);
    }
}
void dp(){
    for(int j=1;j<M;j++){
        for(int i=1;i<=n;i++){
            fa[i][j]=fa[fa[i][j-1]][j-1];
            sum[i][j]=sum[fa[i][j-1]][j-1]+sum[i][j-1];
        }
    }
}
int main(){
    std::cin>>n>>q;
    for(int i=1;i<=n;i++){
        std::cin>>d[i]>>c[i];
    }
    memset(sum,0x3f,sizeof sum);
    for(int i=1;i<=n;i++){
        while(!s.empty()&&d[s.top()]<d[i]){
            fa[s.top()][0]=i;
            sum[s.top()][0]=c[i];
            s.pop();
        }
        s.push(i);
    }
    while(!s.empty()){
        fa[s.top()][0]=0;s.pop();
    }
    for(int i=1;i<=n;i++){
        G[i].push_back(l[i]);
    }
    dfs(n+1,0);dp();
    for(int i=1;i<=q;i++){
        int r,v;std::cin>>r>>v;
        if(c[r]>=v){
            std::cout<<r<<std::endl;
            continue;
        }
        v-=c[r];
        for(int i=18;~i;i--){
            if(fa[r][i]!=0&&v>sum[r][i]){
                v-=sum[r][i];
                r=fa[r][i];
            }
        }
        std::cout<<fa[r][0]<<std::endl;
    }
}



#include<bits/stdc++.h>
const int N=2e5+10;
const int M=35;
int n,m;
std::vector<int>G[N];
int dep[N],fa[N][M];
void dfs(int u,int f){
    fa[u][0]=f;dep[u]=dep[f]+1;
    for(auto it:G[u]){
        if(it==f)continue;
        dfs(it,u);
    }
}
void dp(){
    for(int j=1;j<M;j++){
        for(int i=1;i<=n;i++){
            fa[i][j]=fa[fa[i][j-1]][j-1];
        }
    }
}
int lca(int a,int b){
    if(dep[a]<dep[b])std::swap(a,b);
    for(int k=M-1;~k;k--){
        if(dep[fa[a][k]]>=dep[b])a=fa[a][k];//令dep[a]==dep[b]
    }
    if(a==b)return a;//在同一个点
    for(int k=M-1;~k;k--){
        if(fa[a][k]!=fa[b][k]){
            a=fa[a][k];//在未缩到LCA的情况下向上缩
            b=fa[b][k];//知道fa[][0]即为LCA
        }
    }
    return fa[a][0];
}
int main(){
    //try it again.
    std::cin>>n;
    for(int i=1;i<n;i++){
        int a,b;std::cin>>a>>b;
        G[a].push_back(b);
        G[b].push_back(a);
    }
    dfs(1,0);dp();
    std::cin>>n;
    while(n--){
        int a,b;std::cin>>a>>b;
        std::cout<<dep[a]+dep[b]-2*dep[lca(a,b)]+1<<std::endl;
    }
}