解題報告 NOIP2013

2022-09-14 18:12:10 字數 2462 閱讀 7438

思路

我們手模發現,就是 \(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 ...