思路
我們手模發現,就是 \(x+m \times 10^k \space mod \space n\)
然後乙個快速冪就沒了,開long long
#include #include #include #include #include using namespace std;
int n,m,k,x;
long long ksm(long long a,long long b,int p)
return ans;
}int main()
a[maxn],b[maxn];
int lowbit(int x)
bool cmp(point q,point w)
for(int i=1;i<=n;i++)
sort(a+1,a+1+n,cmp);
sort(b+1,b+1+n,cmp);
for(int i=1;i<=n;i++)
rank[a[i].num]=b[i].num;
for(int i=1;i<=n;i++)
cout《思路
最大生成樹 + lca
我們要求的是每一條路徑中最小邊的最大值,這個最大值肯定會加入最大生成樹,所以我們做乙個最大生成樹
然後,對於這棵樹,我們倍增預處理每一條邊到自己的 \(k\) 級祖先的答案,然後我們用倍增 \(lca\) 來合併答案
然後就沒了
#include #include #include #include #include #include using namespace std;
const int maxn=10005;
const int inf=999999999;
struct edge1ed1[50005];
struct edge2ed2[100005];
int cnt,n,m,head[maxn],deep[maxn],f[maxn],fa[maxn][21],w[maxn][21];
bool vis[maxn];
void add_edge(int from, int to, int w)
bool cmp(edge1 x, edge1 y)
int find(int x)
void kruskal()
return ;
}void dfs(int node)
return ;
}int lca(int x, int y)
if(x==y) return ans;
for(int i=20; i>=0; i--)
if(fa[x][i]!=fa[y][i])
ans=min(ans, min(w[x][0], w[y][0]));
return ans;
}int main()
kruskal();
for(int i=1;i<=n;i++)
if(!vis[i])
for(int i=1;i<=20;i++)
for(int j=1;j<=n;j++)
cin>>q;
for(int i=1; i<=q; i++)
else if(pro!=2&&xbfs搜尋加暴力巨噁心卡常
但說實話,正解我不會
#include #include #include #include #include #include #include using namespace std;
const int maxn=35;
inline int read()
while(c>='0'&&c<='9')
return x*f;
}inline void write(int x)
struct node;
int n,m,t;
int a[maxn][maxn];
bool vis[maxn][maxn][maxn][maxn];
int dx=;
int dy=;
int main()
while(t--)
; vis[ex][ey][sx][sy]=true;
q.push_back(now);
while(q.size())
; q.push_back(nt);}}
fx=lx+1,fy=ly+0;
if(fx1||fy>1)
;q.push_back(nt);}}
fx=lx+0,fy=ly-1;
if(fx1||fy>1)
;q.push_back(nt);}}
fx=lx-1,fy=ly+0;
if(fx1||fy>1)
;q.push_back(nt);}}
} if(!flag)
cout<<-1<<'\n';
} return 0;
}
noip2013提高組 積木大賽解題報告
1 積木大賽 block.cpp c pas 題目描述 春春幼兒園舉辦了一年一度的 積木大賽 今年比賽的內容是搭建一座寬度為n的大廈,大廈可以看成由n塊寬度為1的積木組成,第i塊積木的最終高度需要是h i 在搭建開始之前,沒有任何積木 可以看成n塊高度為 0 的積木 接下來每次操作,小朋友們可以選擇...
NOIP2013 火柴排隊
題目 分析 a中第幾大一定對應b中第幾大。ab同時移動相當於a移動,相對位置不變。所以,用c i 表示a i 需要移動到的 位置,求其中的逆序對。因為乙個每移動相鄰兩個元素相當於消除乙個逆序對。include include using namespace std const int tmax 10...
模擬 NOIP 2013 花匠
花匠棟棟種了一排花,每株花都有自己的高度。花兒越長越大,也越來越擠。棟棟決定把這排中的一部分花移走,將剩下的留在原地,使得剩下的花能有空間長大,同時,棟棟希望剩下的花排列得比較別緻。具體而言,棟棟的花的高度可以看成一列整數h 1,h 2,h n。設當一部分花被移走後,剩下的花的高度依次為g 1,g ...