社区讨论
警示后入TLE
P5524[Ynoi2012] NOIP2015 充满了希望参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhz4fime
- 此快照首次捕获于
- 2025/11/15 01:17 3 个月前
- 此快照最后确认于
- 2025/11/16 13:56 3 个月前
如果你TLE了,请考虑vector常数(别用vector离散化!!!请用sort+指针!!!)。
TLE写法:
CPP for( register int i = 1 ; i <= m ; i ++ )
{
if( input[ i ].id != 0 ) b.insert( input[ i ].id , input[ i ].cost );
for( vector< pair< int , pair< int , int > > >::iterator it = died[ i ].begin() ; it != died[ i ].end() ; it ++ )
{
if( ( it -> second ).first < 0 )
{
ans[ it -> first ] -= b.ask( ( it -> second ).second ) ;
if( 0 - ( it -> second ).first > 1 ) ans[ it -> first ] += b.ask( 0 - ( ( it -> second ).first ) - 1 ) ;
}
else
{
ans[ it -> first ] += b.ask( ( it -> second ).second ) ;
if( ( it -> second ).first > 1 ) ans[ it -> first ] -= b.ask( ( it -> second ).first - 1 ) ;
}
}
}
正确写法:
CPPfor( register int i = 1 ; i <= m ; i ++ )
{
// b.insert( input[ i ].id , input[ i ].cost ) ;
if( input[ i ].id != 0 ) b.insert( input[ i ].id , input[ i ].cost );
while( l < died.size()&&died[ l ].first.first <= i )
{
if( died[ l ].first.second < 0 )
{
ans[ -died[ l ].first.second ] -= b.ask( died[ l ].second.second ) ;
if( died[ l ].second.first != 1 )
ans[ -died[ l ].first.second ] += b.ask( died[ l ].second.first - 1 ) ;
}
else
{
ans[ died[ l ].first.second ] += b.ask( died[ l ].second.second ) ;
if( died[ l ].second.first != 1 )
ans[ died[ l ].first.second ] -= b.ask( died[ l ].second.first - 1 ) ;
}
l ++ ;
// cout << l << " " ;
}
}
(vector常数大的吓人!!!)
回复
共 1 条回复,欢迎继续交流。
正在加载回复...