1. 程式人生 > >ACM之坑&套路

ACM之坑&套路

寫在前邊:這些梗都是敝人自己做題和比賽時曾經坑過自己的地方,特別在這裡記錄一下,所有的連結都是本部落格中的題解連結(有大致題意說明和程式碼),原題請到OJ上自行尋找。目的是提升自身姿勢。歡迎大佬們給我提出更好的建議,十分感謝。

#1:一些寫法的線段樹需要開四倍空間。大概是因為:在很靠近葉子的地方,他的編號就很接近2倍了。然後他的孩子(超生)就接近4倍了。 例如:Codeforces 833B

#2:統計答案的時候 最前邊乘上一個1LL,很多時候容易爆。例如:HDU 6058

#3:long long 佔位符%I64d,如果只用%d會把低四個位元組的值作為int輸出,而且更會有奇怪的問題。更重要的是除錯時候的輸出一定別把佔位符寫錯。或者直接用cout除錯輸出,否則自己把自己搞崩就不好了。

#4:揹包注意迴圈次序(物品體積內外次序,升序降序)

#5:multiset可以當成堆用

#6:用rk陣列來排序的時候,注意按序訪問的時候,注意下標是rk[ i ] 不是 i

#7:POJ沒有bits/stdc++.h

#8:讀入優化要看好題目中有沒有負數。

#9:LL最大值大約是9e18 .如果還不夠請上Java

#10:比賽穩住,跟好榜。

#11:單點算貢獻TLE的話。可以嘗試用區間快速算貢獻。例如:Codeforces 850B

#12:字串題目,可以試試用特殊字元把字串拼接然後跑ACAM/SA/SAM等。或者(自身+特殊字元+自身)等操作。例如:

HDU 6096

#13:樹的題目一定要測試一下不同長度的鏈的情況,再提交。

#14:位運算運算優先順序特別低,比加法低,比邏輯運算低(x ^ y <N  - - - - - - > x ^ ( y < N) )

#15:比較玄妙的題目,要大膽嘗試分治,因為分治之後思路一般會有比較大的變化。比如按照二進位制位分組做20次,直接將位劃分位兩半,將複雜度開根號。萬一函式有加性,那就可以用2*sqrt的複雜度分別算玩,然後用lower_bound或者map做統計了。例如:HDU5936

#16:點分治的複雜度是N*logN*層複雜度,一般來講,層複雜度是指組合答案時的複雜度,如果是可以接受的常數就可以用點分治。點分治一般用於統計滿足條件的路徑條數

#17:現場賽寫第一題的時候最好拉隊友掃一眼再交,防止第一題上頭

#18:各種資料無限對,但是一直WA,檢查一遍初始化。

#29:字首是個好東西,很多區間的查詢都可以等價拓展成字首,並查詢兩個單點。

#20:如果用vector存答案的話,用之前clear一下,即使是宣告在函式棧裡的也會有奇妙的問題。例如:痛失2017ICPC新疆C一血。

#21:有spj,還非得用Java的題目,儘量用BigDecimal把大數的表打好,真正演算法計算時候轉成double計算,常數小很多很多。

#22:涉及到位運算一定全都套上括號,否則很可能因為運算優先順序掛掉。例如:痛失2017ICPC新疆I題絕殺,並丟了Au,遺憾Ag。

#23:樹的題目先想如何做鏈,然後整合一下。

#24:比較複雜的狀壓搜尋或者類似的陣列、概念特別多的題,先在紙上把每個陣列的作用寫好,不會把自己心態寫爆炸。如Codeforces 919F

#25:常量的輸出用字串直接輸出的形式,避免使用佔位符以變數形式輸出,防止出現戰為符錯誤,比如printf("%I64d\n",2)會輸出垃圾值,必須是2LL。因此更好的方式是printf("2\n")

#26: 最小值最大->(多源)bfs搜最小值->取最大。

#27:最大值最小->建圖(多源)最長路->取最小

#28:最大值最小<->(反面)最小值最大

#29: 簽到題不會做,直接考慮理論邊界,然後發現理論邊界可以達到,做完了。

#30:總長度固定為M,則本質不同的長度有根號M種,對每種長度可以統一求值,做完了。

相關推薦

ACM&套路

寫在前邊:這些梗都是敝人自己做題和比賽時曾經坑過自己的地方,特別在這裡記錄一下,所有的連結都是本部落格中的題解連結(有大致題意說明和程式碼),原題請到OJ上自行尋找。目的是提升自身姿勢。歡迎大佬們給我提出更好的建議,十分感謝。 #1:一些寫法的線段樹需要開四倍空間。大概

ACM&套路【轉自calabash_boy】

寫在前邊:這些梗都是敝人自己做題和比賽時曾經坑過自己的地方,特別在這裡記錄一下,所有的連結都是本部落格中的題解連結(有大致題意說明和程式碼),原題請到OJ上自行尋找。目的是提升自身姿勢。歡迎大佬們給我提出更好的建議,十分感謝。 #1:一些寫法的線段樹需要開

純Socket(BIO)長鏈接編程的常見的和填套路

狀態 記錄 操作系統 傳遞 p s 一件事 先來 else 線程池 本文章純屬個人經驗總結,偽代碼也是寫文章的時候順便白板編碼的,可能有邏輯問題,請幫忙指正,謝謝。 Internet(全球互聯網)是無數臺機器基於TCP/IP協議族相互通信產生的。TCP/IP協議族分

走向全棧

常見 c教程 自動構建 outer 狀態 免費 調用 是把 vuejs 走向全棧之坑 最近我接手我人生中第一個項目,有點小激動,所用到的技術分別是Vue生態+ASP.Net core webapi+Ubuntu+MySql,基本上算是一個小全棧了,我本人也是希望

