(補題心路)福州大學第十四屆程式設計競賽 重現賽

2021-09-30 13:54:12 字數 3102 閱讀 1244

個人感覺是最短路大冒險……

(不知道為啥中暑了腦子反而活躍了起來,就是**實現非常gg)

fzu 2253 salty fish

漁夫翻鹹魚,會把乙個區間裡的1翻成0 0翻成1

區間長度至少為1

問最多有幾個1

統計原先的鹹魚數量

考慮每翻一次,如果本來是1 會使鹹魚數量-1,如果本來是0,會使鹹魚數量+1

所以把陣列更改為-1 +1

即陣列變為翻該魚會對總魚數的影響

然後求乙個最大連續子串行和

最大值(翻身影響)+原來的魚數=最大魚數

但是因為至少要翻一條魚

所以特殊情況就是明明本來都是翻身的鹹魚,還一定要-1

#include 

#include

#include

#include

using

namespace

std;

const

int maxn=100010;

#define eps 1e-8

int s[maxn],a[maxn];

int main()

maxx=0;

for (i=1;i<=cnt;i++)

if (maxx) printf("%d\n",ans+maxx); else

printf("%d\n",ans-1);

}return

0;}

fzu 2254 英語考試

比賽的時候……用了各種姿勢

最短路 拓撲 wa的死去活來

……後來發現最短路能ac 但是我忘記初始化了……

最短路能ac,但總感覺怪怪的

每個單詞一定存在的一種花費是len

或者從已經背誦的單詞轉移過來,需要的花費是hamming(si, t) * w

用最短路的思路去更新,先記錄各個單詞之間轉移需要的花費

每次找需要花費最少的單詞進行背誦,然後更新未被背誦的單詞

#include 

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn=1010;

const

int inf=0x3f3f3f3f;

int len;

int n,mar[maxn][maxn],fin[maxn],dis[maxn];

int ind[maxn],vis[maxn];

vector

g[maxn];

void dijkstr(int source)

fin[source]=1;

dis[source]=0;

for (i=2;i<=n;i++)

memset(mar,0,sizeof(mar));

minn=len; mini=1;

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

return

0;}

過河

fzu 2256 迷宮

一棵樹

n個點

接下來n-1行,第i行包含兩個數字pi和wi,表示i+1號房間的上級房間為pi,道路長度為wi。

子節點和父節點之間的路是wi

也就是說任意兩點光靠走路其實都是相通的

每個房間擁有乙個時空傳送門,第i個房間的傳送門可以花費di單位的時間傳送到它的任意乙個下級房間中(如果x是y的下級房間,並且y是z的下級房間,那麼x也是z的下級房間)

這裡意味著父節點都有傳送陣,可以傳送到任意子節點。

所以考慮把利用dfs把子節點都傳遞上來,建邊,花費d[i]

跑個最短路……輸出

比賽的時候瘋狂mle是因為模板裡有個判斷負環的陣列沒刪qaq(這樣也行嘛)

#include 

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn=100010;

const

int inf=0x3f3f3f3f;

int dis[maxn],inq[maxn];

int n,d[maxn];

struct points

;vector

g[maxn];

vector

son[maxn];

void add_edge(int u,int v,int w)

void spfa(int source)}}

} return;

}void dfs(int now)

int main()

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

dfs(1);

spfa(1);

for (int i=1;i<=n;i++) printf("%d ",dis[i]);

printf("\n");

} return

0;}

saya的小熊餅乾

dalao說是原題。。。

fzu 2258 獎勵

不能用除法……判斷總分》=240且單科都》=60就好了。圖

card game

浪裡個浪

多起點多終點最短路

把所有可能的起點和零點建邊,路程為0

把所有可能的終點和n+1點建邊,路程為0

跑一遍從0點開始的最短路,輸出到n+1這個點的最短路程

和hdu 2066類似

不過因為hdu那題資料小,……我跑了s遍最短路……emmmmm

哈爾濱工程大學第十四屆程式設計競賽 (補題

f 小帆帆走迷宮 簡單dp 一道其實不是很難的四維dp 但是在考場上因為只記錄轉彎次數沒記錄方向沒寫出來 看題發現 其實這道題就是二維數塔 轉向費的dp 所以我們用dp n n k m 來記錄狀態 前兩維n n 代表當前座標 k記錄轉彎幾次 m記錄方向 當m 0 記沒改變方向 當m 1 為改變了方向...

浙江財經大學第十四屆程式設計競賽命題感想

題目和題解點這裡 24號,學校一年一度的程式設計競賽結束了,這一次是我和兩個學弟命題的,還有一些人進行了題面書寫 review,還有一部分人幫忙進行了驗題。所以我想記錄一下這次命題的詳細過程,以後可以成為一次美好的回憶。大概從元旦前夕開始,逐步有了一些 idea,有些很 easy,有些很難 估計是我...

長春理工大學第十四屆程式設計競賽(重現賽)B

b bowling game cust的隊員打完省賽後,小r帶著大家去打保齡球。保齡球是一項難度非常高的遊戲,然而這根本難不住校隊成員,他們個個都很厲害 炸和 一發10個瓶都倒。尤其是小r,每次都能閉著眼睛一次扔倒10個瓶。他們當中也有乙個並不那麼厲害的下水道玩家,每次都能把球丟進下水道裡,導致乙個...