NOI2015 小園丁與老司機

2022-05-20 04:45:59 字數 1955 閱讀 8812

一上午就弄這道題 犯了很多錯誤 比如排序排錯 沒更新啥的。。

大概是把\(y\)從大到小dp \(dp_i\)表示從\(i\)向上或斜向上走最多多少點

\(g_i\)表示假如\(i\)是這一層第乙個到達的點從\(i\)開始走最多多少點 可以在這一層走一遍

同一層內從\(i\)開始到\(j\)離開該層的話會先繞到該層端點再到\(j\)

當然也可以直接從\(i\)離開該層

第二問需要上下界最小流

litble給出了乙個神奇的針對這個圖的上下界最小流方法 太神了

我實現的好麻煩。。

#includeusing namespace std;

#define fp(i,l,r) for(register int (i)=(l);i<=(r);++(i))

#define fd(i,l,r) for(register int (i)=(l);i>=(r);--(i))

#define fe(i,u) for(register int (i)=front[(u)];(i);(i)=e[(i)].next)

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

#define o(x) cerr<<#x<<':'<=10)wr(x/10);

putchar('0'+x%10);

}const int maxn=50020,inf=1e9+1e7;

struct poip[maxn],sta[maxn];

inline bool cmp1(poi a,poi b)

top=0;int l=gp[x],r=gp[x],p1=-1,p2=-1;

while(l>1&&p[l-1].y==p[gp[x]].y)--l;while(r+1<=n&&p[r+1].y==p[gp[x]].y)++r;

fp(i,l,r)sta[++top]=p[i];

fp(i,1,top)if(sta[i].id==x)p1=i;

fp(i,1,top)if(sta[i].id==grm[x])p2=i;

assert(p1!=-1);assert(p2!=-1);

if(p2>p1)

else

output(frm[grm[x]]);

}inline void solve1()

mp.clear();

fp(i,1,n)

mp.clear();

fd(i,n,1)

sort(p+1,p+1+n,cmp2);

for(int l=1,r;l<=n;l=r+1)

p=top;

fd(i,top-1,1)

int x=dp[sta[i].id]+top-i;

if(x>t)t=x,buc.clear(),buc.push_back(sta[i].id);

else if(x==t)buc.push_back(sta[i].id);

} buc.clear();

buc.push_back(sta[top].id);t=dp[sta[top].id]+top-1;

fd(i,top-1,1)

int x=dp[sta[i].id]+i-1;

if(x>t)t=x,buc.clear(),buc.push_back(sta[i].id);

else if(x==t)buc.push_back(sta[i].id);

} fp(i,1,top)if(visf[sta[i].id])

} }s=n+1;t=n+2;ss=n+3;tt=n+4;

fp(i,0,n)if(visg[i]||visf[i])

fp(i,0,n)if(deg[i])

while(bfs())

adde(t,s,inf);

while(bfs())

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

}main()

NOI2015 小園丁與老司機

給出n棵樹,從原點開始,每次可以在左 右 上 左上 45 右上 45 五個方向中選擇乙個,然後一直向這個方向走,直至走到一棵未經過的樹,然後繼續選擇方向,直至5個方向都不存在未經過的樹。現在要經過盡可能多的樹,輸出最多可能經過的樹的數量以及任意一條路徑。現在定義向上 左上 45 右上 45 三個方向...

UOJ132 NOI2015 小園丁與老司機

作者部落格 正解 dp 上下界網路流 解題報告 第一 二問是一起的,dp一遍可以解決。具體而言,f i 記錄到達i的最優值,g i 記錄前驅結點。按y分層,不同層之間直接轉,左上右上的一條直線上的點x y座標的和或者差相等,map儲存最後的值 寫轉入會方便一些 同一層之間有一點麻煩,考慮一定是從乙個...

NOI 2015 壽司晚宴

description 為了慶祝 noi 的成功開幕,主辦方為大家準備了一場壽司晚宴。小 g 和小 w 作為參加 noi 的選手,也被邀請參加了壽司晚宴。在晚宴上,主辦方為大家提供了 n 1 種不同的壽司,編號 1,2,3,n 1,其中第 i 種壽司的美味度為 i 1 即壽司的美味度為從 2 到 n...