2019 南京網路賽 B F H

2021-09-27 02:04:54 字數 1724 閱讀 5559

其實這場我爆零了,都是隊友a的題,現在滾過來補題了。。。

可補題:a先欠著

這個題運用了擴充套件尤拉降冪

於是我o(n)的去求每一層的底數和冪數??成功超時。

然後搜題解:

waht???類似減了一下枝就可以了?當時隊友告訴我用什麼快速冪套快速冪????這種題可以快速冪套快速冪??

成功被隊友帶歪,怎麼說呢,自己也菜,隊友也菜,隊友菜的同時還喜歡拿假的思路瞎搞,帶歪我。

#include#define ll long long

using namespace std;

mapeuler;

ll a,b,mod;

int phi(int n)

}if(n>1)

ret=ret/n*(n-1);

euler[now]=ret;

return ret;

}ll mod(ll n,int mod)

ll solve(int l,int r,int mod)

int main()

if(b==1)

ll ans=solve(1,b,mod)%mod;

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

}}

線段樹從小到大維護一下就可以了。

#includeusing namespace std;

const int n=1e5+10;

int mx[4*n],sz[n],a[n],vis[n];

int n,k;

void up(int id,int l,int r,int pos,int val)

int mid=l+r>>1;

if(pos<=mid) up(id<<1,l,mid,pos,val);

else up(id<<1|1,mid+1,r,pos,val);

mx[id]=max(mx[id<<1],mx[id<<1|1]);

}int qu(int id,int l,int r,int ql,int qr)

int main()

//sz[0]=1;

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

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

puts("");}}

答案就是floyd的最短路徑取負值

接著將新加入的邊加進去再跑一次floyd,依次類推

#include#define rep(i,a,b) for(int i=a;i<=(b);++i)

#define mem(a,x) memset(a,x,sizeof(a))

#define pb push_back

using namespace std;

typedef long long ll;

const int n=1e3+10;

ll dis[n][n];

int n,m;

void floyd()

rep(i,1,n) dis[i][i]=0;

for(int i=1;i<=6;++i)}}

2019南京網路賽 B robots

給乙個 dag dagda g,乙個機械人從 1 11 走到 n nn 每一步會等概率走向某乙個後繼或不動,每一步 包括不動 的花費是當前的步數。求從起點走到終點的期望花費期望。期望 dp。f u f u f u 表示從 u uu 出發的期望步數,g u g u g u 表示從 u uu 出發的期望...

2019 南京網路賽 Robots

1.做這個題目之前,首先可以做一下綠豆蛙的歸宿 這道題目。二者幾乎一樣。其實二者的核心思想都是倒著推期望,為什麼會倒著推?其實也有很多種解釋,有句話說得很好,其實就是詮釋了為什麼期望要倒著dp。終點是概率的結束,是期望的開始。2.綠豆蛙的歸宿 解釋一下就是當前節點的值由所有和它相連的節點的值貢獻而來...

Holy Grail 2019南京網路賽

給定乙個有向無負環圖,然後告訴你要依次加6條邊,要保證每次加邊後無負環,求依次加邊時保證當前邊最小。由於題目保證有解,所以s t的邊時一定有t到s的通路,我們找到t到s的最短路,那麼久可以知道s t這條新加邊的最小值 include define maxl 510 using namespace s...