Time of Update: 2018-12-03
這道題目開始的時候也是沒有看明白到底是個什麼意思,,,看了別人的代碼才知道原來是個這麼意思,還是不懂是個什麼意思其實,,看代碼算了..嘿嘿貼出:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#define MAXN 1000001int prime[MAXN];int
Time of Update: 2018-12-03
主要是要讀好題目,題目中已經說好了,是醜數;貼出代碼;#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>__int64 N;int find(int x){int sum=0;__int64 t=N;while(t%x==0){sum++;t/=x;}return sum;}int main(){int
Time of Update: 2018-12-03
這麼個水題,讓我敲了好長時間,,,我就不懂了.為什麼能用n/2,而就是不能用sqrt(n)呢能漏掉什麼答案麼? 我一定得弄清楚 而且.如果加上while的話,,就錯,我也不懂...等會研究清楚繼續整貼出代碼:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>bool hash[40000];int main(){int
Time of Update: 2018-12-03
其實就是簡單的數學求極值問題.看了代碼大家都會知道的.本來是想好好學學二分尋找這種方法的,但是發現專門考二分尋找的不多,它只是種思想,是一種工具.貼出代碼:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>const double eps=1e-8; int y;double g(double x){return
Time of Update: 2018-12-03
看來前面的思路還是對的,就是說,其實判斷0的個數就是判斷2和5的個數,,,而2和5的最小的個數取決於零的個數.但是,開始的時候不知道有那麼個規律 就是說,質因數分解的時候,前面的冪次必定小於後面的冪次.所以逾時了,,呵呵.貼出代碼,下面的是逾時的哦...#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>int main(){int
Time of Update: 2018-12-03
這個題目是一個很基礎的求最小產生樹的,唯一稍微拐一點彎的就是,你個建成邊的處理情況,可能有很多種情況,但我選擇的是:既然已經建成了,那麼說明他的花費是0,直接以0為權值,建到矩陣中就可以,而且這樣建的話也不會更新這些已經建成的邊,原因很簡單咯,因為你最初設這的dis[i]=0;貼上代碼:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#define
Time of Update: 2018-12-03
此題目,就是一定要注意建雙路邊,而且因為不知道有多少個頂點,所以開始的時候就要建最多的情況.也就是1005(習慣性的多出幾個咯),然後就是一個起點,對應的多個終點的兩重迴圈就好,其實還是比較簡單的.貼出代碼:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#define inf 0x3fffffffint M,S,D;//M represents
Time of Update: 2018-12-03
這是一道非常經典也是很好玩的一道題目,而自己需要做到的就是,將以前的做法完全的顛覆,自己通過現在學到的知識去改變做法,這樣才能體現出,自己比別人的思想進步.呵呵.看代碼:#include <stdio.h>#include <string.h>#include <iostream>#include <string>#include <algorithm>#define F(a) a*a*ausing namespace
Time of Update: 2018-12-03
這個暴力法,還是比較好的不,但是一般在 比賽的過程中是遇不到的,,不可能就是這種純暴力的想法,但是也許就是個水題的話,自己還是可以做出來的不呵呵,,還是不錯的哈;;;貼出代碼:#include <stdio.h>#include <string.h>#include <iostream>#include <string>using namespace std;int a[22];int max[22];int main(){int n;while
Time of Update: 2018-12-03
其實只要弄明白拓撲排序的原理,自己還是很容易實現出自己的拓撲排序的,但需要注意的幾點,分別有:要注意重邊,雖然這道題目,你注意不注意都可以過,然後就是一定要注意注意注意加註意的一點是:找到一個就立馬退出迴圈!要不然 容易出現這種情況5 6 5 1,你找到了5 然後你不退出的話就會直接繼續找6,但其實應該是輸出1的..誒...所以,以後還是要小心點的,當然多做定題目,多積累點經驗還是有必要的.貼出代碼:#include <stdio.h>#include
Time of Update: 2018-12-03
快速排序的主要的思想就是在於劃分,就是先找一個關索引值,然後運用什麼樣的方法把資料分成小於關索引值的在關鍵的左邊,而大於關索引值的在關索引值的右邊. 然後分配好了之後就可以直接遞迴調用了.貼出我自己寫的代碼,這是根據資料結構的基本思想寫出來的:#include <stdio.h>#include <string.h>#include <math.h>#include <iostream>#include
Time of Update: 2018-12-03
這個主要是靠你自己退出來範圍,要是盲目的算,你是一點思路都沒有的.,..一般涉及到這種帶有不等號的題目,都會涉及到範圍的,,誒誒誒誒,今天就不寫了,,,想去看書了,,好想看沉思錄,,剛才順便掃了一眼電視,,,那個叫什麼梨花嫂的...嗚嗚.老天呀,為什麼年輕的時候你不讓我們在一起,老了的20年卻讓我們在一起,,,誒誒誒, 感情這事呀..#include <stdio.h>#include <string.h>#include <math.h>#include &
Time of Update: 2018-12-03
很簡單的一道題目,就主要是吧已經修建成功的賦成map[i][j]就行了.貼出代碼:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#define inf 0x3fffffffint N,M;// N represents the number of points,and M stands for the number of that has been
Time of Update: 2018-12-03
這道題目,其實和以前做過的還是有那麼點類似的,主要就是你把已經建成的先賦成0,因為人家已經建成了,你怎麼能讓人家繼續掏錢呢?本來想用並查集去判斷是不是通路的,在想一想,其實不用那麼複雜,你首先把dis[i]都賦成了最大值inf,那也就是如果沒有聯通的話,這個邊是不會更新的 所以在最後面加一個判斷是不是有inf的邊沒有更新就可以判斷出到底是不是通路了,貼出代碼:#include <stdio.h>#include <string.h>#include <stdlib.
Time of Update: 2018-12-03
其實我們如果以前沒有遇到過這種題目,然後自己再猛然遇到種數學技巧性的題目的時候是最無辜的....用以前的辦法解決逾時,而新的自己又不會...所以解決這種問題就是多做題目,多總結相似點.現在貼出代碼,這代碼當然也是參考別人的,嘿嘿#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>int p[500005];int main(){int T;for(int
Time of Update: 2018-12-03
這道題目,本來我是用的DFS,但是來的答案不一定是對的,,,,以你為DFS是找到了就是答案, 而題目中要求的是找到最小的次數,所以不能選擇DFS.而我寫BFS的時候也有點繞遠,該了N多次,才改正了,,,,所以代碼改出來及其醜,,,,主要提醒注意以下幾個知識點,,,,判斷起始點和結束點事一個點的時候(其中又包括兩個易錯點:此點是合理的與此點是不合理的情況兩張),然後就是寫BFS了...而且你也要用一個數組存起來步數,我用的是visit[]我寫的比較醜.,.嘿嘿代碼如下:#include
Time of Update: 2018-12-03
這道題目是一道簡單的DFS,只需要用鄰接表構出邊之後,進行DFS,一次DFS之後自加1,就可以貼出代碼:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>int N,M;//N represents the number of points,and M stands for the number of edges;int
Time of Update: 2018-12-03
其實就是讓你求出來,所輸入的字串中的大寫字母,然後輸出,,自己的代碼就不看了,醜死了,看標稱:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#include <iostream>#include <ctype.h>#include <string>using namespace std;int
Time of Update: 2018-12-03
運算子的重載是比較重要的內容,,#include <stdio.h>#include <iostream>#include <algorithm>using namespace std;struct node{int a;int b;bool operator< (const node t){if(this->a!=t.a)return a>t.a;elsereturn this->b>t.b;}bool operator== (
Time of Update: 2018-12-03
fill()演算法確實好用,雖然不知道,時間複雜度是多少,但是用起來好方便的,,我覺得時間複雜度應該不高吧? 上百度查了一下也查不出來.還有那個遍曆演算法,也是很省事的呼呼.,..而且還可以加函數演算法op();確實神奇...#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <algorithm>#include