OJ踩坑:使用cout<<endl存在的问题
OJ踩坑:使用cout<
在完成Codeforces Round #787 (Div. 3)D. Vertical Paths 时发现自己的算法思路和题解相近,但是运算时间却差了好几倍,通过不断地尝试,甚至感觉自己的代码已经跟题解完全一样了,但时间却未改善


突然发现好像dl的代码都有一个共性的地方
他们一般不会使用cout<
相反是使用 cout<<“\n” 或者 cout<<'\n’的方式
经过查阅资料得知,原来在输出比较少的时候,二者区别不大,但是当输出很多的时候,使用cout<

这个时候才发现可能之前写的一些代码不能通过是因为这个原因。。。。
附本题题解加深自己记忆
#include
using namespace std;
typedef long long int ll;
void solve()
{int k;cin>>k;if (k==1){cin>>k;cout << "1\n1\n1\n\n";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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
在完成Codeforces Round #787 (Div. 3)D. Vertical Paths 时发现自己的算法思路和题解相近,但是运算时间却差了好几倍,通过不断地尝试,甚至感觉自己的代码已经跟题解完全一样了,但时间却未改善


突然发现好像dl的代码都有一个共性的地方
他们一般不会使用cout<
相反是使用 cout<<“\n” 或者 cout<<'\n’的方式
经过查阅资料得知,原来在输出比较少的时候,二者区别不大,但是当输出很多的时候,使用cout<

这个时候才发现可能之前写的一些代码不能通过是因为这个原因。。。。
附本题题解加深自己记忆
#include
using namespace std;
typedef long long int ll;
void solve()
{int k;cin>>k;if (k==1){cin>>k;cout << "1\n1\n1\n\n";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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
相反是使用 cout<<“\n” 或者 cout<<'\n’的方式
经过查阅资料得知,原来在输出比较少的时候,二者区别不大,但是当输出很多的时候,使用cout<

这个时候才发现可能之前写的一些代码不能通过是因为这个原因。。。。
附本题题解加深自己记忆
#include
using namespace std;
typedef long long int ll;
void solve()
{int k;cin>>k;if (k==1){cin>>k;cout << "1\n1\n1\n\n";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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

这个时候才发现可能之前写的一些代码不能通过是因为这个原因。。。。
附本题题解加深自己记忆
#include
using namespace std;
typedef long long int ll;
void solve()
{int k;cin>>k;if (k==1){cin>>k;cout << "1\n1\n1\n\n";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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
