1. 程式人生 > >刷題錯誤(個人)整理

刷題錯誤(個人)整理

這裡寫圖片描述

1、變數名打錯;

例:資料備份(竟然過了樣例……);
避免:定義規範的變數名,實在不行用拼音.

2、bfs時沒有標記已經到達的狀態;
四子連棋,憤怒的小鳥;
避免:在紙上寫出所有可能的狀態,看是否將所有當前狀態標記;

3、輸入打錯;
(1) 定義long long,輸入%d;
(2)直接輸入long double,(需要強轉);
避免:仔細看~~~~

4、讀錯題目;
將水題看成神題,將神題看成水題;
避免:多讀兩遍題目,手推樣例,在確定完全理解好題意後再思考 ;

5、inf設定的不夠大;
例:蚯蚓;
避免:設定為int的極限值;

6、某些線段樹題,有將整個區間賦值為0的操作;
而lazy標記為0,無法下傳lazy標記;
例:軟體包管理器;
避免:將lazy記為-1;

7、分不清n和m;
特別是用kruskal時,給邊m排序,而不是給點n排序;
注意讀題,可能存在n表示邊的情況,依具體題目而定,例:poj某最短路板子題;

8、注意各陣列應該開的大小;
不要一律用MAXN替換;
對於圖論題,n<=100,但n個點卻能組成10000條邊! 例:舞會邀請,車站分級;
對於無向圖,鄰接表陣列至少需要開兩倍大
避免:每一個單獨開;

9、取模不徹底;
例:浮游大陸的68號島;
取模不徹底,中途爆掉就GG了;
但模數也不易太多,(mod很慢);
同時取模時還要防止負數的出現;

10、陣列越界;
出現-1、-2下標,windows下不報錯;
或者下標超過陣列大小(例如在函式內定義了一個變數,沒有賦值);

11、沒有對定義的變數賦初值;
對於計數器等變數需要賦為0的初值;
乘法賦值為1,加法賦值為0;

12、dfs回溯時將本來沒有的狀態加上了;
例:補丁VS錯誤;
避免:定義中間變數解決;

13、dfs時沒有搜全所有狀態,或者剪枝時將可行解減掉了;
例:Mayan遊戲;
避免:保持思路清晰,思考是否剪枝可行;

14、沒有驗證思路的正確性就開始打程式碼
例:又是畢業季II;
避免:多寫寫,最好證明一下;

15、用”高階”演算法
例:某考試題;
避免:結合特性找替代品;

16、二分邊界不對
最小化最大值:左開右閉;
最大化最小值:左閉右開 ;
避免:emmmm;

17、if寫成else if;
注意並列關係和遞進關係;
慘痛的教訓……
避免:理清思路再打程式碼;

18、開cmath庫時定義了y1,y0,yn,j0,j1,jn
避免:換個變數名;

19、用memset沒有開cstring;
避免:寫全標頭檔案,但不能用全庫;

20、strlen寫在for內,會TLE;
慘痛教訓……
避免:寫在for外(和沒說有什麼區別……)

相關推薦

錯誤個人整理

1、變數名打錯; 例:資料備份(竟然過了樣例……); 避免:定義規範的變數名,實在不行用拼音. 2、bfs時沒有標記已經到達的狀態; 四子連棋,憤怒的小鳥; 避免:在紙上寫出所有可能的狀態,看是否將所有當前狀態標記; 3、輸入打錯; (1) 定

leetcode總結1

solution 遍歷 AC 復雜度 刷題 may example AR 記錄 1、Two Sum Given an array of integers, return indices of the two numbers such that they add up to

程式設計師常用的網站2

在五個月之前寫了篇文章 程式設計師常用的技術網站 | 轉眼間五個月過去了。五個月後的今天我打算寫一篇程式設計師常用的刷題網站。 為什麼要刷題呢? 鞏固提高自己的基礎程式設計知識水平 增加面試過程中的自信心 幸運的是:很多時候面試筆試題目你刷過

程式設計師常用的網站1

