首页 > 其他分享 >358G AtCoder Tour

358G AtCoder Tour

时间:2024-10-17 21:58:56浏览次数:7  
标签:AtCoder int 55 nd nx ny Tour 358G dis

358G

思维题

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,s,t,vis[55][55][2505],k;
ll dis[55][55][2505],v[55][55],ans;
int mvx[] = {-1,1,0,0};
int mvy[] = {0,0,-1,1};
struct Node{
    int x,y,d;
};
queue<Node> q;
void spfa(){
    while(!q.empty()){
        Node t = q.front(); q.pop();
        for(int i = 0; i < 4; i++){
            int nx = t.x + mvx[i];
            int ny = t.y + mvy[i];
            int nd = t.d + 1;
            if(nx < 1 || ny < 1 || nx > n || ny > m || nd > min(k,2500)) continue;
            // cout<<"n: "<<nx<<" "<<ny<<" "<<nd<<endl;
            if(dis[t.x][t.y][t.d] + v[nx][ny] > dis[nx][ny][nd]){
                dis[nx][ny][nd] = dis[t.x][t.y][t.d] + v[nx][ny];
                if(vis[nx][ny][nd] == 0){
                    vis[nx][ny][nd] = 1;
                    q.push((Node){nx, ny, nd});
                }
            } 
        }
    }
}
int main(){
    cin>>n>>m>>k>>s>>t;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            cin>>v[i][j];
        }
    }
    memset(dis, 0xcf, sizeof dis);
    q.push((Node){s,t,0});
    vis[s][t][0] = 1;
    dis[s][t][0] = 0;
    spfa();
    // cout<<dis[2][3][4]<<endl;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            for(int p = 0; p <= min(2500, k); p++)//一开始写的k<=1
                ans = max(ans, dis[i][j][p] + (k-p)*v[i][j]);
        }
    }
    cout<<ans<<endl;
    return 0;
}

 

标签:AtCoder,int,55,nd,nx,ny,Tour,358G,dis
From: https://www.cnblogs.com/caterpillor/p/18473217

相关文章

  • 浏览器安装 AtCoder Better 和 Codeforces Better 插件
    你首先需要篡改猴。如果你用的Google浏览器,请用这个Link,不过你可能需要挂个梯子。如果你用的Firefox浏览器,请用这个Link,这个不需要梯子。如果你用的edge浏览器,请用这个Link,这个也不需要梯子。下载好篡改猴之后,无论什么浏览器,点击这个链接,安装AtCoderBetter插件;点......
  • AtCoder ABCD做题计划
    vjudge链接AtCoderBeginnerContest360ABCDAtCoderBeginnerContest359ABCDAtCoderBeginnerContest358ABCDAtCoderBeginnerContest357ABCDAtCoderBeginnerContest356ABCDAtCoderBeginnerContest355ABCDAtCoderBegi......
  • AtCoder Beginner Contest 374 (A-E)
    AtCoderBeginnerContest374(A-E)比赛链接A-Takahashisan2#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;voidShowball(){strings;cin>>s;intn=s.size();cout<<(s.substr(n-3)=="san"......
  • AtCoder Beginner Contest 375
    A-Seats#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;#defineintlonglongusingvi=vector<int>;usingpii=pair<int,int>;i32main(){ios::sync_with_stdio(false),cin.tie(null......
  • Panasonic Programming Contest 2024(AtCoder Beginner Contest 375)
    PanasonicProgrammingContest2024(AtCoderBeginnerContest375)\(A\)Seats\(AC\)基础字符串。点击查看代码intmain(){intn,ans=0,i;strings;cin>>n>>s;for(i=0;i<n;i++){ans+=(s[i]=='#'&&s[i......
  • AtCoder Beginner Contest 375
    省流版A.枚举所有子串判断即可B.模拟计算记录累加即可C.根据旋转的周期性对每个点旋转次数取模后暴力旋转即可D.枚举\(k\),考虑\(i,j\)的对数,写成数学表达式后维护个数和位置和即可E.背包问题,以前两个数组和为状态,考虑每个数移动到何处转移即可F.逆向,删边变加边,维护......
  • KEYENCE Programming Contest 2024(AtCoder Beginner Contest 374)E题
    六年级蒟蒻来题解了!!!题目大意:给定你一个n,表示有n个生产线,每一个生产线都有两种机器,第i个生产线第一件产品每天可以造Ai件零件但是得付出Pi元的代价,第二件产品每天可以生产Bi件物品但是得付出Qi元的代价,然后给你x元的预算问你所有流水线中的最小值的最大值是多少?思路:首先我们......
  • tour cpp: std::variant 实现无继承层次的访问者模式
    std::variant是基于模板而实现的一种包括了一个标志位的高级union对象;可以完全替代如下场景:structst{inttype;unionun{inti;floatf;};};#include<iostream>#include<variant>template<class...base>structoverloaded:bas......
  • AtCoder Beginner Contest 373 (A-F)
    AtCoderBeginnerContest373(A-F)比赛链接A-September#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;voidShowball(){intans=0;for(inti=1;i<=12;i++){strings;cin>>s;ans+=((int)s.si......
  • 【做题笔记】Atcoder 之 dp 专题训练
    ABCDEFGHI概率dp。设\(dp_{i,j}\)表示前\(i\)个硬币中有\(j\)个正面的概率。转移显然:\(dp_{i,j}=dp_{i-1,j-1}\timesp_i+dp_{i-1,j}\times(1-p_i)\)当\(j=0\)时,前\(i\)个硬币中没有正面。所以只能由反面的概率转移过来,转移为:\(dp_{i,j}=dp_{i-1,j}\time......