Time of Update: 2018-12-03
http://acm.hdu.edu.cn/showproblem.php?pid=4686多校的第9場比賽,這題是這場比賽中的第一題,似乎是一道簽到題,不過,我第一眼看到,深深地表示不會,唯一想到的就是想去尋找它的迴圈,然後就YY去做它了。好在lele犀利的發現了它是一道矩陣題(表示矩陣做得很少,線代接近白學,orz),然後lele果斷敲掉了它。好吧,賽後在acmood學長的教導下,我自己敲了一個。思路 : 夠造出一個二維矩陣A來,使得A × [ai * bi ai bi 1 S(i)]
Time of Update: 2018-12-03
Problem Statement The boys in the yard are going to play soccer. There are N+2 boys, two of which have been chosen as captains. Now they want to divide the other N children into two teams. For convenience, we number the boys who are not captains
Time of Update: 2018-12-03
題目 前幾篇文章中出現了“靠”等字眼,一次偶然的機會百度到了一篇轉載自我的文章,轉載者將問中的包含“情緒”的語句全部刪掉了,我這才注意到,最近我變得很容易情緒不好!!我錯了,我想起了高中一老師說的“心靜如水,激情似火”!看來我需要修鍊的東西還很多啊…… 題目大意:給定10^5的一個數組,(10^5次)查詢給定區間中出現次數和這個數的值相同的數的個數例如:7 23 1 2 2 3 3 71 73
Time of Update: 2018-12-03
題目大意:,給定n個點形成環,中間一個點0,每個點到0連一條邊,問從0開始,經過m條邊有多少條路徑使得回到0點,每個點每條邊都可以經過多次。輸出路徑數思路:這個題目如果不考慮資料規模的話,用矩陣乘法可以解這個題,詳見矩陣的十種應用,那個適用於100個點的任意圖。這個題n<=1000,m<=5000
Time of Update: 2018-12-03
這題與1753點燈遊戲很類似,只不過變換狀態的方式不一樣罷了..狀態壓縮+BFS就可以解決,與1753不同的就是要記錄路徑,可以通過給隊列中的元素加上pre和next屬性來實現.已耗用時間690MS,感覺挺慢的,後來在dicuss裡看到了一位大牛的總結,很好的方法啊..有時候做題前多思考真的是很重要啊,即使是對一些很面熟的題目.“先看一個簡單的問題,如何把'+'變成'-'而不改變其他位置上的狀態?答案是將該位置(i,j)及位置所在的行(i)和列(j)上所有的handle更新一次,結果該位置被更新
Time of Update: 2018-12-03
每次進行一次"徹底"的搜尋.所謂徹底的搜尋,就是一次性一條直線走過去,因為我們轉了一個彎之後無論走多遠都不會增加轉彎數;0123000001210000比如上面這個表格,我們從 (4,3) 1出來後往下,轉彎數量為1(我們也記錄一次轉彎,最後判斷轉彎數不超過3而不是2)到達(4,4) 再轉個彎往左走,我們可以一直走到(4,1) 都算2個彎.這就是 一次 "徹底" 的搜尋!/* *HDU 1175 *fuqiang11 *BFS *2013/7/30 *關於轉彎次數,本來第一次
Time of Update: 2018-12-03
1.安裝gcc: sudo apt-get install build-essential如果要安裝 10.05的 可以直接: sudo apt-get install codeblocks或者從應用中心找codeblocks2:(安裝12.11,或從10.05 更新)這個軟體的:http://www.codeblocks.org/downloads/26
Time of Update: 2018-12-03
題目大意:給定一個a、b構成的字串,每次可以消去長度不小於2的連續相同字元,問給定字元能否消成空串。思路:首先我的思路就是搜尋,當然暴搜的話逾時。然後我就想著記憶搜尋的狀態,讓狀態變少!我記錄的狀態時:剩餘字母的數量和ab變成01後位元值,打包成pair#include<cstdio>#include<cstring>#include<iostream>#include <map>#include <utility>using
Time of Update: 2018-12-03
*2 就是2次了;呵呵題目很坑爹,描述模糊不清.注意幾點:*1.Y點M點相當於牆,不能穿過(雖然不符合常理);*2.@可以穿過另外,題目其實說是求距離和最短還差不多,時間最短不合理了,每人都需要3分鐘到那兒,一共需要多少分鐘,還是3分鐘.但是他疊加了;這到是題外話;代碼:/* *HDU 2612 *fuqiang11 *BFS *2013/7/31*/#include <iostream>#include <cstdio>#include <cstdlib>#
Time of Update: 2018-12-03
Pick 定理,1899年設 Γ 為平面上以格子點為頂點之單純多邊形,則其面積為 其中 b 為邊界上的格子點數,i 為內部的格子點數。(8)式叫做 Pick 公式。/* *POJ 1265 *fuqiang *幾何,Pick定理 *2013/8/7*/#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include
Time of Update: 2018-12-03
題目大意:給定一個1-n的排列,依次將這些數插入到二叉排序樹中,問總共有多少個排列使得構成的二叉樹和給定的排列構成的二叉樹相同本題的思路就是:先構成要求的二叉排序樹,然後再在樹上進行dp狀態轉移為:dp[rt] = dp[lson]*dp[rson]*c(lson,sum);lson 表示左子樹的點的個數,sum表示左右子樹點的個數之和。c(a,b) 表示b中過選擇a個的組合數。狀態轉移應該是比較好理解的吧 代碼寫的比較挫,畢竟不常寫二叉樹#include
Time of Update: 2018-12-03
很少遇到經典的題目,這個不算經典但是卻也非常精彩。題目題目大意:給定兩個兩個1-n的排列,定義兩個排列的距離為:所有相同數字之間距離的最小值,More formally, it's such minimum|i - j|, that ai = bj.定義Acyclic shift number i (1 ≤ i ≤ n) of permutationb consisting from n elements is a
Time of Update: 2018-12-03
曆盡千辛萬苦 終於把完全背包弄明白了,由此可鑒,對於動態規劃的子結構 還是不太熟悉。加油!!!吖颯 相信自己!我可以的。。。題意:選擇硬幣使瓶子滿(W),且value最小。看懂題就知道
Time of Update: 2018-12-03
Problem Statement F is a function that is defined on all real numbers from the closed interval [1,N]. You are given a vector <int>Y with N elements. For each i (1 <= i <= N) we have F(i) =Y[i-1]. Additionally, you know that F is
Time of Update: 2018-12-03
對數位處理:快速冪模+二分求和 求(∑A^b)%C對矩陣的處理同理;只是自己定義一些函數來表示 + * ^ %/* * POJ 3233 * fuqiang * 矩陣快速冪+二分 * 2013/7/31*/#include <iostream>#include <cstring>#include <cstdio>#include <cstdlib>using namespace std;#define maxn 30+3int n, k,
Time of Update: 2018-12-03
叉積+二分如果toys在當前板的左邊 cross(L,toys,U) < 0反之在右邊會 > 0根據這個,我們進行二分;為什麼最後得到的不是mid而是l呢?我們來看這張圖.加入現在是 l = 2 , r = 5;mid = 3; toy在4紙板右邊,5紙板左邊,執行l = l +1 = 3, r = 5, mid = 4;依然>0 執行, l = l + 1 = 4,r = 5, mid = 4; 依然大於0 ,執行l = l + 1 = 5, r= 5, 退出; 此時l =
Time of Update: 2018-12-03
已知三個點 p0,p1,p2 的叉積函數 cross:double cross(point p0,point p1,point p2){ return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y) ;}叉積的一個重要性質,判斷兩向量互相之間的順逆時針關係。若 P×Q>0,則 P 在 Q 的順時針方向;若 P×Q<0,則 P 在 Q 的逆時針方向;若 P×Q=0,則 P 和 Q 共線,但可能同向也可能反向;注:Distance
Time of Update: 2018-12-03
題意:給出n條線段,判斷是否存在有一條直線,滿足所有的線段在直線上投影后至少有一個公用點(與所有線段都會相交)開始想錯了,因為是再已經給的線段中 是否存在選一條做直線,使得它與所有線段相交;這樣也能過sample input;害我找了一天了;#include <iostream>#include <cmath>#include <cstdlib>#include <cstdio>using namespace std;const double
Time of Update: 2018-12-03
題目意思:給出8個數值 = 4個座標 = 2條直線問兩條直線的關係: 相交(交點), 共線,平行;#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>#include <queue>using namespace std;#define INF 0x3
Time of Update: 2018-12-03
題目串連該題的dp狀態是dp[i][j] 表示前i時間第一個停機坪有j個飛機飛出時的最大值。由於只有兩個停機坪,所以選擇的第一個的只確定了,那麼第二個也就確定了。當然,本題還存在飛機不夠飛的情況,這個可以提前處理點(0,0 且前面的飛機都飛光了)仔細想想 雖然麻煩點,但是並非不可解。#include <iostream>#include <stdio.h>#include <string.h>using namespace std;#define N 501