關於異或運算,你需要挖掘它的性質,否則這個題找不到規律是沒辦法做出來的。
$a_l\oplus a_ \cdots \oplus a_ = a_\oplus \cdots \oplus a_r $
則可以推出\(a_l\oplus a_ \cdots \oplus a_ \oplus a_\oplus \cdots \oplus a_r = 0\)
又因為對於任意乙個正整數 x 都有\(x \oplus 0 = x\) 。所以這個題就可以冒險試一試了。
#include using namespace std;
int n;
long long has[(1<<20)+10][2];//has[x][0]表示x在偶數字出現的次數
int main()
cout《但是可以稍微證明一下,為什麼一段數字的異或為0,然後它們對半分就一定相等呢?
因為如果異或為0,那麼這一段數字二進位制表示上,每一位上面的1的個數和都為偶數個,那麼我們把這段數字對半分後,這些偶數個1的拆分只能有兩種情況,都為偶數,都為奇數。可見分開後的二進位制位上的1的個數的奇偶性相同,即異或的結果是相同的。
首先可以想到的是,如果字串中所有的字元都相同,或者只有乙個不同,那麼這個回文串是無法重構成與原串不同的回文串的。
然後我們分情況討論:
#include using namespace std;
bool ispalindrome(const string& s)
return true;
}bool solve1(string s)
}return false;
}//判斷是否存在多個不同字元
bool anyanswer(const string& s)
return nt > 1;
}int main() else
return 0;
}
結合著cf題解看吧,鄙人能力有限
#include using namespace std;
typedef long long ll;
ll x1,y1,x2,y2,n;
char s[100010];
ll prex[100010],prey[100010];
bool check(ll m)
int main()
ll l = 0,r = 1e18;
int flag = 0;
while(lelse l = mid+1;
}if(flag)
cout
第二次周賽題解
e題,不懂的看新生訓練題解 includeint main return 0 d題,乙個預處理就ok includeint a 1000005 int main int t scanf d t while t return 0 c題,打表找下規律,會發現是以1 1 2 0 2 2 1 0為迴圈 in...
第二次周賽題解
位址 a 組成三位數 列舉第乙個數,第二個數第三個數根據關係算出來,然後判斷是否合法就行了。include define rep i,a,b for int i a i b i using namespace std int vis 10 bool fun int n return true boo...
第二次作業
execise02 1.查詢85年以後出生的學生姓名 性別和出生日期 2.列表顯示所有可能的學生選課組合 學號 課程號 3.查詢1 2 4班中陳姓同學的資訊 4.查詢所有及格的學生姓名 所選課程名及所得分數 5.統計各門課程的及格人數 課程編號 課程名 及格人數 6.統計各門課程的總人數 及格人數和...