欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

題解 | #Jujubesister#

Jujubesister

https://ac.nowcoder.com/acm/contest/57359/A

2023??投嘈S?xùn)練第五場(chǎng)銅銀牌題解

A

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e5+10,d=700;
int n,m,a[N],bl[N],ans[N],p[N],c[N],s[N],tr[N],t;
struct node{int l,r,id;}q[N];
bool cmp(node a,node b){
    if(bl[a.l]!=bl[b.l])return bl[a.l]<bl[b.l];
    if(bl[a.l]&1)return a.r<b.r;
    else return a.r>b.r;
}

void add(int x){for(int i=x;i<=n;i+=i&-i)tr[i]+=1;}
int sum(int x){int a=0;while(x)a+=tr[x],x-=x&-x;return a;}
void addr(int x){int v=a[x];t+=p[x]*c[v]-s[v],c[v]++,s[v]+=p[x];}
void addl(int x){int v=a[x];t+=s[v]-p[x]*c[v],c[v]++,s[v]+=p[x];}
void delr(int x){int v=a[x];c[v]--,s[v]-=p[x],t-=p[x]*c[v]-s[v];}
void dell(int x){int v=a[x];c[v]--,s[v]-=p[x],t-=s[v]-p[x]*c[v];}
signed main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        add(a[i]);
        bl[i]=i/700;
        p[i]=sum(a[i]-1);
    }
    for(int i=1;i<=m;i++){
        cin>>q[i].l>>q[i].r;
        q[i].id=i;
    }
    sort(q+1,q+1+m,cmp);
    int l=1,r=0;
    for(int i=1;i<=m;i++){
        int ql=q[i].l;
        int qr=q[i].r;
        int id=q[i].id;
        while(r<qr)addr(++r);
        while(l>ql)addl(--l);
        while(r>qr)delr(r--);
        while(l<ql)dell(l++);
        ans[id]=t;
    }
    for(int i=1;i<=m;i++)cout<<ans[i]<<'\n';
}

B

對(duì)于一個(gè)長度為n的環(huán),最小逆序?qū)閚-1 在序列中,刪掉一些點(diǎn),如果只選x個(gè)的話,剩下的len-x個(gè)也會(huì)對(duì)逆序?qū)ψ龀鲐暙I(xiàn),所以總貢獻(xiàn)為n-1+n-x

#include<bits/stdc++.h>
using namespace std;

const int N=1e3+10;
int n,k,a[N];
signed main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++)cin>>a[i];
    int ans=1e9;
    for(int i=1;i<=n;i++){
        priority_queue<int>q;
        int sum=0,x=0;
        for(int j=i;j<=n;j++){
            if(a[j]>=0)sum+=a[j],x++;
            else q.push(a[j]);
            if(sum>=k){
                while(q.size()&&sum+q.top()>=k)sum+=q.top(),q.pop(),x++;
                if(x)ans=min(ans,j-i+ j-i+1-x);
            }
        }
    }
    if(ans==1e9)ans=-1;
    cout<<ans;
}

C

估計(jì)是數(shù)據(jù)太弱了,過了太多人 下面這個(gè)樣例要輸出6,絕大多數(shù)人的答案都是7是錯(cuò)的題解也是錯(cuò)的

7
0 1 0 1 1 1 1
0 0 1 1 1 1 1
1 0 0 1 1 1 1
0 0 0 0 1 1 1
0 0 0 0 0 1 0
0 0 0 0 0 0 1
0 0 0 0 1 0 0

把一組匹配i,j+n 視為連邊ij ,那么這張圖存在完美匹配即為可以將其所有點(diǎn)劃分進(jìn)若干回路 中。根據(jù)競(jìng)賽圖的性質(zhì),其一定存在一條哈密頓路徑,所以顯然最大匹配至少為n-1 。再根據(jù)競(jìng)賽圖 的性質(zhì),每個(gè)強(qiáng)連通分量必然存在一條哈密頓回路,所以答案為 等價(jià)于圖中所有強(qiáng)連通分量大小均大 于等于2 。

所有的強(qiáng)連通分量大小至少為2則輸出n,否則輸出n-1

我們可以這樣理解,這道題把二分圖最大匹配和競(jìng)賽圖的性質(zhì)結(jié)合在一起 對(duì)于二分圖的一個(gè)個(gè)匹配連通塊,它其實(shí)是一個(gè)哈密頓回路,那么我們對(duì)ij連邊,tarjan縮點(diǎn),只要強(qiáng)連通塊的sz>=2說明這是一個(gè)哈密頓回路

#include<bits/stdc++.h>
using namespace std;
const int N=3030;
int n,dfn[N],sz[N],low[N],o,scc_cnt,stk[N],id[N],top;
vector<int>g[N];
void tarjan(int u){
    dfn[u]=low[u]=++o;
    stk[++top]=u;
    for(auto j:g[u]){
        if(!dfn[j])tarjan(j),low[u]=min(low[u],low[j]);
        else if(!id[j])low[u]=min(low[u],dfn[j]);//min( low[j]
        
    }
    if(dfn[u]==low[u]){
        ++scc_cnt;
        int y;
        do{
            y=stk[top--];
            id[y]=scc_cnt;
            sz[scc_cnt]++;
        }while(y!=u);
    }
}
signed main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            int x;
            cin>>x;
            if(x)g[i].push_back(j);
        }
    }
    for(int i=1;i<=n;i++){
        if(!dfn[i])tarjan(i);
    }
    for(int i=1;i<=scc_cnt;i++){
        if(sz[i]<2){
            cout<<n-1;
            return 0;
        }
    }
    cout<<n;
}

競(jìng)賽圖相關(guān)技巧的學(xué)習(xí) 對(duì)于一個(gè)競(jìng)賽圖,一定有哈密頓通路

對(duì)于一個(gè)強(qiáng)連通競(jìng)賽圖,一定有哈密頓回路

競(jìng)賽圖縮點(diǎn)后肯定是一條鏈 有環(huán)一定是三元環(huán)

E

//對(duì)每一個(gè)區(qū)間交換最前面的r就好了
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int n,m,p[N],f[N],ne[N],ans[N],A[N];
struct node{
    int l,r,w;
}a[N];
bool cmp(node a,node b){
    int la=a.r-a.l;
    int lb=b.r-b.l;
    return la<lb;
}
signed main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++)p[i]=i,ne[i]=i,A[i]=i;
    for(int i=0;i<m;i++)cin>>a[i].l>>a[i].r>>a[i].w;
    sort(a,a+m,cmp);
    for(int i=0;i<m;i++){
        int l=a[i].l;
        int r=a[i].r;
        int w=a[i].w;
        if(l==r){
            if(w==1){cout<<-1;return 0;}
        }
        int ji=0;
        for(int x=l;x<=r;x++)ji+=f[x];
        if(w!=ji%2){
            swap(p[ne[l]],p[ne[l]+1]);
            
            f[l]++;
        }
        ne[l]=r;
    }
    for(int i=1;i<=n;i++)ans[p[i]]=i;
    
    for(int i=1;i<=n;i++)cout<<ans[i]<<" ";
}

I

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10,mod=998244353;
int n,a[N],s[N],pre[N],suf[N],f[2][31];
signed main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n;
    //處理前綴和,j=(0~i-1)
    
    memset(f,0,sizeof f);
    for(int j=0;j<=30;j++)f[0][j]=1;
    int sum=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        sum^=a[i];
        pre[i]=pre[i-1];
        for(int j=0;j<=30;j++){
            int x=sum>>j&1;
            pre[i]+=(1<<j)*f[x^1][j];
            pre[i]%=mod;
        }
        for(int j=0;j<=30;j++)f[sum>>j&1][j]++;
    }
    
    //處理后綴和 j=(i+1,n)
    memset(f,0,sizeof f);
    for(int j=0;j<=30;j++)f[0][j]=1;
    for(int i=n;i>=1;i--){
        s[i]=s[i+1]^a[i];
        suf[i]=suf[i+1];
        for(int j=0;j<=30;j++){
            int x=s[i]>>j&1;
            suf[i]+=(1<<j)*(f[x^1][j]);
            suf[i]%=mod;
        }
        for(int j=0;j<=30;j++)f[s[i]>>j&1][j]++;
    }
    //計(jì)算總的,j=i+1~n
    memset(f,0,sizeof f);
    for(int j=0;j<=30;j++)f[0][j]=suf[n+1];//其實(shí)也就是0
    int ans=0;
    for(int i=n;i>=1;i--){
        int x;
        for(int j=0;j<=30;j++){
            x=s[i]>>j&1;
            ans+=pre[i-1]*f[x^1][j]%mod*(1<<j)%mod;
            ans%=mod;
        }
        for(int j=0;j<=30;j++){
            x=s[i]>>j&1;
            f[x][j]+=suf[i];
            f[x][j]%=mod;
        }
    }
    cout<<ans;
    
}

