QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#857495#8870. Human Resourcesgs22059test#0 1ms3712kbC++235.4kb2025-01-15 19:07:242025-01-15 19:07:24

Judging History

你现在查看的是最新测评结果

  • [2025-01-15 19:07:24]
  • 评测
  • 测评结果:0
  • 用时:1ms
  • 内存:3712kb
  • [2025-01-15 19:07:24]
  • 提交

answer

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
//#pragma GCC optimize("O3") // optimization
//#pragma GCC optimize("Ofast") // optimization
//#pragma GCC optimize("unroll-loops") // optimization
#define ordered_set tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>
#define ordered_multiset tree<int,null_type,less_equal<int>,rb_tree_tag,tree_order_statistics_node_update>
using namespace std;
#define i32 signed
#define int long long // CP
#define i64 long long
#define endl '\n'
#define elif else if
#define fi first
#define se second
#define pb push_back
#define p32 pair<i32,i32>
#define p64 pair<i64,i64>
#define f2(i,x) for((i)=0;(i)<(x);(i)++)
#define f2b(i,x) for((i)=(x)-1;(i)>=0;(i)--)
#define f3(i,f,t) for((i)=(f);(i)<(t);(i)++)
#define fall(x) (x).begin(), (x).end()
#define sort1(x) sort(fall(x))
#define rev(x) reverse(fall(x))
#define fast ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define fl fflush(stdout)
#define nl cout<<endl;fflush(stdout)
i64 gcd(i64 a, i64 b){if(a<b){a=a^b;b=a^b;a=a^b;} return b==0?a:gcd(b,a%b);}
i64 lcm(i64 a, i64 b){return a/gcd(a,b)*b;}
i64 expm(i64 a, i64 b, i64 m){i64 r=1;while(b){if(b&1)r=r*a%m;a=a*a%m;b>>=1;}return r%m;}
i64 expm(i64 a, i64 b){i64 r=1,m=1e9+7;while(b){if(b&1)r=r*a%m;a=a*a%m;b>>=1;}return r%m;}
i64 minv(i64 a, i64 m){return expm(a,m-2,m);}
i64 ncrm(i64 n, i64 r, i64 m){i64 i,j,k; i64 out=1; f3(i,1,n+1){out*=i;out%=m;}f3(i,1,r+1){out*=minv(i,m);out%=m;}f3(i,1,n-r+1){out*=minv(i,m);out%=m;}return out%m;}
// int n,m,k,a[300010],b[300010],c[300010];
double dist(p64 a,p64 b){
    return sqrt((double)(a.fi-b.fi)*(a.fi-b.fi)+(a.se-b.se)*(a.se-b.se));
}
void probA(){
    int i,j,l;
}void probC(){
    int i,j,l;
}void probD(){
    // int i,j,l;
    // int n,q; cin>>n>>q;
    // vector<int>a(n),b(n),c(n); for(int i=0;i<n;i++)cin>>a[i]>>b[i]>>c[i];
    // while(q--){
    //
    // }
}void probF(){
    int i,j,l;
}void probG(){
    int i,j,l;
}

typedef long long ll;

ll n,t=0,on[610],ret[610],dep[610],par[610],in[610],vis[610];
vector<ll> g[610],ord;
map<string,ll> m2n,chk;
map<ll,string> n2m;

void assign(string s){
    if(m2n.find(s)!=m2n.end()) return;
    m2n[s] = ++t;
    n2m[t] = s;
    //cout << s << " " << t << "\n";
}

void dfs(ll x, ll p = 0){
    par[in[x]] = in[p];
    for(auto i:g[x]){
        dfs(i,x);
    }
}

void bfs(){
    queue<ll> q;
    q.push(1);
    ll d = 1;
    while(!q.empty()){
        ll sz = q.size();
        for(int i=0;i<sz;i++){
            ll c = q.front(); q.pop();
            ord.push_back(c);
            on[ord.size()] = c;
            dep[ord.size()] = d;
            in[c] = ord.size();
            for(auto j:g[c]){
                q.push(j);
            }
        }
        d++;
    }
}

