有一段時間不寫並查集了,結果寫的時候手生,寫錯了!老大給了這道題, 我開始以為老大給的應該是搜尋的題目,分析了一下,搜尋是可以做的,但是搜的過程比較麻煩,後來看到了 a single walk,看來就是一筆換的問題的,需要回到home,連回家的過程都不能走原來的路,所以是迴路!我看了好幾遍題目,才讀得徹底,它其實是個無向圖的歐拉迴路!說一點體外話,與題目關係不大,我覺得ACM最重要的,除了學習各種演算法以外,還有就是分析問題,找到問題的最本質,然後解決問題!所以說,分析問題的能力是非常重要的……
暴力這一章的基礎,枚舉的題目。#include<cstdio>using namespace std;typedef struct Point{ int x,y;}Point;int main(){ int n,a,b,numofp,num1,num2; Point point[100]; while(scanf("%d",&n)!=EOF&&n) { numofp=0;
題目連結給你一個n,計算出1 ≤ a ≤ b ≤ c ≤ n.使得由abc構成的三角形滿足勾股定理,c為斜邊。沒有簡單的方法,直接爆力,但是要注意,有些abc滿足勾股定理的運算式,但不一定是三角形,所以要判斷一下,根據三角形三邊的性質,兩邊之和大於第三邊,兩邊之差小於第三邊。//cf304 A//2013-06-05-18.14#include <stdio.h>#include <math.h>int main(){ int n; while (scanf(
這道題很簡單,就是一道模板,求一共有多少個割頂。開始時候,模板理解得有點偏差,不過好在又想了想。這裡要注意的是,主函數裡面的那個for迴圈是必要,一面一個圖有多個連通分量。同時,還要注意不要忘記填加vis這個標記,如果不添加vis也是可以的,因為pre也是一樣的功能。代碼:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N =
很典型的求無向圖的橋個數,並且輸出代碼:#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;const int N = 110;int n, ans, g[N][N];int dfs_clock, pre[N], low[N];bool is[N][N];int dfs( int u, int fa ){
//類似八皇后問題,只需要用DFS回溯即可,注意要一行一行一列一列地掃,不能直接用4個方向的DFS遍曆#include <stdio.h>int N;int cal, max;char map[10][10];int canput( int x, int y );void dfs( int cal );int main(){while ( scanf( "%d", &N ) && N ){int i, j;getchar();cal = 0;max = -10