在完成Codeforces Round #787 (Div. 3)D. Vertical Paths 时发现自己的算法思路和题解相近,但是运算时间却差了好几倍,通过不断地尝试,甚至感觉自己的代码已经跟题解完全一样了,但时间却未改善
突然发现好像dl的代码都有一个共性的地方 他们一般不会使用cout<#includeusing namespace std; typedef long long int ll; void solve() { int k; cin>>k; if (k==1) { cin>>k; cout << "1n1n1nn"; return ; } //out.resize(k+1); vector in(k+1,true); vector p(k+1); vector visited(k+1,false); vector ret[k+1]; for (int j=1;j<=k;j++) { cin>>p[j]; in[p[j]]=false;//入度+1 //out[p[k]].push_back(j); } ll res=0; for(int mm=1;mm<=k;mm++) { if (in[mm]!=true) continue; int now=mm; ret[res].emplace_back(now); visited[now]=1; while(p[now]!=now&&!visited[p[now]]) { //到底 now=p[now]; ret[res].emplace_back(now); visited[now]=1; // vector ::iterator p=out[now].begin(); //可以继续往下 } res++; } cout< out; int main() { ios::sync_with_stdio(false); ll n; cin>> n; for (int i=0;i



