a - 收集紙片
題意:
在二維座標中有$n$個點需要你依次到達並最後返回起點,求最短路程
思路:
典型的$tsp$旅行商問題,因為$n$最大只有$10$,所以我們可以用$dfs$遍歷所有可能的情況,時間複雜度為$o(10!)$
#include#includeview code#include
#include
#define inf 0x3f3f3f3f
using
namespace
std;
typedef
long
long
ll;
intx,y,sx,sy,n,ans;
int vis[11];
struct
nodea[
11];
void dfs(int cnt,int num,int
dis)
for(int i=1;i<=n;i++)
} }
intmain()
cout
<
the shortest path has length "}
return0;
}
c - rabbit的工作(1)
題意:
一共有$n$天,如果連續工作第$i$天需要耗費精力$i$,同時根據安排你也可以休息,不消耗精力,在消耗精力小於等於$k$的情況下,問你最多能工作幾天
思路:
定義$dp[i][j][k]$為,過去$i$天,當前已經連續工作$j$天,總計工作$k$天需要消耗的精力
如果選擇休息則狀態轉移方程為$dp[i+1][0][k]=min(dp[i][j][k],dp[i+1][0][k])$
在可以工作的情況下,轉態轉移方程為$dp[i+1][j+1][k+1]=min(dp[i+1][j+1][k+1],dp[i][j][k]+(j+1))$
最後,因為記憶體限制,第一維可以用滾動陣列節約空間
#include#includeview code#include
#define inf 0x3f3f3f3f
using
namespace
std;
const
int n=405;
int dp[2
][n][n];
strings;
intmain()
}now^=1
; }
for(int i=0;i<=n;i++)
}cout
<
return0;
}
d - 華華和月月逛公園
題意:
給一張$n$個點$m$條邊的無向圖,讓你求出非關鍵邊的個數,非關鍵邊的定義為去掉這條邊後,依舊可以從$1$號點出發,到達圖中所有點
思路:
轉換題意後,就是求非橋邊的個數,直接套用$tarjan$求橋的模板即可
#include#includeview code#include
using
namespace
std;
const
int maxn=1e5+10
; vector
a[maxn];
int ans=0
,vis[maxn];
void dfs(int tim,int fa,intu)
dfs(tim+1
,u,v);
} }
intmain()
dfs(
1,1,1
); cout
}
e - 數字比較
題意:
給兩個數字$x$與$y$,比較$x^$跟$y^$的大小
思路:
將$x^$跟$y^$化成冪次相同的形式,在比較兩數的底數大小即可
#include#includeview codeusing
namespace
std;
typedef
long
long
ll;
intmain()
else
}
牛客演算法周周練2
a 題意 求乙個數的順序和逆序之和。題解 其實就是個閹割版的高精度加法嘛。其實逆序數忽略前導零這個條件是沒有用的,因為順序數不可能有前導零,自然結果也不會有,然後注意下首位進製不取餘。include using namespace std int a 10 b 10 intmain for k j ...
牛客演算法周周練2
題目鏈結 include define sc x scanf lld x define pf printf define rep i,s,e for int i s i e i define dep i,e,s for int i e i s i using namespace std typede...
牛客演算法周周練3
只寫了乙個,打遊戲去了 就是個搜尋模板,直接寫就行 include include include include include include using namespace std define mid 1000000007 typedef long long ll int book 106 ...