Time of Update: 2018-12-03
problem大意:給you一個無loop有向graph,求它的key vertex數目。(最近剛過了英語六級,耶,1Y,炫耀~~~~~) 什麼是key
Time of Update: 2018-12-03
樹狀數組專輯樹狀數組,區間更新+單點查詢代碼:#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<string>#include<vector>#include<map>#include<algorithm>using namespace std;inline int Rint() { int x;
Time of Update: 2018-12-03
問題描述: 給定一個整數序列a[1..N],定義sum[i][j]=a[i]+a[i+l]+……+a[j],將所有的sum[i][j]從小到大排序(其中i,j滿足1<=i<=j<=N),得到一個長為N*(N+1)/2的序列,求該序列中的第k個元素。輸入格式(ktm.in) 第一行有兩個整數N,k,其中0<N<=20000,1<=k<=N*(N+1)/2,資料保證任何一個sum[i][j]的絕對值不超過2^30。 接下來N行每行一個整數。
Time of Update: 2018-12-03
演算法的具體描述請看http://chenhaifeng.blog.edu.cn/2007/91117.html,我只是來貼代碼的。
Time of Update: 2018-12-03
轉載請註明出處,謝謝 http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove繼續高斯消元建立方程A11*X1+A12*X2+……A1N*XN同餘B1%7A21*X1+A22*X2+……A2N*XN同餘B2%7AM1*X1+AM2*X2+……AMN*XN同餘BM%7然後便是高斯消元解這個方程,無解情況,出現一行系統全為0,等式右邊卻不為0。多解情況,變元個數大於方程個數否則為一解情況,解出方程的解便可/*ID:
Time of Update: 2018-12-03
先序遍曆的意義:任何一個節點的父節點都早於他遍曆。中序遍曆的意義:任何一個節點都晚於左子樹上的節點早於右子樹上的節點被遍曆。in.txt 第一行是表示有多少個節點61 2 3 4 5 62 1 5 4 3 6程式:獲得原來的樹放在tab表中 root 的左右孩子分別是 2*root 和 2*root
Time of Update: 2018-12-03
題意: 給出一個f(x), 表示不大於x的正整數裡,不整除x 且 跟x有大於1的公約數 的數的個數。定義F(x), 為不大於x的正整數裡,滿足f(x)的值為奇數的數的個數。題目就是求這個F。分析:打表找規律的方法我就不說了。這裡我們來簡單推理證明下。先來看f(x),“不整除x” 等同於 不是x的約數,“跟x有大於1的公約數” 等同於 不是x的互質數。而且從F的定義知道,我們只需要考慮f(x)的奇偶性即可。所以, f(x) = x - 約數個數 - 互質數個數 +1
Time of Update: 2018-12-03
把亂了以後的數位映射到真實的數位,然後就8進位轉10進位。代碼:#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<string>#include<vector>#include<map>#include<algorithm>using namespace std;inline int Rint() {
Time of Update: 2018-12-03
[題目描述]給定一個長度為n的序列,你每次可以合并相鄰兩個元素,新的元素為這兩個元素的和。你需要使得若干次合并之後的序列非降,求最小合并次數。[資料範圍]n<=1500[題解] 這道題的標程用的是n^2log(n)的dp,所以才會有奇葩的1500的範圍. 然而,這道題完全可以在O(n^2)的時間內解決.
Time of Update: 2018-12-03
線性篩法最基礎的功能就是求[1,n]中的素數,以此為基礎,可以對他進行一些變形。變形後的線性篩法可以實現許多其他的功能。(下文中的tot均指一定區間內的質數個數) 先看一道簡單的問題:求[1,n]中的m個數的最大質因子的序數(hdoj2136) 這個問題可以利用線性篩法打一個質數表,然後二分答案,複雜度為O(n+mlog(tot))。 然而,如果m很大,演算法必然會逾時。我們可以對線性篩法進行一些變形,每次篩掉一個合數時,
Time of Update: 2018-12-03
關於四邊形不等式或石子合并的資料。網上有很多。但有不少都是語焉不詳,直接拋給你幾個結論,讓人很難理解。這篇文章將以石子合并為例。證明關於四邊形不等式的一些結論。算是一個溫習。【題面】 在一個操場上擺放著一排n(n≤20)堆石子。現要將石子有次序地合并成一堆。規定每次只能選相鄰的2堆石子合并成新的一堆,並將新的一堆石子數記為該次合并的得分。試編程求出將n堆石子合并成一堆的最小得分和最大得分以及相應的合并方案。【演算法分析】 下面只討論最小得分的情況,最大得分的情況類似。
Time of Update: 2018-12-03
這題對本菜鳥來說較難啊....分析一下.題目求哪個圓被包的次數最多..暴力顯然不行.掃描線?嗯..有道理!!可是怎麼掃呢.....掃尼瑪啊.....看過題解的菜鳥低空掠過.....但是題解其實沒告訴你怎麼掃.而是告訴了你再掃的過程中你可以這麼搞...這裡引用某牛的BOLG http://hi.baidu.com/bobo__bai/item/17f7b28bd5994a5d850fab39上面寫著題解.的做法.題解怎麼說的就不說了...說我看完題解和代碼後的明白了什麼...首先一個圓有左右兩邊界
Time of Update: 2018-12-03
這道題題意理解了好一會兒,題目本身不難,就是一個1-0背包。#include<cstdio>#include<cmath>#include<iostream>using namespace std;const int maxn=31;double tab[maxn];double f[maxn][maxn];double max(double a,double b){if(a>b)return a;else return b;}int
Time of Update: 2018-12-03
依然是圓有關的掃描線.感覺額.上一篇說得自己都看不太懂的樣子.這個題目吧。是要問你有哪個圓沒有被其他的圓覆蓋住.說白了就是他的被覆蓋層數為0.和上一篇的題相比.簡單了點。同樣的.沒有相交的圓..啊.直接說做法.加入set的集合的元素是.額.是不相互包含的圓.也就是說兩兩關係是相離.那麼一個圓只要和它上下兩圓無關係,自然也不會和這之外的圓有關係了.然後這裡判斷一個圓的上下,就沒有那麼麻煩了.按圓心位置高下來就行.即能和當前圓發生關係的就只有它上下的圓。畢竟加入set的集合的圓都是沒有關係的.額..
Time of Update: 2018-12-03
打了很長時間的草稿,最後一小時開敲,敲完比賽已經結束了,耶 不知道手速怎麼會這麼慢,很遺憾沒能在比賽中A掉。不過就算多給我點時間估計也沒用,賽後探索方法有些漏洞,代碼其他地方也有些小bug。 好了,題目大意就是給你幅圖,N點M邊,每個邊上有個電阻,求1、N之間的等價電阻。 一開始往網路流想了下,萬物皆流麼,可能是給些個限制,讓電流流過去求個最大流什麼的(網路流不太熟=。=,瞎想想)。然後在找每個邊的容量時發現了某些邊上的電流是有確定關係的,比如給個Y形電路,那下面流上來的電流就
Time of Update: 2018-12-03
1 3 4這三個位置無法移到其他位置。 每個位置移到下個位置後奇偶性改變,模3結果也有固定變化(0->0,1->2,2->1),比如模3為1的奇數可以移到模3為2的偶數,再走一步又走到模3為1的奇數,但最終只可能移到模3為1的奇數,也就是1(因為1、3、4中沒有模3為2的),其他類型的數的最終位置也可如此得到。由於移到的最終位置(1 or 3 or 4)是固定的,本身的奇偶性和模3結果也是固定的,那麼移動步數的奇偶性也是固定的。 容易得出模6為0、2、5的位置移動步數為奇,
Time of Update: 2018-12-03
讀清題意#include<cstdio>#include<cmath>#include<iostream>#include<conio.h>using namespace std;const int maxn=10001;int tab[maxn];int f[maxn];int len[maxn];int main(){//freopen("in.txt","r",stdin);int
Time of Update: 2018-12-03
STL AlgorithmsStandard Template Library: Algorithms The header <algorithm> defines acollection of functions especially designed to be used on ranges ofelements. A range is any sequence of objects that can be accessed throughiterators or
Time of Update: 2018-12-03
可行性背包迴圈驗證的時候應該迴圈到sum/2就可以了。我這裡是迴圈到最後了。 #include<cstdio>#include<cmath>#include<iostream>#include<vector>using namespace std;const int maxn=500;const int maxdp=20001*6;bool dp[maxdp];int main(){freopen("in.txt","r",stdin);int
Time of Update: 2018-12-03
http://www.nocow.cn/index.php/%E5%88%86%E7%BB%84%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98#include<cstdio>#include<cmath>#include<iostream>#include<vector>using namespace std;const int maxn=110;int A[maxn][maxn];int dp[maxn];int