ACM選修課5 貪心法

2021-10-05 01:36:38 字數 2218 閱讀 6399

部分最優,結果最優(需證明)

貪心問題的特徵:

1、乙個問題的最優解包含其子問題的最優解

2、整體最優解可以通過區域性的最優的選擇

老鼠的旅行

#include

using

namespace std;

struct sa

data[

1001];

intcmp

(const sa &a,

const sa &b)

int m,n;

double sum;

int k;

intmain()

sort

(data,data+n,cmp)

;for

(k=0

; k)else

}printf

("%.3f\n"

,sum);}

return0;

}

今年暑假不ac

#include

using

namespace std;

struct sa

data[

105]

;int

cmp(

const sa &a,

const sa &b)

intmain()

} cout<}return0;

}

wooden sticks

#include

using

namespace std;

struct sa

data[

5005];

intcmp

(const sa &a,

const sa &b)

//注意排序的方式

intmain()

sort

(data,data+n,cmp)

;int num=0;

for(

int j=

0; j} cout<}return0;

}

moving tables

#include

using

namespace std;

struct sa

data[

501]

;int

cmp(

const sa &a,

const sa &b)

intmain()

data[i]

.flag=0;

}sort

(data,data+n,cmp)

; count=0;

for(

int j=

0; j} cout<10<}return0;

}

區間覆蓋-貪心

#include

using

namespace std;

int x[

300]

,y[300];

intmain()

/*for(int i=1; isort

(y,y+n,greater<

int>()

);/*for(int i=1; iint res=x[n]

-x[1];

//cout(int i=

0; i1; i++

) res=res-y[i]

; cout<1

}

等價交換

#include

using

namespace std;

struct sa

data[

1000];

double

cmp(

const sa &a,

const sa &b)

intmain()

sort

(data,data+m,cmp)

;double ans=

0.0;

for(

int i=

0; i)else

}printf

("%.2lf\n"

,ans);}

return0;

}

ACM選修課1 數學問題

memset 函式 memset 陣列名,1 0 1,sizeof a 重置為1是陣列為任意正數 求乙個數的位數 int log10 n 1,公式log10 i i 必須為double型別 the hardest problem ever include using namespace std in...

ACM程式設計選修課 1081 堆(BFS)

time limit 1 sec memory limit 128 mb submit 26 solved 9 3110 310 5 3 1 21 3 51 2 3 4 5 3 12 1 2 42 5 yes noyes 嗯好久之前的題了。由於自己樹這方面不是很懂也沒學過資料結構,然後就沒敢做。趁著...

python選修課大作業

設計內容 輸入乙個正整數s s 2 輸出所有和為s的連續正整數序列。要求先輸出符合要求的序列的數目,然後分行輸出各個序列。設計要求 使用python程式設計。例如,一組連續正數和為100的序列 18,19,20,21,22。1 找出所有和為s的連續正數序列。設計內容 輸入乙個正整數s s 2 輸出所...