Time of Update: 2018-12-05
#include <stdio.h>#include <string.h>#include <stdlib.h>int v;int q[20000];int map[300][300], vis[300], val[300];void bfs( int x ){int front, rear, a = 0, nx, next;front = rear = 0;q[front++] = x;val[x] = 1;vis[x] = 1;while( front &
Time of Update: 2018-12-05
/*這道題因為int stack[] 寫成了 char stack[] 導致 括弧超過255就出問題了。。。。。。讓我糾結了好幾天,真悲劇,以後檢查題一定要從變數類型,開始檢查*/#include <stdio.h>#include <string.h>char str[100100];int stack[100100];int flag[100100];int len, i, num, max, b, top;int main(){memset( flag,
Time of Update: 2018-12-05
map 的原始定義(define (map p sequence) (if (null? sequence) '() (cons (p (car sequence)) (map p (cdr sequence)))))accumulate 的定義(define (accumulate op initial sequence) (if (null? sequence) initial (op (car
Time of Update: 2018-12-05
題目連結題意:Farmer John 放牧cow,有些草地上的草是不能吃的,用0表示,然後規定兩頭牛不能相鄰放牧。問你有多少种放牧方法。 狀態壓縮dp其實就是用二進位來表示所有的狀態,比如這題, 我們在某一行可以這樣取0 1 0 1 1 0
Time of Update: 2018-12-05
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#include <ctype.h>char ch[50][50];char find[20][80];int m, n, t, T;int equal( int y, int x, int len, int turn ){int i, j, k, flag[8], value;for( i
Time of Update: 2018-12-05
一維樹狀數組 一維數組相信大家平時都是經常使用,對於一維數組而言,查詢以及求和的時間複雜度分別為O(1) 和 O(n) 。 今天我們介紹一個新的資料結構——樹狀數組英文名稱為Binary Index
Time of Update: 2018-12-05
題目連結題意:在一個n*n的棋盤上放m個車,使得各個車之間不相互攻擊。有多少种放法?組合數學解法 現在n行中選出m行,C(n,m),再在n列中選出m列隨便放A(n,m),答案為C(n,m)*A(n,m)。#include <stdio.h>#include <string.h>typedef __int64 LL;LL A(int n, int m){ LL ans = 1; for (int i = n-m+1; i <= n; i++)
Time of Update: 2018-12-05
題目連結題意: 輸入兩個字串,計算二串在一串中出現的次數。 裸裸的KMP,參考劉汝佳《演算法競賽入門經典訓練指南》 P212 或資料結構。代碼如下://light oj 1255 - Substring Frequency (KMP)//2013-05-13-19.12#include <stdio.h>#include <string.h>const int maxn = 1000006;char a[maxn];char b[maxn];int
Time of Update: 2018-12-05
二元堆積是完全二叉樹二元堆積滿足堆特性:父節點的索引值總是大於或等於(小於或等於)任何一個子節點的索引值,且每個節點的左子樹和右子樹都是一個二元堆積(都是最大堆或最小堆)。當父節點的索引值總是大於或等於任何一個子節點的索引值時為最大堆。 當父節點的索引值總是小於或等於任何一個子節點的索引值時為最小堆。最小堆: 1 最大堆: 11 / \ / \ 2 3
Time of Update: 2018-12-05
1005 威威貓系列故事——籃球夢 Time Limit: 0.1 Seconds Memory Limit: 32768K 威威貓十分迷戀籃球比賽,是忠實的NBA球迷,他常常幻想自己那肥碩的身軀也能飛起扣籃。另外,他對籃球教練工作也情有獨鐘,特別是對比賽的戰術,投籃選擇方面也是很有研究,下面就是威威貓研究過的一個問題:一場NBA籃球比賽總共48分鐘,假如我們現在已經知道當前比分
Time of Update: 2018-12-05
這道題很簡單,一看知道是二分最大匹配的題目。只要是用來聯絡模板的。代碼:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int LN = 110;const int RN = 310;int ln, rn;int g[LN][RN], cx[LN], cy[RN];//儲存相應的匹配bool used[RN];bool dfs( int u ) {
Time of Update: 2018-12-05
1003吉哥系列故事——臨時工計劃Time Limit: 1.0 Seconds Memory
Time of Update: 2018-12-05
還是一樣,熟悉模板!然後就是先這個樣的題目,同一行活同一列只能有一個子的題目,可以用二分匹配來做,也就是每一行只能陪一列,不能重複!這道題,也是一個一個點試出來的,看看有沒有等價邊!代碼:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int const N = 110;int n, m, k, g[N][N];int cx[N], cy[N];bool
Time of Update: 2018-12-05
這道題就是求最小頂點覆蓋,其中要注意的是,當有一個任務可以用mode 0來實現的,就可以不加邊,因為不需要重啟!先把0的都做完,再換機器,就相當於沒有0的這個要求了,因此,忽略mode 0可以做的任務。開門紅!Yes!代碼:#include <cstdio>#include <cstring>const int N = 110;int ln, rn, k, bmap[N][N], cy[N];bool vis[N];bool dfs( int u ) { for (
Time of Update: 2018-12-05
這道題首先判斷一是不是二部圖,如果是的話,就進行二分匹配代碼:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 300;int n, m;int color[N];int g[N][N], linker[N];bool used[N];bool dfs( int u ) { int i; for ( i = 1; i
Time of Update: 2018-12-05
這道題,wa死我了!宇神要是不提醒我,我估計我還wa著呢!題不難想,但是陷阱是不少!首先,輸入的i和j不一定是從小到大;其次,i和j的輸出位置不可以調換;還有,ans和cnt還有f[N]最好是用longlong類型;最後,要注意一個f的大小,用f儲存的時候,要判斷一下下標是否越界,最大的tmp不能超過N!AC實屬不易,考慮問題要全面,清楚!最佳化的後的代碼:#include <cstdio>#include <cstring>#include <algorithm&
Time of Update: 2018-12-05
和上一道題是一樣的嘻嘻 ,一次過題感覺很棒,不過這題也是真的很水的題目#include <cstdio>int n, x, ans, s0, t2;int main(){ while ( scanf("%d", &n) != EOF ) { s0 = t2 = 0; scanf("%d", &ans); if ( ans == 1 ) s0++; else if ( ans > 1 ) t2++;
Time of Update: 2018-12-05
文章目錄 Sample Input 題目: 有三堆石子,兩個人輪流做這樣的操作,將三堆石子中的一對扔掉,從剩下的兩堆中,選一堆並將其分成兩堆,最後不能操作的人勝Sample Input51 1 12 2 25 6 74 2 212 28 4要注意,偶數只能拆成兩個奇數或者兩個偶數;一個奇數只能拆成一個奇數和一個偶數 由於1 1 1是一個必輸態,面對1 1 1的人一定是輸的那個,而對於三個奇數的狀態來講,面對這種情況
Time of Update: 2018-12-05
題目:有n個作業,每個作業正好一天做完。每個作業都有一個到期日,如果在deadline之前完不成,就要扣掉相應的學分。求解,最少扣掉多少學分分析:這是一道比較簡單的貪心,求最少要扣多少學分,那麼就要按照學分排序。但是有一個到期日的限制,所以每個作業要在到期日前完成才有效那麼就是先按照學分排序,如果分數相同deadline時間後的優先完成(這樣可以將前面的留出來,以便後面的比較高的學分有比較靠前的deadline可以有得選擇,保證結果最佳)然後用一個bool的數組,表示每個日期是否被使用,每次要判
Time of Update: 2018-12-05
題目連結題意: 給你一個字串,在字串尾部加上一些字元,使這個字串變成一個迴文串(正反讀都一樣的字串),求該迴文串的最小長度。思路: 在light oj裡這個題目是屬於KMP分類的,但乍看好像不是kmp,因為只有一個字串。要想的到一個迴文串,把該字串翻轉接到原串後面必然是一個迴文串,但並不一定是最短的。我們必須考慮怎麼把兩個串盡量融合在一起,這就要看翻轉串的前段與原串的後段有多少是匹配的了,這裡就用到了KMP演算法。代碼://2013-05-13-20.01#include