Compare commits

..

2 Commits

Author SHA1 Message Date
2e2a747e5e refactor: 将quick_exit替换为_Exit以提高代码一致性 2025-10-15 16:30:07 +08:00
e48b8e76d9 feat: 添加P6003cal.cpp和P4818.cpp两个算法实现文件
P6003cal.cpp实现了一个简单的数值计算逻辑,P4818.cpp实现了一个基于BFS的网格路径搜索算法
2025-10-15 13:08:44 +08:00
5 changed files with 107 additions and 3 deletions

83
src/10/14/P4818.cpp Normal file
View File

@ -0,0 +1,83 @@
#include <cstdint>
#include <deque>
#include <iostream>
#include <istream>
using ll = int64_t;
const ll maxn = 1000+5;
ll n,m;
ll a[maxn][maxn];
struct D{
ll x,y,d;
bool is2,ish;
};
std::deque<D> d;
bool vis[maxn][maxn][4];
const ll dir[4][2]={
{1,0},
{-1,0},
{0,1},
{0,-1}
};
int main(){
std::iostream::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cin>>n>>m;
for(ll i=1;i<=n;i++){
for(ll j=1;j<=m;j++){
std::cin>>a[i][j];
}
}
d.emplace_back(1,1,0,false);
while (d.size()) {
auto[x,y,dd,is2,ish] = d.front();
d.pop_front();
if(ish && a[x][y]==4){
ll nx = x+dir[dd][0], ny=y+dir[dd][1];
if(a[nx][ny]==3){
if(vis[nx][ny][is2])continue;
}else if(a[nx][ny]==4){
if(vis[nx][ny][dd])continue;
}else if(vis[nx][ny][0])continue;
if(ll na=a[nx][ny];na==0){
continue;
}else if(na==1){
d.emplace_back(nx,ny,dd,false,false);
vis[nx][ny][0]=true;
}else if(na==2){
d.emplace_back(nx,ny,dd,true,false);
vis[nx][ny][0]=true;
}else if(na==3){
continue;
}else if(na==4){
d.emplace_back(nx,ny,dd,false,true);
vis[nx][ny][dd]=true;
}
continue;
}
for(ll i=0;i<4;i++){
ll nx = x + dir[i][0], ny = y+dir[i][1];
if(ll na = a[nx][ny];na==0){
continue;
}else if(na==1){
d.emplace_back(nx,ny,i,false,false);
vis[nx][ny][0]=true;
}else if(na==2){
d.emplace_back(nx,ny,i,true,false);
vis[nx][ny][0]=true;
}else if(na==3){
if(is2){
d.emplace_back(nx,ny,i,true,false);
vis[nx][ny][is2]=true;
}
}else if(na==4){
d.emplace_back(nx,ny,i,false,true);
vis[nx][ny][i]=true;
}
}
}
}

21
src/10/14/P6003cal.cpp Normal file
View File

@ -0,0 +1,21 @@
#include <algorithm>
#include <cstdint>
#include <cstdio>
#include <iostream>
using ll = int64_t;
int main(){
ll n,k,m;
std::cin>>n>>k>>m;
for(ll x=25;x<=25;x++){
ll g=0;
for(ll i=1;i<=k;i++){
ll y=(n-g)/x;
y=std::max(y,m);
g+=y;
printf("i=%lld, g=%lld\n",i,g);
}
printf("-- x=%lld, g=%lld\n\n",x,g);
}
}

View File

@ -25,5 +25,5 @@ int main(){
nowWait+=a[i].first;
}
std::cout<<std::fixed<<std::setprecision(2)<<'\n'<<(double(sumWait)/double(n))<<'\n'<<std::flush;
quick_exit(0);
_Exit(0);
}

View File

@ -83,5 +83,5 @@ int main(){
base[0][1]=base[1][0]=base[1][1] = 1;
base = fp(base,n);
std::cout<<(base[0][1]+base[1][1])%p<<'\n'<<std::flush;
quick_exit(0);
_Exit(0);
}

View File

@ -25,5 +25,5 @@ int main(){
std::cout<<std::fixed<<std::setprecision(4)<<dp[n][n]<<'\n';
std::flush(std::cout);
quick_exit(0);
_Exit(0);
}