社区讨论
求助(玄学错误)
灌水区参与者 4已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @m24s6xwc
- 此快照首次捕获于
- 2024/10/11 21:46 去年
- 此快照最后确认于
- 2025/11/04 17:25 4 个月前
下面是我写的题目 序列合并 的代码
CPP#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<string>
#include<vector>
#include<list>
#include<queue>
#include<deque>
#include<map>
#include<set>
using namespace std;
#define endl '\n'
const int N=1005;
const double PI=3.1415926535;
const double eps=5e-7;
void Ios()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cout.flags(ios::fixed);
cout.precision(10);
return;
}
struct node
{
int ida,idb,num;
};
bool operator >(node p,node q)
{
return p.num<q.num;
}
int n,cnt;
int a[100005],b[100005];
priority_queue<node> q;
int main()
{
Ios();
memset(a,0x3f,sizeof(a));
memset(b,0x3f,sizeof(b));
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
cin>>b[i];
}
cout<<a[1]+b[1]<<endl;
q.push(node{1,2,a[1]+b[2]});
q.push(node{2,1,a[2]+b[1]});
cnt++;
while(cnt<n)
{
node x=q.top();
q.pop();
int idax=x.ida;
int idbx=x.idb;
int numx=x.num;
cout<<numx<<" ";
q.push(node{idax+1,idbx,a[idax+1]+b[idbx]});
q.push(node{idax,idbx+1,a[idax]+b[idbx+1]});
cnt++;
}
return 0;
}
抛开思路正误不谈,这段代码运行时,在DEV环境下会触发stl_function.h文件的错误,在洛谷在线IDE上评测也会出现类似错误。有没有大佬能够帮忙指点一下错误的原因?(暂时怀疑是运算符重载错误)感谢(悬2-3关)!
(后附洛谷在线IDE编译错误报错)
CPPIn file included from /nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/string:49,
from /nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/locale_classes.h:40,
from /nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/ios_base.h:41,
from /nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/ios:44,
from /nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/ostream:40,
from /nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/iostream:41,
from /tmp/compiler_e2sqdya5/src:1:
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_function.h: In instantiation of ‘constexpr bool std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = node]’:
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/predefined_ops.h:196:23: required from ‘bool __gnu_cxx::__ops::_Iter_comp_val<_Compare>::operator()(_Iterator, _Value&) [with _Iterator = __gnu_cxx::__normal_iterator<node*, std::vector<node, std::allocator<node> > >; _Value = node; _Compare = std::less<node>]’
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_heap.h:140:48: required from ‘void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<node*, vector<node, allocator<node> > >; _Distance = long int; _Tp = node; _Compare = __gnu_cxx::__ops::_Iter_comp_val<less<node> >]’
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_heap.h:216:23: required from ‘void std::push_heap(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<node*, vector<node, allocator<node> > >; _Compare = less<node>]’
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_queue.h:749:16: required from ‘void std::priority_queue<_Tp, _Sequence, _Compare>::push(value_type&&) [with _Tp = node; _Sequence = std::vector<node, std::allocator<node> >; _Compare = std::less<node>; value_type = node]’
/tmp/compiler_e2sqdya5/src:60:8: required from here
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_function.h:408:20: 错误:no match for ‘operator<’ (operand types are ‘const node’ and ‘const node’)
408 | { return __x < __y; }
| ~~~~^~~~~
In file included from /nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/string:48:
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_iterator.h:455:5: 附注:candidate: ‘template<class _Iterator> bool std::operator<(const reverse_iterator<_Iterator>&, const reverse_iterator<_Iterator>&)’
455 | operator<(const reverse_iterator<_Iterator>& __x,
| ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_iterator.h:455:5: 附注: template argument deduction/substitution failed:
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_function.h:408:20: 附注: ‘const node’ is not derived from ‘const std::reverse_iterator<_Iterator>’
408 | { return __x < __y; }
| ~~~~^~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_iterator.h:500:5: 附注:candidate: ‘template<class _IteratorL, class _IteratorR> bool std::operator<(const reverse_iterator<_Iterator>&, const reverse_iterator<_IteratorR>&)’
500 | operator<(const reverse_iterator<_IteratorL>& __x,
| ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_iterator.h:500:5: 附注: template argument deduction/substitution failed:
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_function.h:408:20: 附注: ‘const node’ is not derived from ‘const std::reverse_iterator<_Iterator>’
408 | { return __x < __y; }
| ~~~~^~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_iterator.h:1705:5: 附注:candidate: ‘template<class _IteratorL, class _IteratorR> bool std::operator<(const move_iterator<_IteratorL>&, const move_iterator<_IteratorR>&)’
1705 | operator<(const move_iterator<_IteratorL>& __x,
| ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_iterator.h:1705:5: 附注: template argument deduction/substitution failed:
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_function.h:408:20: 附注: ‘const node’ is not derived from ‘const std::move_iterator<_IteratorL>’
408 | { return __x < __y; }
| ~~~~^~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_iterator.h:1770:5: 附注:candidate: ‘template<class _Iterator> bool std::operator<(const move_iterator<_IteratorL>&, const move_iterator<_IteratorL>&)’
1770 | operator<(const move_iterator<_Iterator>& __x,
| ^~~~~~~~
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_iterator.h:1770:5: 附注: template argument deduction/substitution failed:
/nix/store/al0w33yvyzkjm86ndpf42knjfymfisph-luogu-gcc-13.2.0/include/c++/13.2.0/bits/stl_function.h:408:20: 附注: ‘const node’ is not derived from ‘const std::move_iterator<_IteratorL>’
408 | { return __x < __y; }
| ~~~~^~~~~
回复
共 3 条回复,欢迎继续交流。
正在加载回复...