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次詢問...