牛客網暑期多校訓練賽第二場 I題 (思維)

2021-08-21 15:42:41 字數 889 閱讀 2277

題意:

在n*n的格點上放置汽車,汽車只能放置在一條邊上,汽車要駛到另一條邊。規定兩汽車相撞會損壞或者兩個汽車在同一直線的駛向方向相同是不允許的。並且格點上會有m個障礙物,障礙物是提前放好的。問他最多能擺放多少輛汽車?

思路:經過一些嘗試可以發現n為奇數和偶數的汽車放置都是有規律的。

如圖:

按照這樣的構造規律,可以發現當n為偶數的時候,可放置的汽車為2*n,而n為奇數的時候。可放置的汽車為2*n-1。

接下來我們討論放置障礙物的情況。

我們可以發現奇數和偶數的情況唯一不同的是,奇數中會出現藍色的這種情況導致在這上面的障礙物只會對一行或者一列的一輛車造成影響,而在其他的位置都會造成一行和一列兩輛車的影響。

而藍色的位置是不固定的,根據汽車放置的不同情況,特殊的藍色情況也可以出現在黃色這條路上。

我們可以用兩個陣列分別記錄下來行和列上車輛是否受到了影響。當這個障礙物已經使得該行或者該列影響,就把汽車數量減少,如果汽車出現在了奇數情況的中間十字的位置上,那麼最後要加上這個辦法會導致的多減去的一輛車數量。

**:

#include #include #include #include using namespace std;

int a[100005];

int b[100005];

int main()

if(b[y]==0)

}ans+=f;

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

}return 0;

}

2020牛客多校訓練賽(第二場)補題

比賽入口 題意 有乙個multiset s,一共有三種操作 1.s插入乙個x 2.s刪除乙個x 3.查詢s中是否存在兩個數字,使得這兩個數字能和x組成乙個非退化三角形 思路 顯然,s是有序的,且判斷x是否能和s中兩個數字組成非退化三角形,一共有以下三種情況 1.x是最大邊,判斷 x的最後兩個字 2....

牛客網暑期ACM多校訓練營(第二場)

a run 基礎dp,直接做就行了。dp時候求出來到哪個距離有幾種走法,然後求一下字首和。輸出答案的時候減一下就行了。include include include include include include include include using namespace std define ...

2019牛客暑期多校訓練營(第二場)

題意 題解 c 版本一 include using namespace std typedef long long ll const int mod 1e9 7 ll power ll a,ll b a是底數,b是次冪 return ans ll phi ll n 求尤拉函式值 返回值為多少個與n互...