下午一點鐘起牀洗澡完,到五點比賽結束,總共花了大概2.5個小時作題,作的效果不盡人意,只作出4題,第五題在5點以後調試成功。因爲水題爲主,我就簡單記錄一下。
題目連接:https://files-cdn.cnblogs.com/files/jinjin-2018/contest1inhdoj.pdflinux
#include<iostream> #include<map> using namespace std; int pos[500] = {0}; int a[500] = {0}; int main(){ int n; while(cin >> n){ map<int,int> mp; int sum = 0; for(int i = 1; i <= n ; i++){ pos[i] = sum; mp[sum] = i; int t; cin >> t; sum += t; } int cnt = 0; if(sum%2) {cout << 0 << endl;continue;} for(int i = 1; i <= n; i++){ for(int j = i+1; j <= n; j++){ int d = pos[j] - pos[i]; if(d >= sum/2) break; int e = sum/2 - d; if( j < mp[pos[j]+e] && mp[pos[i]+sum - e] <= n && mp[pos[j]+e] < mp[pos[i]+sum - e]) cnt++; } } cout <<cnt<<endl; } return 0; }
#include<iostream> using namespace std; long long f[20]; int nums[205]; void init1(){ long long mul = 1; f[0] = 0; for(int i = 2; i <= 20;i++){ mul *= i; f[i-1] = mul; } return ; } void init2(){ int start = 5; int x = 5; for(int i = 4; i <= 20; i++){ x += i; while(start < 202 && start < x){ nums[start] = i-2; ++start; } } } int main(){ int n; cin >> n; init1(); init2(); while(n--){ int m; cin >> m; if(m == 1) cout << 1<<" "<<1<<endl; else if(m == 2) cout << 2 <<" "<<2<<endl; else if(m == 3) cout << 2 <<" "<<3<<endl; else if(m == 4) cout << 3 <<" " <<4<<endl; else{ int k = nums[m]; int ss = m - k*(k+3)/2; long long res; if(ss > k) res = f[k+2]/2/(k+2); else res = f[k+1]/(k+1+1-ss) ; cout <<m-1<<" "<<res<<endl; } } return 0; }
晚上家教回來玩了會手機10:00就開始看啦,看到了11:40,可是效率不高,暫且按照1hour計算有效學習時間。
今天開始看第二章「信息的表示與處理」:
C11標準執行:ios
linux> gcc -std=c11 prog.c
2.1信息存儲:字節是最小的可尋址的內存單元編程
linux> gcc -m32 prog.c linux> gcc -m64 prog.c