Time of Update: 2018-12-03
用樹狀數組很簡單,太晚了,貼下代碼睡覺去。。。另,研究線段樹的時候,發現網上流傳著有幾種不同的線段樹,最正宗的是以單位區間為單位,只能處理線段;另外還有幾種葉子結點是點的,這種也可以用來處理點,所以這題是可以用這種線段樹做的。還搞不太清楚它們之間的關係。mark一下,明天再說。。。代碼#include<cstdio>#include<cstring>#include<iostream>using namespace std;inline int Rint()
Time of Update: 2018-12-03
題目: 加分二叉樹【問題描述】 設一個n個節點的二叉樹tree的中序遍曆為(l,2,3,…,n),其中數字1,2,3,…,n為節點編號。每個節點都有一個分數(均為正整數),記第 i個節點的分數為di,tree及它的每個子樹都有一個加分,任一棵子樹subtree(也包含tree本身)的加分計算方法如下: subtree的左子樹的加分× subtree的右子樹的加分+subtree的根的分數 若某個子樹為空白,規定其加分為1,葉子的加分就是分葉節點本身的分數。不考慮它的空子樹。
Time of Update: 2018-12-03
題目就不用描述了吧。今晚看了位操作,matrix67寫的專輯 http://www.matrix67.com/blog/archives/122 裡提到這個題。(今天講搜尋的時候也提到這個題 = =)就按這個方法寫了一下,其實就是dfs,思路一致,轉移很直觀 shr(>>) shl(<<),更新每行禁點。速度相當快。而且很方便改成n皇后求解。//8皇后//92//TIME =
Time of Update: 2018-12-03
今天去做了一場比賽,進去的時候還剩半小時,沒出題。。。。都是跟“數”有關的題,很短小,挺有趣。HIT summer training Contest 11Solved ID Title RatioA step number A (22 / 64) 34.38%B another number game B (13 / 47) 27.66%C C (1 / 5) 20.00%D D (13 / 23) 56.52% ---------------D題是成都網路賽B題,見HDU
Time of Update: 2018-12-03
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=114&page=show_problem&problem=1346 題目大意: 就是輸入兩個字元序列,輸出兩個序列的最長公用子序列(注意序列跟串的區別)。 題目類型: 經典dp /LCS 分析:
Time of Update: 2018-12-03
題目大意:用5種面額的硬幣找錢(錢恰好),求方法數。要注意 1.Note that we count that there is one way of making change for zero cent. 2. Your program should be able to handle up to 7489 cents. 題目類型: dp 分析: 記di 為要找i元錢的方法數,則di= { ∑(dj)| j=i-ck, k = 0~4 } ck
Time of Update: 2018-12-03
題目大意:給出一個圖,求某點到某點所必須忍受的最小噪音(即所經過路徑的相鄰兩點的權的最大值最小)。中文翻譯題目連結題目類型:圖論 /
Time of Update: 2018-12-03
今天集訓內容是按位DP,個人理解可用於整數區間內的特殊類型數的統計問題。XnoZero學長講的方法是遞推DP,但在實際編碼中,有一類針對數的總數的統計使用記憶化搜尋的方法代碼會更加明了,減少了不少狀態的表示。這種寫法一般用於初始化與逐位統計是一樣過程的。學習了這篇部落格,很有啟發:http://www.cppblog.com/Yuan/archive/2011/01/25/139299.aspx舉例為今天集訓三道比賽題目(前兩道比較水)(很遺憾C題求區間最大值的問題不太容易用這個優雅的代碼來解決
Time of Update: 2018-12-03
這道題糾結了好久,很鬱悶,還是題目沒讀好! 要求的是,找出路徑最短的,豆子最多的。參考黨的,用了兩個DIJ,剛開始我試著用一個DIJ,很糾結也沒弄出來,哎。 我悲劇的最短路徑,還有五道題呀。。。我暈 #include <stdio.h>#include <stdlib.h>#include <memory.h>#include <limits.h>#define N 520int n,m,start,end;int bean[N],map[N][
Time of Update: 2018-12-03
比賽時A的, 由於是隊友先寫了wa, 然後我再改的, 所以代碼有點奇怪 = =.方法就是分sqrt(n)組(都取上界), 每組最多有sqrt(n)個數, 然後每組裡數字遞減. 這樣可以保證取到最小的max(正序數, 逆序數).然後就是要保證字典序最小, 方法就是給每組數初始設為1個數, 然後餘下的盡量加在後面,
Time of Update: 2018-12-03
目錄題目這題我不知道為什麼我想了n久,就是沒開敲。傻逼般地覺得n<= 2^31會逾時,果真傻逼。後來比賽結束後敲了一下,程式效率很高啊,尼瑪才反應過來這是按位的,10位每個位搜......,尼瑪超個鬼。。。。 應該說搜的是一個特殊的解答樹,左邊可以盡量展開0-9子節點,越往右結點急劇減小,在輸入 a=1 b=999999999 時,只搜了43758次。反思:記得看劉汝佳的白書的時候他是有提到這種情況的,以後分析要仔細,不要怕超不敢做,好幾次這樣了。。。這代碼寫得很亂#include<
Time of Update: 2018-12-03
這道題好早以前SK就給我們留的,當時不懂就一直沒有寫,今天做ZOJ1542太悲劇了 ,POJ過了,ZOJ就是不過,丫丫的,看到這個1213了,一直在收藏夾裡,沒做,給它A了。。。更深刻滴理解了並查集。。。 做這幾道題我都不敢用cin了。。。光出錯。。。 #include <stdio.h>#include <stdlib.h>#include <iostream>using namespace std;const int N = 1010;int pre[N]
Time of Update: 2018-12-03
http://poj.org/problem?id=1011我表示這也許是我第一次做這種要強剪枝的題目....跪了...先是搜尋狀態搞不清連個dfs都寫不出來....然後是不會剪枝狂TLE....還是看了這位大神的部落格....才把幾個剪枝搞清楚....少了一個都會TLE....傷不起...搜尋狀態:應該要三維狀態, //狀態: [cur][idx][sum] 三維, cur 表示當前長棒, idx表示當前短棒(在構造一個長棒的過程中),
Time of Update: 2018-12-03
求青蛙GG能跳到青蛙MM路線上的最小跳。。。 與1952很雷同很雷同。。 今天上午看了4道題。。。AC兩道了。。。歇歇,洗澡去~~ #include <stdio.h>#include <stdlib.h>#include <math.h>#include <limits.h>#include <memory.h>#define N 202#define F 0.000000001double dist(int x,int y,int
Time of Update: 2018-12-03
題目連結我一開始的想法就是遞推,維護一個cover值,表示能用第二階段等待的時間來幫下一組資料cover掉多少時間。但是我竟然沒有考慮到可以不用等待下一組的第二段時間(即 t 時間)完成而馬上進行第三組的 d 時間。這裡wa了。改後艱難AC....殘了....代碼:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace
Time of Update: 2018-12-03
這完全是回顧以前的知識了...寫的時候一些似曾相識的手法漸漸冒出來........- -然後其實題目都很水....但是看在我WA到現在的份上...貼出來....HDU 1241#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<string>#include<vector>#include<map>#include&
Time of Update: 2018-12-03
未完 最近看到有人這樣用 inline int Rint(){ int x; scanf("%d", &x); return x;} //int Tcase = Rint(); 來讀取一個整數顯然是為了代碼能敲得更快,但是這個跟宏有什麼區別和共通之處呢。我找了一些資料。 ①inline函數(摘自C++
Time of Update: 2018-12-03
這絕對是樹狀數組的基礎題了。(ps. CSDN的文字編輯器真是弱爆了, 新版部落格真是弱爆了,CSDN尼瑪的弱爆了 ~)#include<cstdio>#include<cstring>#define FF(x1, x2) for(int i=x1; i<x2; i++)int Rint() {int x; scanf("%d", &x); return x;}#define MAXN 15002#define MAXX 32000int c[MAXX];/
Time of Update: 2018-12-03
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=114&page=show_problem&problem=47 題目大意:判斷 兩個排列的 最多
Time of Update: 2018-12-03
在網上搜的二分圖模板題。題意: A、B兩個機器各自有不同的工作模式,給出一個工作序列,每項工作,A、B在各自的某種特定模式下可以完成。但是,機器開始的時候模式都為0,換模式,需要一次restart,要求總共的restart次數最少是多少。類型:二分圖最大匹配 / 最小點覆蓋 /