BZOJ 1923 外星千足蟲(高斯消元)

2021-09-07 23:09:37 字數 2319 閱讀 5097

題意:有n個數字,m次測試。每個數字為0或者1。每次測試選出一些數字出來把他們加起來。現在告訴你每次測試選出的是哪些數字以及他們和的奇偶性。你需要給出到第幾次測量為止就可以判斷出所有n個數字的奇偶性,並輸出每個數字的奇偶性。m次之後還不能判斷輸出無解。

思路:其實這就是乙個高斯消元。但是n和m太大會超時。考慮到每次只是1和0的加加減減,可以用位運算進行。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define abs(x) ((x)>=0?(x):-(x))

#define i64 long long

#define u32 unsigned int

#define u64 unsigned long long

#define clr(x,y) memset(x,y,sizeof(x))

#define clr(x) x.clear()

#define ph(x) push(x)

#define pb(x) push_back(x)

#define len(x) x.length()

#define sz(x) x.size()

#define pi acos(-1.0)

#define sqr(x) ((x)*(x))

#define mp(x,y) make_pair(x,y)

#define eps 1e-6

#define for0(i,x) for(i=0;i

#define for1(i,x) for(i=1;i<=x;i++)

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

#define forl0(i,a) for(i=a;i>=0;i--)

#define forl1(i,a) for(i=a;i>=1;i--)

#define forl(i,a,b)for(i=a;i>=b;i--)

#define rush() int cc;for(scanf("%d",&cc);cc--;)

#define rush(n)  while(scanf("%d",&n)!=-1)

using namespace std;

void rd(int &x)

void rd(i64 &x)

void rd(u64 &x)

void rd(u32 &x)

void rd(double &x)

void rd(int &x,int &y)

void rd(i64 &x,i64 &y)

void rd(u32 &x,u32 &y)

void rd(double &x,double &y)

void rd(double &x,double &y,double &z)

void rd(int &x,int &y,int &z)

void rd(i64 &x,i64 &y,i64 &z)

void rd(u32 &x,u32 &y,u32 &z)

void rd(char &x)

void rd(char *s)

void rd(string &s)

void pr(int x)

void pr(int x,int y)

void pr(i64 x)

void pr(i64 x,i64 y)

void pr(u32 x)

void pr(u64 x)

void pr(double x)

void pr(double x,double y)

void pr(char x)

void pr(char *x)

void pr(string x)

void upmin(i64 &x,i64 y)

void upmin(double &x,double y)

void upmax(int &x,int y)

a[t][k+1]=x;

}int gauss()

}if(j>m&&i<=n) return 0;

for(k=1;k<=j;k++) upmax(ans,b[k]);

pr(ans);

for1(i,n) 

return 1;

}int main()

BZOJ1923 外星千足蟲(線性基)

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

1923 Sdoi2010 外星千足蟲

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

bzoj1923 Sdoi2010 外星千足蟲

luo2447 依然是異或方程組的高斯消元求解,第一問其實就是在高斯消元過程中訪問到的用作主元的方程組的下標最大值,因為異或方程組是直接找到為當前元的係數為 1 的異或方程作為主元進行消元過程的 第二問就是消元之後各個未知數的取值 普通的高斯消元會收穫tle,但是我們可以使用 bitset 可以優化...