Time of Update: 2018-12-05
題意:在一個n*n的矩陣中,每個(x,y)座標有個洞,在任意時刻(從上一時刻開始到目前時刻結束),任意位置可能會探出一個鼴鼠的頭,如果用鎚子 打中即得一分,鎚子活動的範圍是以d(1=<d<=5)為半徑的圓中可到達的座標點,並且是直線移動,鎚子可以移動到任意位置,同一時間同一 地點不可能出現兩隻鼴鼠,給出
Time of Update: 2018-12-05
題意:John有一筆錢,他想投資來獲得利潤。現在給出他的本金,準備投資的時間長,可以購買的基金種類,以及每一種基金的購價與利息。求他可以獲得的最大收益。每一年的利息算入下一年的本金。題解: 由於基金的購價都是1000的倍數,所以可以將本金除1000來縮小背包。#include <cstdlib>#include <iostream>using namespace std;int dp[450000], w[11], v[11];int main(){int n,
Time of Update: 2018-12-05
題意:Wshxzt從根節點1開始在蘋果樹上遊歷,樹上的每個節點都會存在apple[i]個蘋果,從一個節點到它的鄰節點耗費步數1。現在Wshxzt可以步行step步,求她可以得到的最大蘋果數量。題解:dp[0][i][j]表示以i為根節點步行j步,且最終回到i,可以得到的最大蘋果數量。dp[1][i][j]表示最終不回到i可以得到的最大蘋果數量。#include <iostream>using namespace std;#define N 105#define K
Time of Update: 2018-12-05
題意:一直小蝸牛從樹頂掉了下來,但是它的殼子還留在上面。於是它有從根節點去尋找它的殼子(但是它完全忘記了之前走過的路)。在路途中有些節點上可能住著蟲子,蟲子可以告訴小蝸牛它之前來沒來過。假如殼子在每個葉子節點上的機率相等,求出蝸牛所需要走得路程的期望。題解:關鍵是確定子節點的訪問順序,使得每次訪問下一個節點時重複的步數最小。那麼最終的到的總遍曆步數也就是最小的了。順序一旦確定就不可以更改了,假如一個節點有5個子節點1 2 3 4 5, 訪問順序定為 3 4 1 2
Time of Update: 2018-12-05
#include <iostream>using namespace std;#define N 500#define max(a,b) (a>b?a:b)#define min(a,b) (a<b?a:b)int dp[2][N]; /* dp[i][j] 表示用i個雞蛋測試第 j 層樓所需要的最小步數 */void count ( int n ) {int i, j;/* dp[1][i] = i 已經是最優解,是準確值。而dp[2][i] =
Time of Update: 2018-12-05
Mem系列:void *memset(void *dest, int c, size_t count);將dest前面count個字元置為字元c. 返回dest的值.void *memmove(void *dest, const void *src, size_t count);從src複製count位元組的字元到dest. 如果src和dest出現重疊, 函數會自動處理.返回dest的值.void *memcpy(void *dest, const void *src, size_t
Time of Update: 2018-12-05
1、禮物街 http://www.giftjie.com/ 還在為送禮發愁嗎?在這裡和你一起發現禮物.分享禮物.收藏禮物 2、心理網-改變從這裡開始 http://www.xinli001.com/ 一個簡單、溫暖的心理網站,心理學愛好者可以關注。有很多優質的心理測試和 治癒系圖片;另外,你有心理困惑這裡也可以找到答案。 3、囧囧囧 http://www.3jiong.com 每天奉上全網最火爆的3個囧視頻~牛人牛事、爆笑惡搞、星聞動態…大千永珍,
Time of Update: 2018-12-05
題意:求最大公用子序列,並按字典序輸出最大子序列。題解:題目的痛點在於輸出。看了http://www.cppblog.com/varg-vikernes/archive/2010/09/27/127866.html1.用 pos1[ i ] [ j ] 代表字元 'a'+j 在 s1 中第 i 個字元前最後出現的位置 ( 即 1 -- i 這個範圍內,最後出現的位置 )。 若字元 'a' + j 不存在,那麼pos1 [ i ] [ j ] = 0;pos2
Time of Update: 2018-12-05
題意:公司打算裁員,裁掉某些員工可以獲得正收益,而裁掉某些員工會遭受損失。並且員工之間往往存在一定的關係,當某個員工被裁掉之後,在他的關係之下的所有員工都必須被裁掉。現在要求如何裁員才能獲得最大收益。題解:s->正權, 負權->t。 ans = 正權和 - maxflow, 或者 ans = 正權和 - 沒有被裁的正權和 - abs(被裁的負權和) ( 正邊權進入最小割表示該人沒被炒,非正邊權進入最小割表示該人被炒)。至於邊權放大什麼的就不是很理解了····#include
Time of Update: 2018-12-05
#include<stdio.h>#include<string.h>int main(){ int i,j,len1,len2;char str[100],st[100];int sum[100][100];//freopen("e://2.txt","r",stdin); while(scanf("%s %s",str,st)!=EOF){ memset(sum,0,sizeof(sum)); len1=strlen(str); len2
Time of Update: 2018-12-05
題意:將一個8*8的棋盤進行如下分割:將原棋盤割下一塊矩形棋盤並使剩下部分也是矩形,再將剩下的部分繼續如此分割,這樣割了(n-1)次後,連同最後剩下的矩形棋盤共有n塊矩形棋盤。(每次切割都只能沿著棋盤格子的邊進行) 原棋盤上每一格有一個分值,一塊矩形棋盤的總分為其所含各格分值之和。現在需要把棋盤按上述規則分割成n塊矩形棋盤,並使各矩形棋盤總分的均方差最小。 題解:主要弄明白均方差的轉換公式即可。 劉汝佳書116頁。#include <cmath>#include
Time of Update: 2018-12-05
1251 - zlly長了一張包子臉Time Limit: 1000 msMemory Limit: 65535 KbDescriptionzlly長了一張包子臉,他特別喜歡吃糖果,現在他手頭有若干種糖果,每種糖果有個口味值,每種糖果有無數多個。然後婁童鞋也非常喜歡吃糖果,他的口味特別廣泛,他喜歡各種各樣的口味值,他要求zlly用現有的口味值拼出新的口味值。現在,婁童鞋想知道他不能吃到的口味值最大是多少?你能幫他的忙嗎?舉個例子,現在zlly手頭有3,6,10三種糖果,他拼不出口味值為1、2、4
Time of Update: 2018-12-05
題意:給定A, B,求A^B的所有因數之和,並模9901。題解:1: 對A進行素因子分解得 A = p1^a1 * p2^a2 * p3^a3 *...* pn^an. 故 A^B = p1^(a1*B) * p2^(a2*B) *...* pn^(an*B);2:A^B的所有約數之和為: sum = [1+p1+p1^2+...+p1^(a1*B)] * [1+p2+p2^2+...+p2^(a2*B)] *...* [1+pn+pn^2+...+pn^(an*B)].
Time of Update: 2018-12-05
題意:稻田裡的青蛙沿直線跳躍,每一隻青蛙的跳長一定,現在發現稻田裡有許多青蛙跳過的痕迹,根據這些痕迹求跳躍次數最多的那一條路線。題解:注意題目的要求,首先要保證青蛙能從邊界跳到所求路徑的的開始位置,然後跳躍次數少於3的不算。一條直線上的點可以是不同青蛙跳躍的痕迹。先排序,然後枚舉開始的兩個點,其實也就相當於枚舉斜率,然後計算每一條斜率上最多的跳躍次數。#include <algorithm>#include<iostream>using namespace
Time of Update: 2018-12-05
題意:從正方形外圍任意一點出發,到達指定點最少通過幾次線段?(每次只能從線段中點經過)題解:思路一:枚舉外圍起點,串連該點與指定點,相交次數最少的即為答案。思路二:先求出所有線段的中點。以指定點位起點bfs,走到正方形外面的最小步數即是結果。搜尋過程中,相鄰點(u,v)滿足條件:u,v的連線不與其他任何一條線段規範相交。#include<cmath>#include<cstdio>#include<algorithm>using
Time of Update: 2018-12-05
題意:給出一棵樹,至少切幾下,能夠得到一個包含p個節點的子樹。題解:假設節點u包含了cnt[u]個子節點:1,2,3,····cnt[u],每個子節點類似於一個背包,可以加或者不加。 當所有子節點都不加的時候,僅僅包含根節點一個,即dp[u][1]。那麼我們需要對dp[u][1]進行一下初始化。即所有節點都不加的時候,只要切0次就得到根節點,即dp[u][1]=0。#include <iostream>using namespace std;#define N 155#define
Time of Update: 2018-12-05
題意:判斷線段是否與矩形相交(非規範相交)。需要注意的是,當線段在矩形內部時也算作相交。#include<cmath>#include<cstdio>#include<cstdlib>#include<algorithm>using std::swap;#define eps 1e-8#define zero(x) (((x)>0?(x):-(x))<eps)struct Point{double x,y;};struct
Time of Update: 2018-12-05
題意:有一種螞蟻只能向左拐,求它路徑最多可以經過幾個點。並按經過順序輸出點的編號。題解:可以歸納證明一定存在一條路徑,使得螞蟻可以經過所有的點。那麼我們每次只需要找到一個點,使得其餘所有點都在它的左方向···直到把所有n個點都找完。#include<cmath>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>using
Time of Update: 2018-12-05
題意:給定一個字串,將它調整成迴文串。可以在它上面添加或者刪除任意一個字元,但是每增加或者刪除一個字元都有一個代價,求代價最小的方案。題解:添加和刪除的操作其實一樣,所以只要求出添加和刪除的較小值,作為對該字元進行操作的代價。#include <iostream>using namespace std;int dp[2001][2001], cost[30];char s[2005];int min ( int a, int b ){return a < b ? a : b;}
Time of Update: 2018-12-05
題意:題意:一個row*col的矩陣,每個格子內有兩種礦yeyenum和bloggium,並且知道它們在每個格子內的數量是多少。,最北邊有bloggium的收集站,最西邊有 yeyenum 的收集站。現在要你在這些格子上面安裝向北或者向西的傳送帶(每個格子自能裝一種)。問最多能採到多少礦(yeyenum+bloggium)?題解:注意一下每個格子只能向西或者向北,某個格子假如被選定向西,那麼它所在的這一行全都向西。#include <iostream>using namespace