selenium (StaleElementReferenceException: Message: Element not found in the cache...)

ktr ast ebe not selenium 自動 print esp 找不到 今天給大家分享一個selenium中經常會有人遇到的坑: selenium.common.exceptions.StaleElementReferenceException: Messag

python文件讀取 readlines()方法

python readlines() 文件讀取 一、需求: 有類似如下兩個文件需要交差對比,進行處理。 1.txt 1 2 3 1 2.txt A B C D 二、問題: 首先想到的是打開之後,兩次for循環就是了 #錯誤寫法 f1=open(r"D:\pytest\1.txt

ReactNative:停在gradle一直出點

alt 問題 信息 ati 分享 pan nat pst 成功 問題: 初次安裝好React Native 環境後,運行項目,會停留在下載 gradle 的界面一直出點 原因: 下載gradle一直不成功 解決方案: 可以根據提示的版本信息,手動下載,放在目錄

ACM兩數之和問題

ACM 兩數之和 Java 題目如下:大概的意思是:給我們一個Int型的數組和一個目標值,找出數組中兩個值之和為目標值的元素位置;要求是每個輸入對應一個答案(即找到符合條件的元素直接返回結果就行,不用繼續往後找,難度降低)並且相同的元素值不能用兩次。1.剛開始的思路: 偉大而又萬能的蠻

ACM兩數相加問題

ACM 兩數相加 Lee天Code 題目如下:這道題個人覺得沒涉及到什麽算法,就是考數據結構——鏈表。那首先來簡單復習一下鏈表: 鏈表(Linked list)是一種線性表,但是並不會按線性的順序存儲數據,而是在每一個節點裏存到下一個節點的指針(Pointer)。由於不必須按順序存儲,鏈表

ACM反轉字符串裏的單詞

ACM 字符串反轉 題目如下 對於字符串的操作一直都是非常重要的,而且有關字符串的題有各種非常奇妙的解法。我的感覺是這類題目要是方法或者邏輯不正確而去嘗試暴力解法,能把自己玩死......方法一、利用Split方法 用非常簡潔而且容易理解的代碼解決題目,思想是:利用正則表達式的split方法

ACM不同的二叉搜索樹

ACM 搜索二叉樹 題目如下:首先得知道什麽是二叉搜索樹:二叉搜索樹又叫做有序二叉樹、排序二叉樹,是指一顆空樹或者具有下列性質的樹:①若任意節點的左子樹不為空,則左子樹上所有結點的值均小於它根節點的值②若任意節點的右子樹不為空,則右子樹上所有結點的值均大於它根節點的值③任意結點的左、右子樹也是二叉搜索

ACM預測贏家

ACM 預測贏家 Java 極小化極大算法 題目如下 零和博弈問題:表示所有博弈方的利益之和為零或者是一個常數,即一方有得其他方必有失,且在博弈中各方是不會合作的。解決此類問題的方法有極小化極大算法等,那就先來學習一下這個極小化極大算法:Minimax算法,是一種找出失敗的最大可能性中的

回歸——繼續我的ACM路!!

原理 那種 圖論 函數 友好 隊友 成績 數據結構 完成 回歸啦~~18年省賽結束後第一次參賽拿到了省級銀牌對我是一個很大的鼓勵,這是所感興趣的事,我能做的不錯,也就不愧於心了。 修整了兩周多左右,建了建模,和闊愛的對象狂了兩周,終於要靜下來了,靜下來一想,我對ACM的熱愛

iframe加載onload

eight att frame 實現 app 觸發 idt wid 事件 需求:點擊按鈕,下載一個文件,由於種種原因,需要借助iframe實現。 實現:點擊按鈕往頁面上append一個iframe,將iframe的src設置為文件的url路徑,實現下載。如果url不對或文件

MySQL中round()四舍五入

函數 數值 的確 sql pan var double TE 計算 計算數值時,因將一個數值由代碼四舍五入改成SQL四舍五入做整數處理而產生了誤差。該字段為varchar類型,修改後的計算結果與之前的結果當小數位為.5四舍五入進位時,竟然出現誤差。例如2.5,當字段類型為v

ACM判斷回文數

不可 sim roc .get alt n-1 process ron cto 題目如下這道題比較簡單,先上Python代碼感受一下,就一行搞定:#判斷回文數 def isPalindrom(x): return str(x) == str(x)[::-1]這種方

阿裏雲ECS安裝配置elasticsearch

是否 ~~ ast span 然而 命令行 在外 一件事 elastics 在這裏只記錄一件事情:elasticsearch 安裝完成後,需要外網訪問9200端口測試是否成功,或者訪問kibana,都需要開放端口,然而貌似阿裏雲是不支持在服務器上直接用命令行來配置的,只能去

圖融合加載子圖:Tensorflow.contrib.slim與tf.train.Saver

sce npe ids import print filters cpu xxx true import tensorflow as tf import tensorflow.contrib.slim as slim import rawpy import numpy

layui的laydate外掛——渲染問題

最近專案使用了laydate.js這個時間外掛。自從這個外掛升級後確實還挺好用的,在選擇時間上操作非常簡單: laydate.render({ elem: '#test' //或 elem: document.getElementById('test')、elem: lay('#test') 等

Kitti資料集使用

KITTI資料集簡介與使用: https://blog.csdn.net/solomon1558/article/details/70173223   接下來是我使用時遇到的坑: 一、label檔案中ry的含義 按照文件中圖示,ry應該是小車朝向和相機座標系z軸的夾角