NOIP2004 題解報告

2022-04-28 20:12:12 字數 2729 閱讀 5617

•$luogu\ p1089$ 津津的儲蓄計畫$(\ √\ )$

•$luogu\ p1090$ 合併果子$(\ √\ )$

•$luogu\ p1091$

合唱隊形$(\ √\ )$

•$luogu\ p1092$

蟲食算$(\ √\ )$

$luogu\ p1089$ 津津的儲蓄計畫題目傳送門

$noip$提高組中唯一一道入門題$qwq$

直接暴力模擬就$ok$了,放下**就好

1 #include2

using

namespace

std;

3int

main()

11else

12 b++;

13if(c==1&&d==0

)14 15}

16if(d!=0) cout<

17else cout<<120*x+a;

1819

return0;

20 }

**戳這裡

$luogu\ p1090$ 合併果子

題目傳送門

可以直接用$stl$中的$priority_queue$,也可以手寫堆

每次取出堆頂$($小根堆$)$的兩個元素,將其和加進答案並重新插入堆

放下$stl$的**

1 #include2

#define ri register int

3#define ll long long

4#define rl register ll

5#define go(i,a,b) for(ri i=a;i<=b;i++)

6#define back(i,a,b) for(ri i=a;i>=b;i--)

7#define g() getchar()

8#define il inline

9#define pf printf

10#define mem(a,b) memset(a,b,sizeof(a))

11using

namespace

std;

12 il int

fr()

15while(ch>='

0'&&ch<='

9')w=(w<<1)+(w<<3)+ch-'

0',ch=g();

16return w*q;17}

18int

n,ans;

19 priority_queueq;

20int

main()

28while(q.size()>1)34

if(!ans)ans+=q.top();

35 pf("

%d\n

",ans);

36return0;

37 }

stl版

$luogu\ p1092$ 合唱隊形

題目傳送門

設$b[i]$表示正著數到第$i$個人,包括第$i$個人在內最多能留下多少個人,$c[i]$表示倒著數

最後列舉中間的分界點,使得$b[i]+c[i]$最大,答案為$n-max\+1$

1 #include2

using

namespace

std;

3int a[200],b[200],c[200];4

intmain()

17for(i=n;i>=1;i--)

1823 maxx=0;24

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

25if(b[i]+c[i]>maxx) maxx=b[i]+c[i];

26 cout<1

<

27return0;

28 }

**戳這裡

$luogu\ p1091$ 蟲食算

題目傳送門

從大到小列舉每個字母代表的數字,一邊列舉一邊判斷是否合法,$dfs+$剪枝即可$ac$

1 #include2

using

namespace

std;

3int n,sum[30],wait[30];4

char s1[30],s2[30],s3[30];5

bool used[30];6

void

print()

11 exit(0

);12}13

bool

cut()

21return

1;//

如果符合條件則返回122}

23bool pd()

30return1;

31}32void search(int x)

38for(int i=n-1;i>=0;i--)

46return;47

}48int num=0;49

void

get(int

x)55}56

intmain()

69 memset(used,0,sizeof(used));//

標記清零

70 search(0

);71

return0;

72 }

**戳這裡

NOIP2004 合併果子 解題報告

輸入檔案 fruit.in 輸出檔案 fruit.out 簡單對比 時間限制 1 s 記憶體限制 128 mb 在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可...

NOIP2004 合唱隊形題解

n位同學站成一排,老師要請其中的 n k 位同學出列,使得剩下的k位同學排成合唱隊形。合唱隊形是指這樣的一種隊形 設k位同學從左到右依次編號為1,2,k,他們的身高分別為t1,t2,tk,則他們的身高滿足t1 t2 ti ti ti 1 tk 1 i k 你的任務是,已知所有n位同學的身高,計算最少...

NOIP 2004 蟲食算題解

時間限制 1 sec 記憶體限制 128 mb 所謂蟲食算,就是原先的算式中有一部分被蟲子啃掉了,需要我們根據剩下的數字來判定被啃掉的字母。來看乙個簡單的例子 43 98650 45 8468 6633 44445506978 其中 號代表被蟲子啃掉的數字。根據算式,我們很容易判斷 第一行的兩個數字...