Submission #947466

#TimeUsernameProblemLanguageResultExecution timeMemory
947466phoenix0423Stray Cat (JOI20_stray)C++17
20 / 100
39 ms16528 KiB
#include<bits/stdc++.h> using namespace std; typedef pair<int, int> pll; #define pb push_back #define eb emplace_back const int INF = 1e9; #include "Anthony.h" vector<int> Mark(int n, int m, int a, int b, vector<int> u, vector<int> v){ vector<vector<pll>> adj(n); vector<int> dist(n, INF), deg(n); dist[0] = 0; for(int i = 0; i < m; i++){ adj[u[i]].eb(v[i], i); adj[v[i]].eb(u[i], i); deg[u[i]] ++, deg[v[i]] ++; } vector<int> color(m, -1); vector<int> bd(n); bd[0] = 0; queue<pll> q; q.push({0, 0}); if(a >= 3){ while(!q.empty()){ auto [pos, lst] = q.front(); q.pop(); for(auto [x, id] : adj[pos]){ if(color[id] != -1) continue; if(dist[x] != INF){ if(dist[x] >= dist[pos]) color[id] = (lst + 1) % a; else color[id] = lst; continue; } // cout<<"do : "<<pos<<" "<<x<<" "<<lst<<"\n"; dist[x] = dist[pos] + 1; color[id] = (lst + 1) % a; q.push({x, color[id]}); } } // cout<<"dist : "; // for(auto x : dist) cout<<x<<" "; // cout<<"\n"; } else{ string ck = "121221"; while(!q.empty()){ auto [pos, lst] = q.front(); q.pop(); int put; if(deg[pos] > 2){ if(ck[lst] == '1') put = 1; else put = 0; } else put = (lst + 1) % 6; for(auto [x, id] : adj[pos]){ if(dist[x] != INF) continue; dist[x] = dist[pos] + 1; color[id] = (ck[put] - '1'); q.push({x, put}); } } } return color; } // signed main(void){ // int n, m, a, b, s; // cin>>n>>m>>a>>b>>s; // vector<int> u(m), v(m); // for(int i = 0; i < m; i++) cin>>u[i]>>v[i]; // auto c = Mark(n, m, a, b, u, v); // for(auto x : c) cout<<x<<" "; // cout<<"\n"; // }
#include "Catherine.h" #include <vector> #include<bits/stdc++.h> using namespace std; int A, B, lst = -1, ok = 0, bk = 0; int fir = 0; string ck = ""; string s = "121221121221"; void Init(int a, int b){ A = a, B = b; } int find_dir(){ for(int i = 0; i < 6; i++){ int dif = 0; for(int j = 0; j < 5; j++) if(ck[j] != s[i + j]){ dif = 1; break; } if(!dif) return 1; } return 0; } int Move(vector<int> y){ // cout<<"ck : "<<A<<" "<<B<<"\n"; if(lst != -1) y[lst]++; int deg = 0; for(auto x : y) deg += (x != 0); if(A >= 3){ if(deg == 1){ return max_element(y.begin(), y.end()) - y.begin(); } for(int i = 0; i < A; i++){ // cout<<"try : "<<i<<" "<<y[i]<<" "<<y[(i + 1) % A]<<"\n"; if(y[i] && y[(i + 1) % A]){ return i; } } } // a = 2 deg = accumulate(y.begin(), y.end(), 0); // cout<<"deg : "<<deg<<"\n"; if(deg == 1){ // cout<<"nothing, back\n"; ok = 1; if(lst == -1){ lst = y[0] == 0; return lst; } else return -1; } if(deg > 2){ ok = 1; if(y[0] == 1){ int tmp = lst; lst = 0; if(tmp == 0) return -1; return 0; } else{ int tmp = lst; lst = 1; if(tmp == 1) return -1; else return 1; } } // deg = 2 if(ok){ y[lst]--; if(y[0]){ lst = 0; return 0; } lst = 1; return 1; } auto rot = [&]() -> int{ int d = find_dir(); // cout<<"end, change dir : "<<d<<"\n"; ok = 1; if(!d){ return -1; } y[lst] --; if(y[0]){ lst = 0; return 0; } else{ lst = 1; return 1; } }; if(lst == -1){ if(y[0] == 2){ ck += "00", lst = 0; fir = 0; return 0; } else if(y[1] == 2){ ck += "11", lst = 1; fir = 1; return 1; } else{ ck += "01", lst = 1; fir = 1; return 1; } } else{ y[lst] --; if(y[0]){ ck += '0'; if(ck.size() == 5) return rot(); lst = 0; return 0; } else{ ck += '1'; if(ck.size() == 5) return rot(); lst = 1; return 1; } } } /* 16 15 2 6 11 0 1 1 2 2 3 3 4 4 8 2 5 5 6 6 7 7 9 6 10 10 11 11 12 12 13 13 14 13 15 */
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...