記錄乙個菜逼的成長。。ps:因為備戰省賽,並沒有什麼難的演算法和資料結構。。
a:hdu2181 哈密頓繞行世界問題
簡單的dfs,每個城市只有三條邊直接搜尋即可。
#include
using
namespace
std;
#define all(v) (v).begin(),(v).end()
#define cl(a,b) memset(a,b,sizeof(a))
#define clr clear()
#define pb push_back
typedef
long
long ll;
const
int inf = 0x3f3f3f3f;
const
int maxn = 20 + 10;
int g[maxn][maxn],vis[maxn];
int ans[maxn],cas = 1;
void dfs(int st,int x,int cnt)
printf(" %d %d\n",x,st);}}
vis[x] = 1;
ans[cnt] = x;
for( int i = 1; i <= 20; i++ )
}vis[x] = 0;
}int main()
}int m;
while(~scanf("%d",&m) , m != 0)
return
0;}
b:hdu2102 a計畫
基礎的三維bfs,求最短路徑。
只是這裡有個坑,兩層相對的位置都是 『#』,還有每次傳送的時候,記得把步數也記錄就可以了。
#include
using
namespace
std;
#define all(v) (v).begin(),(v).end()
#define cl(a,b) memset(a,b,sizeof(a))
#define clr clear()
#define pb push_back
typedef
long
long ll;
const
int inf = 0x3f3f3f3f;
char g[5][20][20];
int vis[5][20][20],n,m,t;
int dx = ,dy = ;
struct node
node(int xx,int yy,int zz):x(xx),y(yy),z(zz){}
};void bfs(int x,int y,int z)
}if(!cnt)
}}int main()}}
bfs(0,0,0);
if(!vis[tz][tx][ty])
else
}return
0;}
c:hdu5695 gym class
依據題目意思很容易想到拓撲排序。
只是多了個條件,每次要找到前面最大的,使得最後結果最大。那麼貪心一下,每次入度為0的點,使值大的先輸出即可。可用優先佇列替換掉原先的佇列來維護。
#include
using
namespace
std;
#define all(v) (v).begin(),(v).end()
#define cl(a,b) memset(a,b,sizeof(a))
#define clr clear()
#define pb push_back
typedef
long
long ll;
const
int inf = 0x3f3f3f3f;
const
int maxn = 100000 + 10;
vector
g[maxn];
int d[maxn],n,m;
ll topsort()
ll ans = 0;
int mn = inf;
while(!q.empty())}}
return ans;
}int main()
printf("%lld\n",topsort());
}return
0;}
d:hdu5690 all xf(
x,m)
modk=c
f(x,m)=
10m−1
9∗x .
原式就轉換為10m
−19∗
xmodk=
c 但是我們不能保證
9 跟
k一定互質
所以轉換為(10
m−1)
∗xmod9k=
9c如果互質則可以轉換為(10
m−1)
∗xmodk=9
c 那麼直接快速冪計算即可。
#include
using
namespace
std;
#define all(v) (v).begin(),(v).end()
#define cl(a,b) memset(a,b,sizeof(a))
#define clr clear()
#define pb push_back
typedef
long
long ll;
const
int inf = 0x3f3f3f3f;
ll power(ll a,ll b,ll c)
return ret;
}int main()
return
0;}
e:見這裡
f:見這裡
NUC 2015 秋 隊內訓練賽 第一場
題意 有乙個n行,m列的棋盤,在棋盤上面放置黑 b 和白 w 間隔的棋子,另外棋盤某些地方有缺損,不能放置棋子,用 表示。演算法 這裡我採用直接模擬的方式,類似於小學生練字用的字帖,我先生成乙個標準的bwbw間隔的棋盤,然後用輸入的棋盤,直接對比,如果是 則直接輸出,標準棋盤的b 或者是w,否則輸出...
訓練 9 13 訓練賽
a.hdu 6230 乙個合法的子串 s 3n 2 滿足條件即1 2n 1 為以n為回文中心的回文串,n 3n 2為以2n 1為中心的回文串。故我們可以通過尋找回文中心對,來判斷相應合法子串的個數。利用manacher求出每個位置的最長回文半徑,則若i,j滿足條件 i j 則應有 p i geqsl...
訓練賽 詠歎
安師大附中訓練題目 給定乙個1到n的排列a,對其進行氣泡排序 counter 0 while a不是公升序的 counter counter 1 for i 1 to n 1 if a i a i 1 then swap a i a i 1 endifend forend while那麼經過幾輪排序...