void encode(){
    for(int i=0;i<=605;i++){
        on[i] = 0;
        ret[i] = 0;
        dep[i] = 0;
        par[i] = 0;
        in[i] = 0;
        vis[i] = 0;
        g[i].clear();
    }
    ord.clear();
    m2n.clear();
    n2m.clear();
    chk.clear();
    string nm;
    vector<string> names;
    while(cin >> nm){
        names.push_back(nm);
    }
    string cr;
    for(auto i:names){
        if(i.back()==':'){
            i.pop_back();
            assign(i);
            cr = i;
        }
        else{
            assign(i);
            g[m2n[cr]].push_back(m2n[i]);
        }
    }
    n = t;
    bfs();
    dfs(1);
    ret[1] = 1;
    for(int i=2;i<=n;i++){
        if(dep[i]>dep[i-1]) ret[i] = 1;
    }
    ret[n+1] = 1;
    for(int i=n+2;i<=2*n;i++){
        if(par[i-n]!=par[i-n-1]) ret[i] = 1;
    }
    for(int i=1;i<=n;i++){
        cout << n2m[on[i]] << "\n";
        //if(vis[on[i]]) assert(0);
        assert(on[i]>=1);
        vis[on[i]] = 1;
    }
    //assert(n<=600);
    for(int i=1;i<=2*n;i++){
        //assert(ret[i]==0||ret[i]==1);
        cout << ret[i];
    }
    cout << "\n";
}

map<ll,string> n2m2;
vector<ll> gr[610];
vector<ll> npar[610];
ll lay[610];

void decode(){
    n2m2.clear();
    for(int i=0;i<=605;i++){
        gr[i].clear();
        npar[i].clear();
        lay[i] = 0;
    }
    string nm;
    ll t = 0;
    while(cin >> nm){
        n2m2[++t] = nm;
    }
    n = t-1;
    string bin = n2m2[t];
    ll l = 0;
    for(int i=1;i<=n;i++){
        if(bin[i-1]=='1'){
            l++;
        }
        npar[l].push_back(i);
        lay[i] = l;
    }
    ll id = 0;
    for(int i=n+2;i<=2*n;i++){
        if(lay[i-n]!=lay[i-n-1]) id = -1;
        if(bin[i-n-1]=='1') id++;
        gr[npar[lay[i-n]-1][id]].push_back(i-n);
    }
    // cout << n << "\n";
    // for(int i=1;i<=l;i++){
    //     for(auto j:npar[i]){
    //         cout << n2m2[j] << " ";
    //     }
    //     cout << "\n";
    // }
    for(int i=1;i<=n;i++){
        if(gr[i].empty()) continue;
        cout << n2m2[i] << ": ";
        for(auto j:gr[i]){
            cout << n2m2[j] << " ";
        }
        cout << "\n";
    }
}

/*
Janez
Josip
Zofia
Karolina
01010101
*/

void probH(){
    string stmp; cin >> stmp;
    if(stmp=="ENCODE"){
        encode();
    }
    else{
        decode();
    }
}

void probI(){
    int i,j,l;
}void probJ(){
    int i,j,l;
}void probK(){
    int i,j,l;
}void probL(){
    int i,j,l;
}
i32 main(){
    //fast;
    // int tc; cin>>tc;
    // while(tc--)f();
    probH();
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 3712kb

input:

ENCODE
XMWVScmwmx: vEgPOHbeWu ochzloqyLK

output:

XMWVScmwmx
vEgPOHbeWu
ochzloqyLK
110110

input:

DECODE
XMWVScmwmx
vEgPOHbeWu
ochzloqyLK
110110

output:

XMWVScmwmx: vEgPOHbeWu ochzloqyLK 

result:

ok correct!

Test #2:

score: 0
Wrong Answer on the first run

input:

ENCODE
VUOwvLKWMm: uZfKeVXEDt HKCrRjmmHt
uZfKeVXEDt: EskDVoVGeL hMxGZYvKeR
HKCrRjmmHt: lGbsWnbbVU MvljqjukpU
EskDVoVGeL: lRNunDdAcH mnSVypGpiN
hMxGZYvKeR: iIkoDSaaZy jGlaYVeZHS
lGbsWnbbVU: ZlpRVhzDFh KSlYnpyeEY
MvljqjukpU: EVIpIQQgAC CCPDuKlZvd
lRNunDdAcH: joEoXtahNd rzwPajApeu
mnSVypGpiN: hrArKLjen...

output:

VUOwvLKWMm
uZfKeVXEDt
VUOwvLKWMm
EskDVoVGeL
VUOwvLKWMm
lGbsWnbbVU
VUOwvLKWMm
lRNunDdAcH
VUOwvLKWMm
iIkoDSaaZy
VUOwvLKWMm
ZlpRVhzDFh
VUOwvLKWMm
EVIpIQQgAC
VUOwvLKWMm
joEoXtahNd
VUOwvLKWMm
hrArKLjenT
VUOwvLKWMm
RHKYzKhqyb
VUOwvLKWMm
yHAxOEPXnY
VUOwvLKWMm
ZQIPkyazet
VUOwvLKWMm
fTeqZjQojM
VUOwvLKWMm
FeU...

input:


output:


result:

wrong answer your output contains the name VUOwvLKWMm more than once