問題 G 走方格

2021-09-28 21:37:29 字數 878 閱讀 2632

第二天叫醒我的不是鬧鐘,是夢想!

**題目描述** 給你一條直線上的n個方格,每個方格踩下去有乙個權值,小a踩方格的路線為1-3-5-7-9....小b踩方格的路線為2-4-6-8-10,現在你可以提前去掉乙個方格,小a踩方格的路線仍為1-3-5-7-9....小b踩方格的路線仍為2-4-6-8-10,現在問有多少種去掉方格的方案使得小a和小b獲得的權值和相同。 **輸入** 第一行乙個正整數n。 第二行n個數表示從前到後每個方格的權值。 n<=200000,0<=權值<=10000。 **輸出** 乙個數表示方案數。 **樣例輸入 copy** 7 5 5 4 5 5 5 6 **樣例輸出 copy** 2 **提示** 對於8%的資料,n<=10; 對於40%的資料,n<=2000; 對於100%的資料,n<=200000;

暴力列舉每個點。前提是我們必須處理奇數字置的字首和和偶數字置的字首和。然後在反著求一邊字首和。因為這樣為了更好的計算。

假入刪去i這個點,那麼i-1之前的奇數字置的字首和是不變的,後面的奇偶會發生改變。我們要根據i是奇數還是偶數,來判斷i+1的性質,寫出他們的字首和。所以這是乙個關鍵的地方。還是看**,正著和反著求字首和只是為了更好的計算。

#include.h>

using namespace std;

const int n

=2e5+10

;int dl[n]

,dr[n]

,el[n]

,er[n]

,a[n];

int main()

for(int i=n;i>=

1;i--

) int sum=0;

for(int i=

1;i<=n;i++

) cout<}

華為OJ(走方格)

描述 請編寫乙個函式 允許增加子函式 計算n x m的棋盤格仔 n為橫向的格仔數,m為豎向的格仔數 沿著各自邊緣線從左上角走到右下角,總共有多少種走法,要求不能走回頭路,即 只能往右和往下走,不能往左和往上走。知識點字串,迴圈,函式,指標,列舉,位運算,結構體,聯合體,檔案操作,遞迴 執行時間限制 ...

方格走法數目

請編寫乙個函式 允許增加子函式 計算n x m的棋盤格仔 n為橫向的格仔數,m為豎向的格仔數 沿著各自邊緣線從左上角走到右下角,總共有多少種走法,要求不能走回頭路,即 只能往右和往下走,不能往左和往上走。輸入兩個正整數 返回結果 方法一 include include using namespace...

機械人走方格

一 有乙個xxy的網格,乙個機械人只能走格點且只能向右或向下走,要從左上角走到右下角。請設計乙個演算法,計算機械人有多少種走法。給定兩個正整數int x,int y,請返回機械人的走法數目。保證x y小於等於12。思路 共需走x y步,其中有x步向又走,y步向左走,即從x y步中選出x步的種類數,即...