困擾我很久的拖延症
前言自從上大學之後,我就一直深受拖延的困擾,只要是遇到能給你好幾天期限的作業跟報告,我都會想說「這作業好麻煩,好不想面對,反正還有好幾天才結束,先不用管,來做別的事」。一直都是拖到快來不及才開始處理,幾乎都在截止日期前幾分鐘才完成並繳交,有時候甚至來不及做出來,而且因為都是趕死線前弄出來,所以都只求有不求好,也因此老師給的分數都一般般。這樣子的拖延心態在大學階段或許沒什麼問題,因為我最近還是取得大學的畢業證書了。
不過接下來進入碩班,好像就不能再用同樣的拖延心態繼續度過,自己的畢業論文通常是有一整年可以寫,那如果我一樣用拖延心態面對自己的畢業論文,那我非常有可能在前半年,或甚至前八個月,幾乎沒什麼進度,搞得最後必須熬夜,甚至通宵地趕這個東西。
那我在6/27買了《為什麼事情明明很多卻不想做》這本書,作者設計了五週的訓練計畫,每天花20分鐘練習,讓讀者克服拖延症。我打算確實按照作者制定的計畫進行練習,並將這五週的狀況記錄在這篇文。
說明本文不只會紀錄自己的練習狀況,還會放上個人認為本書所提到的重點,所以這篇文會很長,敬請見諒。因為這本書的內容我覺得值得一看再看,所以在看的同時我會記錄重點 ...
leetcode解題記錄
Easy1.Two Sum寫這題的用意是為了熟悉Leetcode的寫法,畢竟和其他OJ不太一樣。:::successRuntime: 280 ms, faster than 36.74% of C++ online submissions for Two Sum.Memory Usage: 10 MB, less than 99.62% of C++ online submissions for Two Sum.:::
1234567891011121314class Solution {public: vector<int> twoSum(vector<int>& nums, int target){ int i,j,ns=nums.size(); for(i=0;i<ns;i++){ for(j=i+1;j<ns;j++){ if(nums[i]+nums[j]==target){ ...
我的第一個機器學習專案-Titanic
前言這個學期修了一堂「資料探勘」,而Titanic - Machine Learning from Disaster是我這堂課的小專題,也就是要分析訓練集中的資料,並訓練出模型來預測測試集中每位乘客是生還是死。
Zerojudge - 窮舉
c316. 最遠點對!前傳這題的測資真的很友善,雖然給到
最長公共子序列
最長公共子序列,顧名思義就是找出兩個序列的最長的 共同的 子序列,像是abc、bac的公共子序列可以是a、b、c、ac、bc,最長的公共子序列長度為2。
那我們要怎麼求出最長的公共子序列的長度,我們可以建立一個二維陣列來運算(lcs[m][n]:m為第一個序列的長度、n為第二個序列的長度)。在判斷的時候會有兩種情況,兩個東西相同或不相同。
如果相同的話,我們的lcs[i][j] = lcs[i-1][j-1] + 1。如果相異的話,我們的lcs[i][j] = max(lcs[i-1][j], lcs[i][j-1])。
以下舉abc,bac為例:
a133. 10066 - The Twin Towers這題就是標準的最長公共子序列,只不過比的是int。
AC (29ms, 384KB)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include<bits/stdc++.h>#define speedup ios::sync_with_s ...
Zerojudge - 二元搜尋
f679. 公會成員AC (0.5s, 2.2MB)
123456789101112131415161718192021222324252627282930313233343536373839404142#include<bits/stdc++.h>#define speedup ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)using namespace std;int main(){ speedup; int n,q,i,x,l,r,mid,find,num[500003]; cin >> n >> q; //input n array for(i=0;i<n;i++){cin >> num[i];} //input member number and check for(i=0;i<q;i++){ l=0;r=n-1,find=0; cin >& ...
最大連續元素和
a540. 10684 - The jackpot題目中要求的最大可能贏的錢 ,就是最大連續元素和的和 ,我們只需要跑一遍迴圈就能求得。
AC (3ms, 80KB)
123456789101112131415161718192021222324252627282930313233#include<stdio.h>int main(){ int n, i; while(1){ scanf("%d",&n); //end of file if(n==0){break;} //input int x,mx=0,tmp=0; for(i=0;i<n;i++){ scanf("%d",&x); //當tmp=0且x<=0 if(tmp==0 && x<=0){contin ...
排序
這篇主要是記錄一些練習排序 的題目
Insertion Sortc010. 10107 - What is the Median?這題的話,因為每塞入一個數就要求中位數,也就是每塞入一個數就要重新排序並算出中位數。這時候insertion sort就會是最好的方法,因為如果用quick sort、merge sort這些公認比較快的方法,每次整理的時間複雜度為O(nlogn),而insertion sort只需要O(n),相比之下快了很多,而且也比較容易實作。
AC (13ms, 108KB)
12345678910111213141516171819#include<stdio.h>int main(){ int n,cnt=0,num[10000]={0},i; while(scanf("%d",&n) != EOF){ for(i=cnt-1;num[i]>n;i--){ num[i+1] = num[i]; } ...
Zerojudge - 流程控制
這篇主要是記錄一些考點為流程控制(Control Flow)的題目
a349. 2. 指令解譯器只要能弄清楚每種指令在做什麼,那就沒什麼問題了。
AC (24ms, 3.4MB)
123456789101112131415161718192021222324252627282930313233try: while 1: r, m = [0,0,0,0], [] # 輸入八個記憶體位址 for i in range(8): m.append(int(input())) # 操作n筆指令 n = int(input()) for i in range(n): code = list(map(str, input().split())) # load if code[0]=='LOAD': r[int(code[1])] = m[int(code[ ...
動態規劃
a693. 吞食天地我們先取得所有食物的飽食度,這時第n個儲存的值代表第n個食物的飽食度,我們用DP的方式讓第n個儲存的值變成第1n個食物的飽食度。再來就是取範圍,如果我們要從第l個吃到第r個,那代表我們不需要前面1l-1的食物。所以飽食度就等於前r個 減掉前l-1個 。
AC (0.1s, 612KB)
1234567891011121314151617181920#include<iostream>using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(0); int i,n,m,l,r,sum[100001]; while(cin>>n>>m){ for(i=1;i<=n;i++){ cin>>sum[i]; sum[i]+=sum[i-1]; } for(i=0;i<m;i++) ...