Time of Update: 2018-12-07
"我們不會憑空得到世界:我們借持續的經驗,分類,記憶,再聯結才創造我們的世界" 1.樹 2.電燈開關 3.凳子 4.汽車 5.手套 6.槍 7.骰子 8.溜冰鞋(眼鏡,奶罩) 9.貓 10.保齡球 11.球門 12.蛋 13女巫 14.戒指 15薪水 16.(糖果)帆船 17雜誌 18.花姑娘(投票亭) 19.高爾夫俱樂部 20.煙
Time of Update: 2018-12-07
http://acm.hdu.edu.cn/showproblem.php?pid=4081 解題報告:先求最小產生樹,並把這棵樹記錄下來,用low,和pre數組然後dp數組表示最大邊,這個資訊可以在求prim的時候得到。然後不斷枚舉任意兩點修魔法路。那麼這條路可能在最小產生樹上,或者不在。如果不在則替換到這兩點之間的在mst上的最長路。dp數組如果在咋直接替換到mst上的路 也是dp數組View Code
Time of Update: 2018-12-07
http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id=24019根據性質來求解任何一個合數都可以表示成幾個質數的乘積,質數的乘積是本身。任何一個數都可以表示成幾個素數的和,素數是他本身比如要算 10!可以最大整除除以2 的多少次方 a:10 9 8 7 6 5 4 3 2 1a列的數除以2 變為(取整)b:5 4 3 2 1同理得c:2 1那麼ans=10/2+5/2+2/2可以這樣考慮 因為是階乘的,所以
Time of Update: 2018-12-07
"********************************************" _vimrc/_gvimrc for windows" BY Douboer"********************************************"" echo "loading _vimrc ... ""set nocompatiblesource $VIMRUNTIME/vimrc_example.vimsource $VIMRUNTIME/mswin.vimbehave
Time of Update: 2018-12-07
一:待用資料成員的出現是為瞭解決這樣一類的問題的:讓所有的對象共用一個對象。比如,現在定義一個銀行卡的類,有兩個資料成員,money的總數num 和 利率rate。因為rate對於所有的對象是一樣的,如果所有的對象都有一個rate資料成員(如下面的類),就會使效率降低:1 class card{2 public:3 int num;//總數4 int rate;//利率5 card (int num,int rate):num(num),rate(rate){}6
Time of Update: 2018-12-07
http://acm.hdu.edu.cn/showproblem.php?pid=1421剛開始想的時候,想轉化成背包來做,但是不好表示,然後考慮到dp中的有幾個相關元素,這裡有兩,一個是物品個數,一個是選擇的對數,那麼有了狀態 dp[i][j]表示前i件物品選擇j對所付出的代價,那麼對於第i件有選與不選兩種,所以 dp[i][j]=min((dp[i-2][j-1]+charge(weight[i-1],weight[i])),dp[i-1][j]);即這件物品要選的話那麼前一件和他是一對的
Time of Update: 2018-12-07
文檔線上預覽研究系列總體思路文檔產生技術細節利用百度閱讀器 之前的“文檔線上預覽:總體思路”受到很多朋友的歡迎,為此我繼續講一下文檔線上預覽兩個步驟的一些技術細節。以下我以C#語言和Windows平台為例展開做一些介紹。 請記住,本文講的是文檔轉化為pdf再轉化為其他格式的方法,不討論轉化成的flash如何展示的問題(暫且假設用FlexPaper來展示吧)。文章後面附帶本文講到的相關操作的源碼和軟體下載,有些軟體需要購買授權才能使用。四項基本操作1、調用Windows印表機列印文檔Code
Time of Update: 2018-12-07
http://acm.hdu.edu.cn/showproblem.php?pid=4160轉化為二分圖的最小路徑覆蓋問題。那麼答案就是n-最大匹配數View Code #include<iostream>#include<string.h>#include<algorithm>#include<stdio.h>#include<vector>#define maxn 10000using namespace std;int
Time of Update: 2018-12-07
http://poj.org/problem?id=2385和天上掉餡餅那個差不多。dp[i][j]表示第i分鐘移動了j步。一開始直奔餡餅的那個想法,所以就需要三唯的: i 第幾分鐘 ,j 哪個位置 ,k 移動了幾步但是本題 只要兩個位置 ,所以可以用k來表示了j所以就有了狀態轉移方程:dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+t[i][(j+1)%2];另外要注意初始化:View Code
Time of Update: 2018-12-07
http://livearchive.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2081解題:很暴力的spfa壓線過了。。View Code
Time of Update: 2018-12-07
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3633兩種解法:自己的解法是,因為當時考慮到開visit數組10的31方太大了,所以首先將給定的數離散化,然後對於在範圍內的每一個數和他所在的數組中的下標連邊。詢問的時候,遍曆查詢範圍,對於每一個數,如果這個數所連的邊中下標有在這個數之前且在查詢範圍內的那麼輸出這個數就可以了。**********開始的時候ok搞成了小寫,wa到吐血。。。。#include<iostr
Time of Update: 2018-12-07
http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id=24028其實bfs 和dfs 兩個的原理是一樣的,都是找到最深的,不過都需要兩遍第一次找到深度最深的,第二次以深度最深的 再找最深的View Code
Time of Update: 2018-12-07
memset的功能是將一快記憶體中的內容以單個位元組逐個拷貝的方式放到指定的記憶體中去。如memset(dp,0,sizeof(dp))其中dp為一個int型數組,因為int為4個位元組,那麼每一個位元組的位置上都放 00000000 最好方的就是 00000000 00000000 000000000 00000000 將該二進位轉化為10進位後為0如果放-1 。則放的是 11111111 11111111 11111111 11111111 (每一個8為是-1的補碼。)轉化為十進位後也是-1
Time of Update: 2018-12-07
序:編程是一種技藝,一種需要用心學習的技術。也許,只有在長久的學習之後,我們才會開始明白書中提到的“hacker”真正含義編程是一種技藝,用最簡單的話表述,編程可以歸結為讓電腦做你想要它做的事情,作為程式員,你即是傾聽者,又是顧問;既是解釋者,又是發號施令者。不不應該局限於任何特定的技術,而是應該擁有足夠廣博的背景和經驗基礎,以讓你能在特定的情況下選擇好的解決方案,你的背景源自對電腦科學的基本原理的理解,而你的經驗來自廣泛的實際項目,理論和實踐的結合是你強大起來。誰應該閱讀本書本書的目標讀者是想
Time of Update: 2018-12-07
http://acm.hdu.edu.cn/showproblem.php?pid=2571就是很普通的根據題意遞推了。不過題意有個坑的地方,有負值。所以初始化必須為-inf。被坑了好長時間。另外 不知道為什麼 define 負數就錯的 ,非得 改成 const int inf 。以後就這樣用吧。和以前比賽做的那個走格子幾乎是同樣的。View Code
Time of Update: 2018-12-07
http://livearchive.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=697題意:給定有向非循環圖,每個點代表一個城市,一些城市之間有邊,在城市上放傘兵,傘兵可以管理在他這條路徑上的所有城市,問最小放多少個傘兵,可以經過每一個城市,就是二分圖的最小路徑覆蓋View Code
Time of Update: 2018-12-07
http://livearchive.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3074之前寫過這類型的題目,為什麼比賽的時候就腦抽了呢,因為要最短的改動達到目的,所以我們可以這樣想,利用dis【a】【b】來表示改動了b條邊到達a點。那麼對於原圖中的邊其實我們還加了一些邊。如原圖中a與c相連,我們還加了dis【c】【b+1】與即dis【a】【b】的
Time of Update: 2018-12-07
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2972一開始以為是那種類似加血的題目,但是這個題和加血的有個區別就是,是每一段有一個速度值,表示成加血的那樣的狀態有點複雜。所以,表示成簡單一點的dp[i][j]表示到達第i段還剩j的force。所以顯然根據題目所說的:有狀態轉移方程:dp[i][j]=min(dp[i-1][j]+t2,dp[i][j]); if(j>=f1)dp[i][j-f1]=min(dp[i
Time of Update: 2018-12-07
#include<iostream>#include<string>#include<stdio.h>#include<stdlib.h>using namespace std;class boy{ string name; int age; public: boy(string name,int age) { name=name; age=age;
Time of Update: 2018-12-07
http://acm.hdu.edu.cn/showproblem.php?pid=1176開始對dp有感覺了,就是能夠覆蓋所有的狀態,而且要有狀態轉移方程,即遞推關係。那麼這題就是,利用dp【i】【j】表示在第i秒在位置j可以獲得的最大麵包數,那麼他可能從前一秒的左邊,或者右邊,或者原地不動來,那麼著就是狀態了。對於0和10這兩個點要特殊處理。因為第一秒在位置5,所以初始化的時候要把第一秒的初始化了。初始化: dp[1][4]=map[1][4]; dp[1][5]=map[1]