周潤達 NOIP 模擬題 周任飛 題解

2021-08-08 21:37:57 字數 2664 閱讀 1648

暴力深搜。不解釋。

**:

#include

#include

#include

#define f(x,y,z) for (int (x) = (y) ; x <= (z) ; x ++ )

using

namespace

std;

typedef

long

long ll;

const ll mod = 1000000007;

const ll size = 100;

ll ans = 0;

ll a[size],b[size],c[size],d[size];

ll n;

ll dfs(ll nn,ll oi,ll whk)

if (oi - b[nn] > 0 ) dfs(nn+1 , oi-b[nn] , whk+a[nn]);

else dfs(nn+1, 0 ,whk+a[nn]);//學文化課

if (whk - d[nn] > 0 ) dfs(nn+1 , oi+c[nn] , whk-d[nn]);

else dfs(nn+1 , oi+c[nn] ,0 );//頹oi

}int main(void)

這裡有乙個很好的結論:因為是樹形的路徑,所以有乙個區域內的聯通塊個數等於塊內總的黑格仔數減去相鄰黑色塊的對數。原因是一開始有黑塊個數

k 個聯通塊,每有一對就相當於連了一條邊,而連一條邊就少乙個聯通塊(因為是樹形結構),所以可證其聯通塊個數為k−

n對的個

數。然後字首和統計,注意統計邊的時候可以把值給其上面的或左邊的,注意查詢的範圍。預處理複雜度o(

n2) ,查詢複雜度o(

1)。

**:

#include

#include

#include

#define f(x,y,z) for (int (x) = (y) ; x <= (z) ; x ++ )

using namespace std;

typedef int ll;

const ll mod = 1000000007;

const ll size = 2010;

ll dop[size][size],l[size][size],up[size][size];

ll mat[size][size],tmp[size][size];

ll n,m,q;

char smat[size];

int main(void)

for (ll i=1;i<=n;i++)

for (ll j=1;j<=m;j++)

dop[i][j] = dop[i-1][j] + dop[i][j-1] - dop[i-1][j-1] + mat[i][j];

for (ll i=1;i<=n;i++)

for (ll j=1;j<=m;j++)

for (ll i=1;i<=n;i++)

for (ll j=1;j<=m;j++)

if (mat[i][j] == 1 && mat[i][j+1]==1) l[i][j] = l[i-1][j] + l[i][j-1] -l[i-1][j-1] + 1; else

l[i][j] = l[i-1][j] + l[i][j-1] - l[i-1][j-1];

while (q--)

return 0;

}

如果乙個點被

n 條線段所過,那麼其鬼畜值為n(

n−1)

/2。所以實際上就是統計逆序對,因為如果有n條線段經過,就有n(

n−1)

/2個逆序對,所以與原來的公式一樣。但是這題又卡空間,所以我們把一條一條的維護,也就是從一開始到其最接近mo

d 為一條,然後下乙個為另一條的開始。計算時只有條之間有逆序對,然後推一推公式就完了。複雜度o(

n2鏈的

個數)=

o(能過

) 。

**:

#include

#include

#include

#include

#define f(x,y,z) for (int (x) = (y) ; x <= (z) ; x ++

#define ni line[i].num

#define nj line[j].num

using

namespace

std;

typedef

long

long ll;

ll mod,n,begin,a,ans=0;

const ll mod = 1000000007;

const ll size=100005;

struct wtf

} line[size];ll cnt=0;

int main(void)

else

}for (ll i = 0;ifor (ll j = i+1 ; j<=cnt ; j++)

ans+=line[i] * line [j];

printf("%lld",ans);

return

0;}

這套題大多數為思路題,所以還是有意義的。

NOIP模擬題 連通

給定乙個無向圖,請編寫乙個程式實現以下兩種操作 1 d x y,從原圖中刪除連線x和y頂點的邊。2 q x y,詢問x和y頂點是否連通。這也是連通問題,考慮用並查集解決。但是這是刪除的問題耶,怎麼辦?考慮將刪除變為連通,能不能將所有操作給反過來,從最後乙個操作開始處理。當然是可以的。include ...

Noip模擬題 山峰

description在n m的棋盤上不重複的填1到n m 如果乙個數字比周圍的八個數字大,那麼他就是乙個山峰。現在告訴你所有山峰的位置,問你填數的方案數mod 12345678 input 輸入第一行兩個數字 n m意義如題目描述。接下來n 行,每行 m個字元,表示非山峰,x 表示山峰。1 n 4...

NOIP模擬題 訂餐

題目描述 這個週末,joe 一如既往的拿出了外賣的點餐單。選單上從上到下列著 n 個菜,每個菜 joe 會列出乙個美味值。joe 這次希望從選單上連續地點 k 個菜,並且美 味值之和最大。但在計算美味值之和時,joe 有自己的一套計算方法 由於他會按照順序享受這 k 個菜,並且越吃越後面的菜他就越享...