生活随笔
收集整理的這篇文章主要介紹了
Namomo Fish(Easy) Round 1
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
C - Number
題目鏈接
做的時(shí)候就感覺(jué)是預(yù)處理aia_iai?變成每個(gè)數(shù)的步數(shù),然后枚舉最終變成的數(shù)。不過(guò)感覺(jué)dist[][]數(shù)組開(kāi)不了那么大,賽后正解真的是這樣于是就用map試了一下AC了
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<cmath>
#include<queue>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std
;
const int N
=100010;
int a
[N
],n
,maxa
;
unordered_map
<int,int> dist
[N
];
void bfs(int u
)
{dist
[u
][u
]=0;queue
<int> q
;q
.push(u
);while(q
.size()){int t
=q
.front();q
.pop();if(t
<=maxa
/t
&&!dist
[u
].count(t
*t
)) {dist
[u
][t
*t
]=dist
[u
][t
]+1; q
.push(t
*t
);}int y
=sqrt(t
);if(!dist
[u
].count(y
)){dist
[u
][y
]=dist
[u
][t
]+1;q
.push(y
);}}
}
int main()
{cin
>>n
;for(int i
=1;i
<=n
;i
++){cin
>>a
[i
];maxa
=max(maxa
,a
[i
]);}for(int i
=1;i
<=n
;i
++) bfs(a
[i
]);int res
=0x3f3f3f3f;for(int j
=1;j
<=maxa
;j
++){int cnt
=0;bool ok
=1;for(int i
=1;i
<=n
;i
++){if(!dist
[a
[i
]].count(j
)){ok
=0;break;}cnt
+=dist
[a
[i
]][j
];}if(ok
) res
=min(res
,cnt
);}cout
<<res
<<endl
;
}
D - Deadline
題目鏈接
對(duì)原數(shù)組排序,f[i][j]f[i][j]f[i][j]表示考慮前iii個(gè)deadline完成jjj個(gè)所花費(fèi)的最小天數(shù)。對(duì)于目前deadline可以考慮做與不做,如果不做f[i][j]=f[i?1][j]f[i][j]=f[i-1][j]f[i][j]=f[i?1][j],如果做那么f[i][j]=xf[i][j]=xf[i][j]=x,xxx從f[i?1][j?1]f[i-1][j-1]f[i?1][j?1]天開(kāi)始最少到第xxx天才能完成第iii個(gè)任務(wù)
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<cmath>
#include<queue>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std
;
typedef
long long ll
;
const int N
=1010;
const int INF
=1e7
;
ll a
[N];
int n
,m
;
ll f
[N][N];
int main()
{cin
>>n
>>m
;for(int i
=1;i
<=n
;i
++) cin
>>a
[i
];sort(a
+1,a
+1+n
);memset(f
,0x3f,sizeof f
);f
[0][0]=0;for(int i
=1;i
<=n
;i
++)for(int j
=0;j
<=n
;j
++){f
[i
][j
]=min(f
[i
][j
],f
[i
-1][j
]);if(!j
||f
[i
-1][j
-1]>INF
) continue;ll d
=f
[i
-1][j
-1]+1;if((a
[i
]-d
+1+1)*(a
[i
]-d
+1)/2>=m
){ll b
=-2*a
[i
]-1,c
=(d
-1)*(2*a
[i
]+2-d
)+2*m
;ll delta
=sqrt(b
*b
-4*c
);ll x
=(-b
-delta
+1)/2;f
[i
][j
]=min(f
[i
][j
],x
);}}for(int i
=n
;i
>=0;i
--)if(f
[n
][i
]<INF
) {cout
<<i
<<endl
;return 0;}
}
總結(jié)
以上是生活随笔為你收集整理的Namomo Fish(Easy) Round 1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。