五校聯考3day2 C

2021-09-10 07:56:17 字數 1846 閱讀 3528

這題dp,想明白了就可以了。

這就像個座標系一樣(好像本來就是。。。)

而在其上面,有很多個點。

咳咳,有點醜。

然後呢,我們就按照x座標排個序,y也順便排一下(第二關鍵字)

這樣子,在我們dp的時候,

或者說對於i,我們可以滿足a[i].x<=a[i+1…n].x

所以,我們就可以不記錄對於i點射向左邊的了。

而我們要記錄的,是它射向右邊的最上面的點(j),射向右邊的最下面的點(k),射向上面的最下面的點(l),射向下面的最上面的點(o)。

要轉移的話,我們便列舉當前點所射的方向。

我這裡設向上為0,向左為1,向下為2,向右為3。

然後判斷一下它是否合法即可,記得更新一下j,k,l,o。(詳細見標)

上標:

#include

#include

#include

#define ll long long

#define mo 998244353

using namespace std;

struct nodea[55]

;int n,b[55]

,f[2][

55][55

][55]

[55],x=

1,las=

0,t,tt;

bool bz[55]

[4];

ll ans=0;

inline

intread()

intcmp

(node x,node y)

intmain()

else

if(a[i]

.y==a[j]

.y) f[0]

[0][

0][0

][0]

=1;for

(int i=

1;i<=n;i++

)// i->1if(

!bz[i][1

]&&(a[i]

.y.y || l==0)

&&(a[i]

.y>a[o]

.y || o==0)

)// i->2if(

!bz[i][2

]&&(a[i]

.y.y || k==0)

)// i->3if(

!bz[i][3

])} las=x,x^=1

;for

(int j=

0;j)for

(int k=

0;k)for

(int l=

0;l)for

(int o=

0;o) f[x]

[j][k]

[l][o]=0

;}for(

int j=

0;j<=n;j++

)for

(int k=

0;k<=n;k++

)for

(int l=

0;l<=n;l++

)for

(int o=

0;o<=n;o++

) ans+

=f[las]

[j][k]

[l][o]

;printf

("%lld\n"

,ans%mo)

;return0;

}

五校聯考3day2 C

description 在遠古的yl國大地上,有n個祭壇,每個祭壇上四個方向寫有 艄 毜 鼛 甌 四個大字,其實這在yl國古代分別是 東 南 西 北 的意思。yl國每年都要舉行祈福消災的祭祀活動,這個時候,每個祭壇都要在艄毜鼛甌四個方向中選乙個方向,祭壇將向這個方向發出一道 的光線,如果兩個祭壇發出...

五校聯考3day2 C

目錄 description input output sample input sample output data constraint 題解 在遠古的yl國大地上,有n個祭壇,每個祭壇上四個方向寫有 艄 毜 鼛 甌 四個大字,其實這在yl國古代分別是 東 南 西 北 的意思。yl國每年都要舉行...

五校聯考3day2 A

這題考場考慮不太全 但相比於60,其它90分的人,還是很全的 long long我是開了的,然後後面的特判我也是加了的,可是竟然打錯了?其實這題不需要打的像我這樣麻煩 設a i 表示i點還需連線的邊數 ans表示sigma a i max表示max a i 如果max ans 2,就說明全部連項那個...