洛谷八連測 R7

2021-08-10 10:04:30 字數 2800 閱讀 2893

list

題目鏈結

t1 每次spfa(或者bfs),時間複雜度o(spfa*q);

每次先把每乙個查詢的特殊點入隊,距離為0;

spfa或者bfs即可。

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

const

int n=5009;

int head[n],nxt[2*n],to[2*n],tot;

int n,m,q,k,ans;

int dis[n];

bool vis[n];

queue

qu;

void add(int x,int y)

void spfa()}}

}}int main()

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

spfa();

ans=0;

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

if(dis[i]<=k) ans++;

printf("%d\n",ans);

}//cout0;}

t2

離散化+樹狀陣列可以過掉60,時間複雜度o(n^2logn);

100分的做法:

我們在樹狀陣列的陣列再加乙個記錄座標和的值。

對於乙個滿足 i < j,a i > a j 的點對 (i,j),

其會在滿足 1 ≤ l ≤ i,j ≤ r ≤ n 的子區間 [l,r] 內出現。

所以這個點對對答案的貢獻為 i × (n − j + 1)。

還需要高精度!

時間複雜度o(nlogn)

60分**

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

const

int n=1e6+7;

int n,a[n],c[n];

ll ans,sum,b[n];

ll query(int x)

return s;

}void update(int x)

int main()

}

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

//cout0;}

tarjan縮點+二分+拓撲排序+貪心

tarjan縮點,然後處理出縮點後的拓撲序,然後按照拓撲排序倒著來乙個個滿足條件即可。倒著的原因是先滿足兒子節點的需求,因為兒子不夠可以向父親要。

極易被卡常。

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

const

int n=1e6+77;

int n,m,f[n],f[n],a[n],cnt,b[n];

int head[n],nxt[2*n],to[2*n],tot;

int dfn[n],low[n],stack[n],color[n],top,dfs_num,color_num;

ll c[n],cc[n],num[n];

bool vis[n];

void add(int x,int y)

void dfs(int x)//拓撲排序

void dfs(int x)//tarjan縮點

else

if(vis[to[i]]) low[x]=min(low[x],dfn[to[i]]);

}if(low[x]==dfn[x])

top--;

}}bool check(ll x)

else

px=f[px];

}if(cc[p]=need-cc[p])

else return 0;

}if(cc[p]if(need<=cc[p]) continue;

if(!px)

}if(cc[p]return1;}

int main()

for(int i=1;i<=n;i++) scanf("%d",&a[i]);

for(int i=1;i<=n;i++) if(!dfn[i]) dfs(i);

memset(head,0,sizeof(head));

memset(to,0,sizeof(to));

memset(nxt,0,sizeof(nxt));

tot=0;

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

//縮點

num[color[i]]++;

c[color[i]]+=a[i];

}for(int i=1;i<=color_num;i++) if(!f[i]) dfs(i);//拓撲排序

ll l=0,r=2e9+7,mid,ans=l;

while(l<=r)

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

return

0;}

洛谷八連測 R8

題目鏈結 答案是求c1 x 1 ck 1 n 1 ckn x 取得最大值時的x值。數學題。化簡,求單調性。對每一門成績都建一棵樹。每條邊都加一條反向邊。能夠通過正向邊到達的點都是比自己成績低的,反向邊則是比自己高的。最好成績是只有三門成績蒐比自己高時才比自己高。最壞成績是只有三門都比自己低時才比自己...

浴谷八連測R4

題解 第一題水題,直接模擬就行了。include include include using namespace std template inline void read t x char s 100100 int main else if flag printf s s return0 題解 要...

洛谷八連測R7 nzhtl1477 我回來了

68號島有n個商店,有的商店直接有小路連線,小路的長度都為1,格里克告訴了你哪些地方可能有做黃油蛋糕的原料。但是那個人是個坑貨,所以他會告訴你一些商店,然後告訴你距離這些商店距離 k的商店中都是可能有原料的。然後你要把這些可能的商店每個都去一遍,你想知道你要去多少個商店。由於你是勇者,所以有m次詢問...