傳送門:
說是比賽題解,其實我只會前三題;
後面的一定補
t1題意,在乙個長度為n的時間內,問如何選擇存款期限,使得收益最大。
dp
#include #includeview code#include
#include
using
namespace
std;
#define fi first
#define se second
double r[5
];double dp[30
];double ll(int n,int id,double
a)
return t*a;
}int
main()}}
printf(
"%.5lf\n
",dp[n]);
return0;
}
t2利用字首和即可;
#include #includeview code#include
#include
#include
typedef
long
long
ll;using
namespace
std;
const
int maxn = 1000009
;ll a[maxn],b[maxn];
ll n,m;
bool
cmp(ll a,ll b)
intmain()
for(int i=1;i<=n;i++)
a[0]=0,b[0]=0
; sort(a+1,a+1+n);
sort(b+1,b+1+n,cmp);
for(int i=1;i<=n;i++)
ll ans = 0
; ll ff=0
;
for(int i=1;i<=n; i++)
printf(
"%lld\n
",ans);
return0;
}
t3題意:操作乙個只含a,b的字串,問能最少刪去字母個數,使得在最後的字串中,相鄰不同的個數少於m個;
思路:dp;這題關鍵就是把(且新的字串的首字母必須是'a')這句話發揮得淋漓盡致,這也規定了答案字串中,必須是一塊a,一塊b,一塊a……
所以,如果 j 是偶數,表示後面就要接a,如果 j 是奇數,必須要有b才行;
#include #includeview code#include
#include
#include
#include
#define pb push_backtypedef
long
long
ll;using
namespace
std;
const
int maxn = 1000009
;ll dp[maxn][
20];
string
s1;int
n,m;
intmain()
for(int j=0; j<=m; j++)
}if(s1[i]=='
a')flag=0; //
最後盡然把全b的情況忘記了
} ll ans = 0
;
for(int i=0; i<=m; i++)
if(flag)cout<<0
<
else cout
return0;
}
牛客 wannafly挑戰賽19 A 佇列
zzt 創造了乙個佇列 q。這個佇列包含了 n 個元素,佇列中的第 i 個元素用 qi 表示。q1 表示隊頭元素,qn 表示隊尾元素。佇列中的元素是 n 的乙個全排列。zzt 需要在這個佇列上執行 p 次操作,操作分兩種 first x 將元素 x 移到隊頭。last x 將元素 x 移到隊尾。在 ...
牛客Wannafly 挑戰賽19 A 佇列Q
zzt 創造了乙個佇列 q。這個佇列包含了 n 個元素,佇列中的第 i 個元素用 q i 表示。q 1 表示隊頭元素,q n 表示隊尾元素。佇列中的元素是 n 的乙個全排列。zzt 需要在這個佇列上執行 p 次操作,操作分兩種 first x 將元素 x 移到隊頭。last x 將元素 x 移到隊尾...
牛客網 Wannafly挑戰賽21 A 燈塔
題目鏈結 題目描述 z市是一座港口城市,來來往往的船隻依靠燈塔指引方向。在海平面上,存在n個燈塔。每個燈塔可以照亮以它的中心點為中心的90 範圍。特別地,由於特殊限制,每個燈塔照亮範圍的角的兩條邊必須要麼與座標軸平行要麼與座標軸成45 由於經費限制,z市的燈塔只能被點亮一座。你需要求出在這種情況下,...