社区讨论

76分求调整

P11214【MX-J8-T2】黑洞参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@m2hagez7
此快照首次捕获于
2024/10/20 15:51
去年
此快照最后确认于
2025/11/04 16:43
4 个月前
查看原帖
以二维为例,当最大长度是ax,ay,黑洞坐标是x,y,最终答案是min(ax-x,ay-y)+min(ax-x,y-1)+min(x-1,ay-y)+min(x-1,y-1)+1。 延伸到多维,则最终答案也可以表示为2^n+1个数的和,除了表示黑洞的1,剩下的数字均为n个数的最小值,且第i个数为ai_max-ai或ai-1。 我最后几个测试点超时了,求调整。```cpp #include #include using namespace std; long long n,a[10000000][2],con[10000000],ans; struct st{ long long an; long long num; }na[10000000]; bool compare(const st&k,const st&b){
return k.an<b.an; } long long f(long long k,long long b){ long long p=1,m=2; if(b==0)return k; while(p2<b){ m=m; p*=2; m=m%1000000007; } while(p<b){ m*=2; p++; m=m%1000000007; } return km%1000000007; } int main(){ cin>>n; for(long long i=1;i<=n;i++){ cin>>a[i][0]; } for(long long i=1;i<=n;i++){ cin>>a[i][1]; } for(long long i=1;i<=n;i++){ na[i2-1].an=a[i][0]-a[i][1]; na[i2].an=a[i][1]-1; na[i2-1].num=i2-1; na[i2].num=i2; } sort(na+1,na+n2+1,compare); for(long long i=1;i<=n*2;i++){ int j=0,p=(na[i].num+1)/2; long long m=na[i].an; p++; while(p<=n){ if(con[p]==0)j++; p++;} p=(na[i].num+1)/2; p--; while(p>0){ if(con[p]==0)j++; p--; } m=f(m,j); ans+=m; ans%=1000000007; con[(na[i].num+1)/2]++; if(con[(na[i].num+1)/2]==2)break; } cout<<(ans+1)%1000000007; }
CPP

回复

2 条回复,欢迎继续交流。

正在加载回复...