Submission #1158842

#TimeUsernameProblemLanguageResultExecution timeMemory
1158842modwweAmusement Park (JOI17_amusement_park)C++20
0 / 100
27 ms12616 KiB
#include "Joi.h"
//#include "coim.h"
#pragma GCC optimize("Ofast,unroll-loops")
#include<bits/stdc++.h>
//#define int   long long
#define ll long long
#define down cout<<'\n';
#define debug cout<<" cucuucucuuu",down
#define modwwe  int t;cin>>t; while(t--)
#define bit(i,j) (i>>j&1)
#define sobit(a) __builtin_popcountll(a)
#define task2 "ftree"
#define task "test"
#define fin(x) freopen(x".inp","r",stdin)
#define fou(x) freopen(x".out","w",stdout)
#define pb push_back
#define mask(k) (1ll<<k)
#define checktime   cerr << (double)clock() / CLOCKS_PER_SEC * 1000  << " ms";
using namespace std;
#define getchar_unlocked getchar
mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
int rand(int l,int r)
{
    return uniform_int_distribution<int>(l,r)(rd);
}
void phongbeo();
const int inf = 1e9;
const ll mod2 = 1e9+7;
//const ll base=67;
int  n, m, s1, s2, s4, s3, sf, k, s5, s6, mx, s7, s8, s9, mx2, res, dem2 = 0, dem = 0, s33, dem3, dem4, mid, l2, r2, center;
int  i, s10, s12,k1,k2,k3,s11,lim,w,l,r,dem5,dem6,dem7,dem9,now;
int kk;
int t;
int el = 19;
bool go[100001];
int in[100001];
int send[100001];
int bi[100001];
int par[100001];
vector<int> ke[100001];
vector<int> v[100001];
map<int,bool>can[100001];
void dfs(int x)
{
    go[x]=1;
    in[x]=++dem;
    sort(ke[x].begin(),ke[x].end());
    for(auto f:ke[x])
        if(!go[f])
        {
            v[x].pb(f);
            can[x][f]=can[f][x]=1;
            par[f]=x;
            dfs(f);
        }
}
void Joi(int N,int M,int A[],int B[],ll X,int T)
{
    n=N;
    m=M;
    for(int i=0; i<m; i++)
        ke[A[i]].pb(B[i]),
        ke[B[i]].pb(A[i]);
    dem=0;
    dfs(0);
    long long s=0;
    for(int i=0; i<60; i++)
        bi[i]=bit(X,i),s+=mask(i)*bi[i];
    for(int i=0; i<n; i++)
        MessageBoard(i,bi[in[i]%60]);
}
#include "Ioi.h"
//#include "coim.h"
#pragma GCC optimize("Ofast,unroll-loops")
#include<bits/stdc++.h>
//#define int   long long
#define ll long long
#define down cout<<'\n';
#define debug cout<<" cucuucucuuu",down
#define modwwe  int t;cin>>t; while(t--)
#define bit(i,j) (i>>j&1)
#define sobit(a) __builtin_popcountll(a)
#define task2 "ftree"
#define task "test"
#define fin(x) freopen(x".inp","r",stdin)
#define fou(x) freopen(x".out","w",stdout)
#define pb push_back
#define mask(k) (1ll<<k)
#define checktime   cerr << (double)clock() / CLOCKS_PER_SEC * 1000  << " ms";
using namespace std;
#define getchar_unlocked getchar
mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
int rand(int l,int r)
{
    return uniform_int_distribution<int>(l,r)(rd);
}
void phongbeo();
const int inf = 1e9;
const ll mod2 = 1e9+7;
//const ll base=67;
int  n, m, s1, s2, s4, s3, sf, k, s5, s6, mx, s7, s8, s9, mx2, res, dem2 = 0, dem = 0, s33, dem3, dem4, mid, l2, r2, center;
int  i, s10, s12,k1,k2,k3,s11,lim,w,l,r,dem5,dem6,dem7,dem9,now;
int kk;
int t;
int el = 19;
bool go[100001];
int in[100001];
int send[100001];
int bi[100001];
int par[100001];
vector<int> ke[100001];
vector<int> v[100001];
map<int,bool>can[100001];
void dfs(int x)
{
    go[x]=1;
    in[x]=++dem;
    sort(ke[x].begin(),ke[x].end());
    for(auto f:ke[x])
        if(!go[f])
        {
            v[x].pb(f);
            can[x][f]=can[f][x]=1;
            par[f]=x;
            dfs(f);
        }
}
long long Ioi(int N,int M,int A[],int B[],int P,int V,int T)
{
    n=N;
    m=M;
    long long s=0;
    for(int i=0; i<n; i++)
        ke[i].clear(),v[i].clear(),go[i]=0;
    for(int i=0; i<m; i++)
        ke[A[i]].pb(B[i]),
        ke[B[i]].pb(A[i]);
    dem=0;
    dfs(0);
    dem=1;
    int start=P;
    int point=V;
    int need=(in[start]+1)%60;
    s=s+mask(in[start]%60)*point;
    while(true)
    {
        if(dem==60) break;
        bool de=0;
        for(auto f:v[start])
        {
            if(in[f]%60==need)
            {
                point=Move(f);
                start=f;
                s=s+mask(in[start]%60)*point;
                de=1;
                need=(need+1)%60;
                dem++;
                break;
            }
        }
        if(!de)
        {
            point=Move(par[start]);
            start=par[start];
            if(in[start]%60==need)
            {
                s=s+mask(need)*point;
                need=(need+1)%60;
                dem++;
                debug
            }
        }
    }
    return s;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...