還是很離譜,作業寫不完了要。我很討厭寫自己不喜歡的作業。而且也很煩,一堆亂七八糟的事情。越想越煩,越想越不想做,只想die,痛苦面具了都要。
- pre 30mintues
- 六級肯定是要準備的 2h
- 作業系統文獻閱讀+腦圖 2h
- 作業系統實驗報告 1h
- 作業系統思政報告 1.5 h
- 移動應用開發實驗
- 科研找導師一敘
- 退役acmer的每日一題
pre 30mintues
應友人之邀,分享了一點東西
六級肯定是要準備的 2h
單詞 100 個
閱讀 3篇(沒有,明天補)
範文看5篇(沒有,明天補)
作業系統文獻閱讀+腦圖 2h
看懂了,看完了,看明白了60+%的內容。因為有些很細節的地方,可以瘋狂去擴充套件。所以在文獻主要內容的理解方面,應該是50-70%之間,比如說設計概念和理論級實現,微操級實現這得有程式碼。
作業系統實驗報告 1h
作業系統的實驗,說實話,就比較水。說不上來,可能是培養體系的問題,大部分都是cv。而且課程也很滿,都放到這個時候,想學也學不到啥東西。
作業系統思政報告 1.5 h
藉助chat和網路圖片以及相應的文獻,花費了點時間。問題是一開始我endnote匯入相應的文獻的時候,也突然降智了,只修改了endnotes,沒有對於word中的選項進行修改。白白浪費了大把的時間。
移動應用開發實驗
先欠著,真的速度慢,感覺寫不完作業了。
科研找導師一敘
鬼知道,突然說了一堆的作業ddl,我連文獻都沒看。找個damn的老師啊!
退役acmer的每日一題
題目連結:https://atcoder.jp/contests/abc365/tasks/abc365_e
題目思路:首先,想到位運算的獨立性,我們按位來進行求解,給出一連串10,然後求所有長度至少為2的子串的異或和。首先如果以第i個結尾的子串集合有cnt[i][0]個零,有cnt[i][1]個1,那麼在此基礎上,對於第i+1個結尾的子串,如果是0,那麼cnt[i+1][1]=cnt[i][1],cnt[i+1][0]=cnt[i][0]+1,如果是1,那麼cnt[i+1][1]=cnt[i][0]+1,cnt[i+1][0]=cnt[i][1]。同時,我們注意,在計算答案是,我們不能使用當前的,因為當前的包括了以當前字元為串,即長度為1的子串。所以每次都是使用前者的。
我這個方法,是透過一個遞推的形式得出來的。而對於數學好的同學,可以看看這麼這個大哥的題解。
這位大哥的數學推導感覺很不錯:https://www.cnblogs.com/snapyust/p/18341238
程式碼實現:
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
const int N=2e5+10;
const int MAX=1e6+5;
const int mod=1E9+7;
int n,m,k,w;
void solve(){
int ans=0;
cin>>n;
vector<int>a(n+1,0);
vector<vector<int>>cnt(n+1,vector<int>(2,0));
for(int i=1;i<=n;i++)cin>>a[i];
for(int j=0;j<=30;j++){
cnt[0][0]=cnt[1][0]=0;
int t=1<<j;
for(int i=1;i<=n;i++){
cnt[i][0]=cnt[i-1][0];
cnt[i][1]=cnt[i-1][1];
if((a[i]>>j)&1){
swap(cnt[i][0],cnt[i][1]);
cnt[i][1]++;
ans+=cnt[i-1][0]*t;
}
else {
cnt[i][0]++;
ans+=cnt[i-1][1]*t;
}
}
}
cout<<ans<<endl;
}
signed main(){
ios;
int t;
t=1;
//cin>>t;
while (t--){
solve();
}
return 0;
}