NOIP2018普及組複賽解析

2021-09-02 02:21:50 字數 3849 閱讀 1572

輸入乙個字串,求字串除了空格的字元個數

這種考你會不會程式設計的題不會?

#include

#include

#include

using

namespace std;

int ans;

string c;

intmain()

乙個長度為n序列,被中間點m分成兩半,m左邊和m右邊。

左邊戰鬥力為

∑ i=

1m−1

(m−i

)∗ai

\sum_^(m-i)*a_i

i=1∑m−

1​(m

−i)∗

ai​∑i=

m+1n

(i−m

)∗ai

\sum_^(i-m)*a_i

i=m+1∑

n​(i

−m)∗

ai​找到乙個數值加s2s2

s2,使兩邊的戰鬥力之差最小

先處理好兩邊戰鬥力

暴力列舉位置。注意要用longlong

#include

#include

#define n 100010

#define lls long long

using

namespace std;

lls n,c[n]

,m,p1,s1,s2,ans1,ans2,mins,mark;

intmain()

}for

(lls i=m+

1;i<=n;i++)}

if((mins==

abs(ans1-ans2)

&&mark||mins<

abs(ans1-ans2)

)printf

("%lld"

,mark)

;else

printf

("%lld"

,m);

}

n個人,有不同的到達時間。一輛車,來回一次要mmi

nm\ \ min

mmin

。安排乙個來回時間,使所有人等待時間之和最小。

我們可以發現m很小可是t卻很大。所有我們不一定要從t入手。因為乙個人會影響到他的只有之前的m−1

mi

nm-1\ \ min

m−1min

。用fi,j

f_fi

,j​表示第i個人等了j的等待時間總數。然後我們列舉i和列舉上一班車的最後乙個人j。之後列舉那個人等了多久k。我們就可以計算出這個人上車最少等待時間

t j+

k+m−

ti

t_j+k+m-t_i

tj​+k+

m−ti

​然後我們可以更新fi,

wf_

fi,w​fi,

w=mi

nf_=min\,f_+s_+(i-j)*w\}

fi,w​=

min其中用si,

js_

si,j

​表示i到j的人都等第j個人上車需要的時間

#include

#include

#include

#define n 510

#define m 210

using

namespace std;

int n,m,t[n]

,s[n]

[n],f[n]

[m],ans;

intmain()

for(

int i=

2;i<=n;i++

)//dp

for(

int j=

0;j)for

(int k=

0;k<=m;k++

) ans=

2e9;

for(

int i=

0;i<=m;i++

) ans=

min(ans,f[n]

[i])

;printf

("%d\n"

,ans)

;}

一棵n個點的二叉樹,每個點有不同的權值。一棵樹對稱就是整棵樹的左右子節點互換之和長的和之前一樣。求這棵樹上最大的一顆對稱二叉樹。

對於每個點我們給他兩個特徵值

z 1i

=lso

ni∗2

+rso

ni+w

i∗

4z1_i=lson_i*2+rson_i+w_i*4

z1i​=l

soni

​∗2+

rson

i​+w

i​∗4

z 2i

=lso

ni+r

soni

∗2+w

i∗

4z2_i=lson_i+rson_i*2+w_i*4

z2i​=l

soni

​+rs

oni​

∗2+w

i​∗4

lson:這個點有沒有左子節點

rson:這個點有沒有右子節點

然後先左後右的跑一邊,記錄跑到的點的z1和這顆子樹包含的範圍。

再先右後左的跑一邊,記錄跑到的點的z2和這顆子樹包含的範圍。

之後對於每個節點用字串hash判斷一下z1對於範圍是否和z2對應範圍相等,如果相等那麼這棵子樹就是一顆對稱二叉樹。

時間負責度:o(n

)o(n)

o(n)

#include

#include

#define n 1000010

#define p 10007

#define ull unsigned long long

using

namespace std;

int sz[n]

,a1[n]

,b1[n]

,e1[n]

,a2[n]

,b2[n]

,e2[n]

,z[n]

,f[n]

;int maxs,n,tot,ls[n]

,rs[n]

,w[n]

;ull hash1[n]

,hash2[n]

,pows[n]

;void

read

(int

&x)void

dfs1

(int x)

void

dfs2

(int x)

ull hash1z

(int l,

int r)

ull hash2z

(int l,

int r)

bool

check

(int x)

intmain()

dfs1(1

);//正搜

tot=0;

dfs2(1

);//反搜

pows[0]

=1;for

(int i=

1;i<=n;i++

)//字串雜湊

for(

int i=

1;i<=n;i++

)//列舉節點if(

check

(i))

//判斷相等

maxs=

max(maxs,sz[i]);

printf

("%d"

,maxs)

;}

NOIP2018普及組複賽試題第4題解析

第4題 對稱二叉樹 題目描述 一棵有點權的有根樹如果滿足以下條件,則被軒軒稱為對稱二叉樹 二叉樹 將這棵樹所有節點的左右子樹交換,新樹和原樹對應位置的結構相同且點權相等。下圖中節點內的數字為權值,節點外的 id表示節點編號。現在給出一棵二叉樹,希望你找出它的一棵子樹,該子樹為對稱二叉樹,且節點數 最...

NOIP2018普及組 參賽總結

發現就我只打了這麼一點字,所以再重新發一下 考前 考試前一天晚上一直在看電視 看到了10點還是11點吧,寫了一會兒會兒作業,但我覺得這不是考砸了的理由 誰叫我本來就如此之水 第二天早上很早就起床了,還順便跟外婆還有老媽去小區外面吃了個早餐。然後老媽帶我來了考場,也是在附近萬達吃了飯,走路就花了我差不...

NOIP2018普及組 標題統計

題目大意 凱凱剛寫了一篇美妙的作文,請問這篇作文的標題中有多少個字元?注意 標題中可能包含大 小寫英文本母 數字字元 空格和換行符。統計標題字 符數時,空格和換行符不計算在內。評測位址 本題考察知識點 c 字元及字串讀入方式,cin,getline,scanf,getchar 的使用等 演算法分析 ...