码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces1070A Find a Number 图论

时间:2018-10-24 20:20:26      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:while   front   nbsp   stream   com   puts   style   div   empty   

技术分享图片

令状态$f(i, j)$表示模$d$为$i$,和为$j$时的最小数

可以通过$bfs$来转移

然而就没了...

复杂度$O(10ds)$

#include <queue>
#include <vector>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
namespace remoon {
    #define ri register int
    #define ll long long
    #define pii pair<int, int>
    #define mp make_pair
    #define pb push_back
    #define fi first
    #define se second
    #define tpr template <typename ra>
    #define rep(iu, st, ed) for(ri iu = st; iu <= ed; iu ++)
    #define drep(iu, ed, st) for(ri iu = ed; iu >= st; iu --)    
    #define gc getchar
    inline int read() {
        int p = 0, w = 1; char c = gc();
        while(c > 9 || c < 0) { if(c == -) w = -1; c = gc(); }
        while(c >= 0 && c <= 9) p = p * 10 + c - 0, c = gc();
        return p * w;
    }
}
using namespace std;
using namespace remoon;
#define sid 525
#define pid 5205

int d, s;
struct node {
    int d, s, di;
    node() {}
    node(int a, int b, int c) : d(a), s(b), di(c) {}
};
queue <pii> q;

bool vis[sid][pid];
node pre[sid][pid];

void bfs() {
    vis[0][0] = 1;
    q.push(mp(0, 0));
    while(!q.empty()) {
        pii p = q.front(); q.pop();
        rep(i, 0, 9) {
            int nd = (p.fi * 10 + i) % d;
            int ns = p.se + i;
            if(ns > s) break;
            if(!vis[nd][ns]) {
                vis[nd][ns] = 1;
                q.push(mp(nd, ns));
                pre[nd][ns] = node(p.fi, p.se, i + 0);
            }
        }
    }
}

inline void dfs(int nd, int ns) {
    if(pre[nd][ns].di != 0) 
    dfs(pre[nd][ns].d, pre[nd][ns].s);
    if(pre[nd][ns].di != 0) 
    printf("%c", pre[nd][ns].di);
}

int main() {
    d = read(); s = read();
    bfs();
    if(!vis[0][s]) puts("-1");
    else dfs(0, s);
    return 0;
}

 

CodeForces1070A Find a Number 图论

标签:while   front   nbsp   stream   com   puts   style   div   empty   

原文地址:https://www.cnblogs.com/reverymoon/p/9844837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!