程序不能AC的常见原因
程序员文章站
2022-05-30 16:30:09
...
程序不能AC的常见原因
时间超限:
- 传参数到被调用函数的时候没有引用导致每次都要复制,占用太多的时间。解决办法:加上引用符号&。
例如下面的结构体函数的情况:
#include <algorithm>
#include <unordered_map>
#include <stdio.h>
#include <vector>
#include <iostream>
using namespace std;
struct Node{
string address;
int data;
string next;
friend bool operator< (Node& a,Node& b)//最开始没有写引用符号,导致时间超限!!!
{
return a.data<b.data;
}
};
int main()
{
int n;
char begin[10];
scanf("%d%s",&n,begin);
vector<Node> nodes;
unordered_map<string, Node> map;//总是忘记写逗号导致错误
char begin1[10],next[10];
int data;
for(int i=0;i<n;i++){
scanf("%s%d%s",begin1,&data,next);
map[begin1]={begin1,data,next};
}
for(string i=begin;i!="-1";i=map[i].next) nodes.push_back(map[i]);
if (nodes.empty()) printf("0 -1");
else{
sort(nodes.begin(),nodes.end());
printf("%d %s\n",nodes.size(),nodes[0].address.c_str());
for(int i=0;i<nodes.size();i++){
if(i<nodes.size()-1){
printf("%s %d %s\n",nodes[i].address.c_str(),nodes[i].data,nodes[i+1].address.c_str());
}else
{
printf("%s %d -1\n",nodes[i].address.c_str(),nodes[i].data);
}
}
}
}