1、Lintcode Lintcode.com——LintCode網站是國內較大的線上程式設計&測評網站。此網站提供各大IT公司的演算法面試題型別,行分門別類,由簡單到中等,再到難,便於不同水平的程式設計師進行刷題練習。同時網站支援多種語言(Ja

2018QBXT遊記3

【2018QBXT刷題遊記】 Day1 TEST1 T3 difer 【問題描述】 在數學中, 對光滑函式求微分是一種常見的操作。 在實際應用中, 一些函式沒有解析形式, 通常會從函式上取若干個點,用這些點來近似地表示這個函式。 現在有一個函式\(f(x)\),我們在函式上取 \(n\)個值 \(f(1

2018QBXT遊記19

【2018QBXT刷題遊記】 Day5 TEST7 T1 herb 【問題描述】 小奇是隻天資聰穎的喵,他的夢想是成為世界上最偉大的醫師。 為此,他想拜喵星球最有威望的醫師為師。 醫師為了判斷他的資質,給他出了一個難題。 醫師把他帶到⼀個到處都是草藥的山洞裡對他說:“小奇,這個山

2018QBXT遊記7

【2018QBXT刷題遊記】 Day2 TEST3 T1 count 【問題描述】 fadbec 很善於數數,他會數將 a 個紅球, b 個黃球, c 個藍球, d 個綠球排成一列,任意相鄰不同色的數目。 現在 R 君不知道 fadbec 數的對不對,想讓你也算一算。 由於數字字

2018QBXT遊記6

【2018QBXT刷題遊記】 Day1 TEST2 T3 network 在電腦科學中,經常要通過分析變數之間的相關性來簡化計算過程。變數 間的相關性可以用有向圖 G

2018QBXT遊記26

【2018QBXT刷題遊記】 Day8 TEST9 T2 game 【問題描述】 小 N 和小 A 在玩這樣的一個遊戲:給定初始數列 Q,小 N 先把某個字首 (可以為空) 的數字全部乘上 -A,小 A 再把某個字尾 (可以為空) 的數字全部乘上 -B,小 N 想讓最後所有數的和

LeetCode記錄

LeetCode刷題記錄(三) 1、螺旋矩陣 題目: 我的思路: 我將獲取螺旋矩陣的過程分為四步:先從左往右遍歷矩陣的值,到最右之後再從上往下遍歷,到最下面之後再從右往左遍歷,到最左側之後再從下往上遍歷,這樣依次迴圈,直到遍歷到最後一個值; 根據這個思

LeetCode記錄

LeetCode刷題記錄(二) 繼續陣列和字串卡片的題目,這一篇主要介紹一道二維陣列相關的題目。 1、對角線遍歷 題目: 我的思路: 這一題我的思路比較複雜,我先觀察幾種型別的二維陣列 1、 M=N型別的二維陣列,例如: [1, 2, 3]

LeetCode記錄

LeetCode刷題記錄(一) 最近開始在LeetCode上面做題,想想應該做一個記錄,以便以後看到類似的問題及時查閱,同時也能夠將做題時的思路記錄下來,將這些思路整理歸納,形成一套我自己的解題思路。當然,演算法題只做一次是不夠的,需要多次的練習,可能每次的想法都不太一樣,在這裡我只

LeetCode記錄

LeetCode刷題記錄(四) 1、陣列拆分 I 題目: 我的思路: 這一題我的思路分為兩步:首先要將這個陣列中的元素進行排序,使其成為一個有序陣列,然後挑選出其中第奇數個元素,將它們相加的和就是結果。 為什麼是第奇數個元素相加呢?根據題目中要求,要選出兩兩組合

LeetCode記錄

LeetCode刷題記錄(五) 今天開始佇列&棧卡片的學習。 1、設計迴圈佇列 題目: 我的思路: 迴圈佇列的工作原理可以參考LeetCode上的介紹,從介紹中我們可以看到: 可以定義一個數組來儲存佇列中的元素,迴圈佇列定義了兩個指標,一個指標指向

LeetCode實戰

題2描述: You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of

LeetCode筆記

問題一:兩數相加 給定兩個非空連結串列來表示兩個非負整數,位數按照逆序方式儲存,它們的每個節點只儲存單個數字,將兩數相加返回一個新的連結串列。 例項: 輸入:(2 -> 4->3) + (5->6->4) 輸出:7 -> 0 - >

LeetCode筆記

4. 兩個排序陣列的中位數 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2 。 請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 O(log (m+n)) 。 你可以假設 nums1 和 nums2 不同時為空。 示例 1: nums1 =

LeetCode實戰13:Roman to Interger

題目描述: Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V

Leetcodepython3

各位相加 #題目 給定一個非負整數 num,反覆將各個位上的數字相加,直到結果為一位數。 示例: 輸入: 38 輸出: 2 解釋: 各位相加的過程為:3 + 8 = 11, 1 + 1 = 2。 由於 2 是一位數,所以返回 2。 進階: 你可以不使用迴圈或者遞

Rrui的Leetcode筆記

102. 二叉樹的層次遍歷 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode