2018HUAS ACM暑假比賽5題解

2022-02-10 01:18:17 字數 2493 閱讀 5116

目錄

這是一道帶權並查集問題

因為只有三種種類,我們分別用0,1,2來表示,即0-->1,1-->2,2-->0。

我們需要知道x和y的關係,即需知道x和祖先xx的關係,y和祖先yy的關係,即可得x和y的關係。

①當x的祖先和y的祖先不同時,可知x和y的關係在前面並沒有體現,所以此話一定是真的

②當x的祖先和y的祖先相同時,通過x,y和祖先的關係可知x所在種類和y所在種類的關係,即可判斷話的真假

#include #include using namespace std;

#define ll long long

ll n,k,p,x,y,ans;

ll f[50005],val[50005];

int found(ll x)

int fun(ll d,ll x,ll y)

else

}int main()

if(fun(p-1,x,y))++ans;

}printf("%lld\n",ans);

return 0;

}

此題是乙個思維題,裡面有用到線段樹的知識

因為是從1開始變到p,所以陣列中必然要有p出現。

其中所有的0都要變為非0且小於等於q的數字,我們只需要把0變為左邊相鄰的數字即可,注意第乙個數字為0時的情況

然後記錄所有數字出現的最小和最大位置,即可得到乙個區域,在此區域若出現比其小的數字,則不可能。

#include #include using namespace std;

#define ll long long

const int inf=0x3f3f3f3f;

int n,q,a[200005],st[1000000],g=0,b[200005][2];

void build(int root,int l,int r)

}int query(int root,int l,int r,int s,int e)

int main()

//將所有的0變成非0數字,保證陣列裡要有最大的數字

int l=0;

if(!g)

if(l>n)

void change(int i,int l,int r,int x,double v)

int mid=(l+r)>>1;

if (x<=mid) change(i<<1,l,mid,x,v);

else change((i<<1)+1,mid+1,r,x,v);

max[i]=max(max[i<<1],max[(i<<1)+1]);

val[i]=val[i<<1]+divide((i<<1)+1,mid+1,r,max[i<<1]);

}int main()

return 0;

}

dp+最短路

令f[i]為到第i天的最少成本,那麼顯然有f[i]=min(f[i],f[j]+cost(j+1,i)+k),其中cost(i,j)為i天到j天的最小花費,然後直接最短路搞

#includeusing namespace std;

const int maxn = 205;

vector>e[maxn];

int d[maxn];

int vis[maxn];

int unreach[maxn][maxn];

int f[maxn];

int n,m,k,ee;

int dijkstra(int s,int t)

for(int i = 1;i<=m;i++)

d[i]=9999999;

queueq;

d[1]=0;

q.push(1);

// vis[1]=1;

while(!q.empty())

} }

return d[m]*(t-s+1);

}int main()}}

printf("%d", a[p]);

if (i != n - 1) printf(" ");

else printf("\n");

}return 0;

}

二分一下邊權。然後跑最小生成樹判斷即可。

#include#include#define n 10010

using namespace std;

struct usee[n*3];

int n,ans,cnt,l,r,m,k,x,y,v,w,fa[n];

int find(int x)

bool check(int x)

}if (temp>1;

if (check(mid)) r=mid-1;

else l=mid+1;

} cout<

比賽 2019暑假排位(6)

problems from the 2016 acm icpc asia nha trang regional contest a bcde fghi jkll zy y y z z ylz 直接單調佇列即可 include include include include include inclu...

2018暑假第四題

題目 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。python 示例 1 輸入 121輸出 true示例 2 輸入 121輸出 false解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10輸出 false解釋 ...

2018暑假測試五總結

這次測試狠狠地告訴我,不仔細審題 分析樣例,命運如何將我置之死地。頹到家了。拿到第一題,覺得讀懂題意之後就開始想了。想了一小時左右依舊沒想出正解。心情太浮躁,都不懂沉下心來,把審錯題的接近正解的做法想到底 轉而去想t2。發現資料量很小,隨便弄個傻瓜無腦dp就可以搞定。再打了個t1暴力,發現結果怎麼會...