異或運(yùn)算技巧知乎傳送門

也可以直接看下面兩張圖 alt

alt

全部評(píng)論
前面還能打一兩百名,最近真的是有點(diǎn)疲態(tài)有點(diǎn)累了,很多學(xué)了的知識(shí)點(diǎn)都是因?yàn)閷?shí)力不夠檔次不夠 用不上
1 回復(fù) 分享
發(fā)布于 2023-08-01 11:00 北京
Orz 太需要了
1 回復(fù) 分享
發(fā)布于 2023-08-01 10:54 河南
請(qǐng)問B題為什么可以不反悔呢???
點(diǎn)贊 回復(fù) 分享
發(fā)布于 2023-08-03 22:21 安徽
對(duì)于A題,cmp函數(shù)該如何理解
點(diǎn)贊 回復(fù) 分享
發(fā)布于 2023-08-02 10:13 江西
想問下關(guān)于B題,如果只有一個(gè)優(yōu)先隊(duì)列,無法保證刪掉的數(shù)一定是區(qū)間 [i,j] 中最小的一些數(shù)。在這樣的情況下,能否得到正確的解
點(diǎn)贊 回復(fù) 分享
發(fā)布于 2023-08-01 15:31 浙江
我懂了 把2n 個(gè)點(diǎn)轉(zhuǎn)化成n 個(gè)點(diǎn)了
點(diǎn)贊 回復(fù) 分享
發(fā)布于 2023-08-01 11:09 河南
orz
點(diǎn)贊 回復(fù) 分享
發(fā)布于 2023-08-01 11:09 河南
還是想問一下有2*n 個(gè)頂點(diǎn)的二分圖 (n-1)*n/2 條邊的二分圖如何轉(zhuǎn)化成競(jìng)賽圖的 大佬能不能細(xì)說一下 Orz
點(diǎn)贊 回復(fù) 分享
發(fā)布于 2023-08-01 11:06 河南

相關(guān)推薦

ALEX_BLX:雖然說聊天記錄不可信,不過這個(gè)趨勢(shì)確實(shí)如此但我覺得也要想到一點(diǎn)就是卷后端的人里真正有“料”的人又有多少,我說的這個(gè)料都不是說一定要到大佬那種級(jí)別,而是就一個(gè)正常的水平。即使是現(xiàn)在也有很多人是跟風(fēng)轉(zhuǎn)碼的,2-3個(gè)月速成后端技術(shù)棧的人數(shù)不勝數(shù),但今時(shí)不同往日沒可能靠速成進(jìn)大廠了。這種情況就跟考研一樣,你能上考場(chǎng)就已經(jīng)打敗一半的人了
點(diǎn)贊 評(píng)論 收藏
分享
睡姿決定發(fā)型丫:本碩末9也是0offer,簡(jiǎn)歷掛了挺多,只有淘天 美團(tuán) 中興給了面試機(jī)會(huì),淘天二面掛,美團(tuán)一面kpi面,中興一面感覺也大概率kpi(雖然國企,但一面0技術(shù)純聊天有點(diǎn)離譜吧)
點(diǎn)贊 評(píng)論 收藏
分享
評(píng)論
9
收藏
分享

創(chuàng)作者周榜

更多
牛客網(wǎng)
??推髽I(yè)服務(wù)