Submission #1294694

#TimeUsernameProblemLanguageResultExecution timeMemory
1294694simona1230Ancient Machine (JOI21_ancient_machine)C++20
0 / 100
184 ms70336 KiB
#include "Anna.h" #include <bits/stdc++.h> namespace { const int len=24,b=17; long long dp[64][2]; std::vector<int> c; std::vector<int> h,v,a; std::map< std::vector<int>, std::vector<int> > mp1,mp2; int num; void rec(int i) { if(i==len) { h.clear(); for(int j=0; j<b; j++) if(num&(1<<j))h.push_back(1); else h.push_back(0); mp1[c]=h; mp2[h]=c; num++; return; } if(i==0||c[c.size()-1]==0) { c.push_back(1); rec(i+1); c.pop_back(); } c.push_back(0); rec(i+1); c.pop_back(); } } void Anna(int N, std::vector<char> S) { int f=-1; for(int i=0; i<N; i++) { if(f==-1&&S[i]=='X') { f=i; } if(f!=-1&&S[i]=='Z') { v.push_back(1); if(v.size()>1&&v[v.size()-2]==1)v[v.size()-2]=0; } else v.push_back(0); } f++; for(int j=0;j<17;j++) if((1<<j)&f)a.push_back(1); else a.push_back(0); while(v.size()%len!=0)v.push_back(0); rec(0); for(int i=0;i<v.size();i+=len) { h.clear(); for(int j=0;j<len;j++) h.push_back(v[i+j]); h=mp1[h]; for(int j=0;j<b;j++) a.push_back(h[j]); } for(int i=0;i<a.size();i++) { Send(a[i]); //std::cout<<a[i]<<" "; } //std::cout<<std::endl; dp[1][0]=dp[1][1]=1; for(int i=2; i<=40; i++) { dp[i][0]=dp[i-1][1]+dp[i-1][0]; dp[i][1]=dp[i-1][0]; int p=0; while((1<<p)+1<=dp[i][0]+dp[i][1])p++; double g=(double)(p)/(double)(i); std::cout<<i<<" >>>>>> "<<p<<std::endl; std::cout<<g<<std::endl; if(g<=0.7) { } } }
#include "Bruno.h" #include <bits/stdc++.h> namespace { const int len1=24,b1=17; long long dp1[64][2]; std::vector<int> c1; std::vector<int> h1,v1,a1; std::map< std::vector<int>, std::vector<int> > mp11,mp21; int num1; void rec1(int i) { if(i==len1) { h1.clear(); for(int j=0; j<b1; j++) if(num1&(1<<j))h1.push_back(1); else h1.push_back(0); mp11[c1]=h1; mp21[h1]=c1; /*for(int j=0;j<b1;j++) std::cout<<h1[j]<<" "; std::cout<<std::endl; for(int j=0;j<len1;j++) std::cout<<c1[j]<<" "; std::cout<<std::endl;*/ num1++; return; } if(i==0||c1[c1.size()-1]==0) { c1.push_back(1); rec1(i+1); c1.pop_back(); } c1.push_back(0); rec1(i+1); c1.pop_back(); } } // namespace void Bruno(int N, int L, std::vector<int> A) { rec1(0); int x=0; for(int i=0; i<17; i++) if(A[i])x+=(1<<i); if(x==0) { for(int i=0; i<N; i++) Remove(i); return; } x--; for(int i=17; i<A.size(); i+=b1) { c1.clear(); for(int j=0; j<b1; j++) c1.push_back(A[i+j]); c1=mp21[c1]; /*for(int j=0;j<len1;j++) std::cout<<c1[j]<<" "; std::cout<<std::endl;*/ for(int j=0; j<len1; j++) v1.push_back(c1[j]); } v1[x]=1; /*std::cout<<x<<std::endl; for(int i=0;i<v1.size();i++) std::cout<<v1[i]<<" "; std::cout<<std::endl;*/ int f=-1,l=-1; for(int i=0;i<v1.size();i++) { if(v1[i]) { for(int j=i-1;j>l;j--) Remove(j); if(f==-1)f=i; else Remove(i); l=i; } } if(f==-1) { for(int i=0;i<N;i++) Remove(i); } else { Remove(f); for(int i=l+1;i<N;i++) Remove(i); } } /* 18 Y X Y Z X Z X X Z Z Y Y Z Y Y Z X X */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...