程式設計之美2015初賽A

2021-07-02 03:06:01 字數 1439 閱讀 5851

時間限制:

2000ms

單點時限:

1000ms

記憶體限制:

256mb

兩個數a和 b (a第一行為乙個數t,為資料組數。之後每組資料報含兩行。

第一行為n,為集合s的大小。第二行為n個整數,表示集合內的數。

對於每組資料輸出一行,形如"case #x: y"。x為資料編號,從1開始,y為最大的子集的大小。

1 ≤ t ≤ 20

集合s內的數兩兩不同且範圍在1到500000之間。

小資料1 ≤ n ≤ 15

大資料1 ≤ n ≤ 1000

樣例輸入

3

52 4 8 16 32

52 3 4 6 9

31 2 3

樣例輸出

case #1: 3

case #2: 3

case #3: 2

思路: 若兩個數是質數相關的,則在兩數之間連線一條無向邊。根據質數相關的定義可發現,圖中不可能存在奇數環,則可以通過黑白染色將集合分成兩個部分,這兩個部分的最大的乙個,即為解。

//黑白染色

#include #include #include #include #include #include using namespace std;

bool isprime[500000+5];

int t,n;

int a[20];

int p[20];

bool pcount[20][20];

bool cmp(int x, int y)

void initg()

}}int qu[22];

int head,rear;

bool ispos[22];

int main()

sort(a,a+n,cmp);

memset(pcount,false,sizeof(pcount));

int tmp;

for(int i = 0; i < n; i++)}}

}int total = 0;

int ans_tmp;

int total_ans;

memset(ispos,false,sizeof(ispos));

for(int i = 0; i < n; i++)}}

total_ans = 0;

ans_tmp = 0;

for(int j = 0; j < n; j ++)

if(total_ans > ans_tmp) total+=total_ans;

else total+=ans_tmp;}}

printf("case #%d: %d\n",item,total);

}return 0;

}

程式設計之美初賽B

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 小冰是個八卦的人,最近她對乙個社交 很感興趣。由於小冰是個機械人,所以當然可以很快地弄清楚這個社交 中使用者的資訊啦。她發現這個社交 中有n個使用者,使用者和使用者之間可以進行互動。小冰根據使用者之間互動的次數和內容判斷每對使用...

微軟程式設計之美 初賽

相似字串對於兩個長度相等的字串,我們定義其距離為對應位置不同的字元數量,同時我們認為距離越近的字串越相似。例如,0123 和 0000 的距離為 3,0123 和 0213 的距離則為 2,所以與 0000 相比,0213 和 0123 最相似。現在給定兩個字串 s1 和 s2,其中 s2 的長度不...

程式設計之美初賽第二場

problem a 一邊輸入邊一邊維護殘留網路,然後跑isap。小資料過了,大資料tle。據說可以bfs預處理 層次網路。可以過。view code include include include include using namespace std const int inf 10000000 ...