SDOI2010 外星千足蟲

2022-08-20 02:09:15 字數 2493 閱讀 9135

公元2023年6月4日,在經歷了17年零3個月的漫長旅行後,「格納格魯一號」載人火箭返回艙終於安全著陸。此枚火箭由美國國家航空航天局(nasa)研製發射,行經火星、金星、土衛

六、木衛

二、穀神星、「張衡星」等23顆太陽系星球,並最終在小行星「傑森星」探尋到了地外生命。太空飛行員在「傑森星」地表岩層下45.70公尺位置發現一批珍貴的活體生命樣本,並將其帶回檢測。在帶回的活體樣本中,最吸引人的當屬這些來自外星的千足蟲了。這些蟲子身軀纖長,身體分為若干節。受到觸碰時,會將身體捲曲成圓環形,間隔一段時間後才會復原活動。

有趣的還不止如此。研究人員發現,這些蟲子的足並不像地球千足蟲成對出現、總共偶數條——它們每節身體下方都有著不定數量的足,但足的總數一定是奇數條!雖然從外觀難以區分二者,但通過統計足的數目,科學家們就能根據奇偶性判斷出千足蟲所屬的星球。

作為j國派去nasa的秘密間諜,你希望參加這次研究活動以掌握進一步的情報,而nasa選拔的研究人員都是最優秀的科學家。於是nasa局長charles bolden出了一道難題來檢測你的實力:

現在你面前擺有1…n編號的n只千足蟲,你的任務是鑑定每只蟲子所屬的星球,但不允許親自去數它們的足。charles每次會在這n只千足蟲中選定若干只放入「昆蟲點足機」(the insect feet counter, ifc)中,「點足機」會自動統計出其內所有昆蟲足數之和。charles會將這個和數mod 2的結果反饋給你,同時告訴你一開始放入機器中的是哪幾隻蟲子。他的這種統計操作總共進行m次,而你應當盡早得出鑑定結果。

假如在第k次統計結束後,現有資料就足以確定每只蟲子的身份,你就還應將這個k反饋給charles,此時若k<m,則表明那後m-k次統計並非必須的。

如果根據所有m次統計資料還是無法確定每只蟲子身份,你也要跟charles講明:就目前資料會存在多個解。

輸入檔案insect.in第一行是兩個正整數n, m。

接下來m行,按順序給出charles這m次使用「點足機」的統計結果。每行包含乙個「01」串和乙個數字,用乙個空格隔開。「01」串按位依次表示每只蟲子是否被放入機器:如果第i個字元是「0」則代表編號為i的蟲子未被放入,「1」則代表已被放入。後面跟的數字是統計的昆蟲足數mod 2的結果。

由於nasa的實驗機器精確無誤,保證前後資料不會自相矛盾。即給定資料一定有解。

輸出檔案insect.out在給定資料存在唯一解時有n+1行,第一行輸出乙個不超過m的正整數k,表明在第k次統計結束後就可以確定唯一解;接下來n行依次回答每只千足蟲的身份,若是奇數條足則輸出「?y7m#」(火星文),偶數條足輸出「earth」。如果輸入資料存在多解,輸出「cannot determine」。

所有輸出均不含引號,輸出時請注意大小寫。

3 5

011 1

110 1

101 0

111 1

010 1

4

earth

?y7m#

earth

5 7

01100 1

11000 1

10100 0

11100 1

00011 1

00000 0

11111 0

cannot determine

對於每乙個測試點,如果你的輸出檔案與答案檔案完全相同,該測試點得滿分;

否則,對於存在唯一解的測試點,如果你正確回答所有千足蟲的身份,將得到50%的分數;

其他情況,該測試點得零分。

【資料規模和約定】

對於20%的資料,滿足n=m≤20;

對於40%的資料,滿足n=m≤500;

對於70%的資料,滿足n≤500,m≤1,000;

對於100%的資料,滿足n≤1,000,m≤2,000。

和上道題基本一樣

就是高斯消元解異或方程組

如果有自由元就不合法

但是要注意判斷需要幾行資訊就可以完成的時候就在選取主元所在的行的時候取個max就好辣

#include#include#include#include#includeconst int m = 2005 ;

using namespace std ;

int n , m ;

char s[m] ;

bitset < m > b[m] ;

int ans ;

inline void gauss()

}int main()

gauss() ;

if(ans > m)

printf("%d\n",ans) ;

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

if(b[i][n + 1] == 0) printf("earth\n") ;

else printf("?y7m#\n") ;

return 0 ;

}

SDOI2010 外星千足蟲

洛谷 p2447 傳送門 高斯消元解異或方程組。題目還是挺裸的,大概看一看就知道怎麼寫了吧。解異或方程組跟解正常的方程組差不多,我發現我喜歡上那種消成對角線的方法了。這道題資料範圍1000 2000,用bitset優化一下就能過了。1 include2 include3 include4 inclu...

SDOI2010 外星千足蟲(高斯消元)

高斯消元裸題。方法一 暴力,o 2 n 20分 方法二 直接gauss,加點玄學技巧搞得好的話70分 方法三 使用bitset優化,複雜度 o frac 不會的同學看一下 吧,跟裸gauss差不多.只不過消元地方用異或消 真的是 一看就懂了呢.1 include2 include3 include4...

1923 Sdoi2010 外星千足蟲

time limit 10 sec memory limit 64 mb submit 1312 solved 841 submit status discuss 第一行是兩個正整數 n,m。接下來 m行,按順序給出 charles 這m次使用 點足機 的統計結果。每行 包含乙個 01 串和乙個數字...