JZOJ2023年8月11日提高組T4 景點中心

2022-05-05 17:00:22 字數 1440 閱讀 2485

話說寧波市的中小學生在鎮海中學參加計算機程式設計比賽,比賽之餘,他們在鎮海中學的各個景點參觀。鎮海中學共有n個景點,每個景點均有若干學生正在參觀。這n個景點以自然數1至n編號,每兩個景點的編號均不同。每兩個景點之間有且只有一條路徑。選擇哪個景點集中的學生,才能使所有學生走過的路徑之和最小呢?

如果存在多個解,則輸出距離1最近的那個點,可以證明答案唯一

輸入檔案center.in中有若干行:

第一行只有乙個正整數n,表示景點數。

第二行有n個1至1000間的整數,這n個整數間互相以乙個空格分隔。其中第i個整數表示第i個景點處的學生數。

第三行至第n+1行,每行有三個整數i,j,k,表示景點i和景點j之間有一條長尾k的路徑直接連線。其中i<>j,1≤i≤n,1≤j≤n;1≤k≤1000。

輸出檔案center.out中有二行;

第一行只有乙個整數i,表示在第i個景點處集中時,所有學生走過的路徑之和最短。

第二行也只有乙個整數,表示所有學生走過的路徑之和的最小值。

43 2 4 1

1 2 5

3 1 6

2 4 4143

所有的資料均隨機生成,且滿足:

30%的資料,1≤n≤200。

60%的資料,1≤n≤3000。

100%的資料,1≤n≤100000。

給出一棵樹,每個點有一定的人,每條邊有邊權

問乙個最優點使得人走過的總路徑最短和最短路徑

換根\(dp\)模板題

先弄出1號點的路徑

然後換根\(dp\)

方程:\(f[x]=f[now]+val[i]*(size[1]-2*size[now])\)

#include#define inf 99999999999999

using namespace std;

struct node

a[200005];

long long n,i,x,y,z,ans,ansid,s,tot,p[100005],f[100005];

void add(long long x,long long y,long long z)

void dfs(long long now,long long fa,long long dis)

}void dp(long long now,long long fa)

dp(x,now);

}}int main()

ans=inf;

dfs(1,0,0);

dp(1,0);

if (f[1]<=ans)

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

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

return 0;

}

JZOJ2023年8月11日提高組T2 寶石

見上帝動了惻隱之心,天後也想顯示一下慈悲之懷,隨即從口袋中取出一塊魔術方巾,讓身邊的美神維納斯拿到後堂的屏風上去試試,屏風是正方形的,高和寬方向上各劃有m條魚屏風的邊平行的直線,平行直線間的距離為1厘公尺。這2m條直線共有m m個交點,在某些交點上鑲嵌著寶石。如果魔術方巾的邊與屏風的邊平行且魔術方巾...

2023年11月30日leetcode每日一題

leetcode刷題記錄 767.重構字串 思路 分為兩大部分,第一部分判斷字串是否可以重構,第二部分判斷重構字串 第一部分 找出最大出現次數字母的次數,判斷是否超過 n 1 2,若超過則返回空字串,若不超過則可以進行重組織 第二部分 先對出現次數小於等於n 2的字母在奇數下標上進行排序,奇數下標滿...

2023年2月8日 OJ習題

這類題的常規思路是結構體排序,但是本題由於並沒有多種元素,因此用不著結構體,僅僅是陣列排序就可以 include using namespace std int n,m,o int f 110 bool cmp int a,int b intmain return0 先打表,然後直接些就好了 inc...