社区讨论

为什么wa18?求大佬修改

P1637三元上升子序列参与者 2已保存回复 2

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@mi6nm0m1
此快照首次捕获于
2025/11/20 07:49
4 个月前
此快照最后确认于
2025/11/20 07:49
4 个月前
查看原帖
树状数组 #include #include #include using namespace std; int C[30010],mn[30010],ans,tot,n; struct node{ int idx,val; }a[30010]; bool cmp(const node&a,const node&b){ return a.val<b.val; } int lowbit(int x){ return x&(-x); } int query(int x){ int ans=0; while(x>0){ ans+=C[x]; x-=lowbit(x); } return ans; } void add(int x,int y){ while(x<=n){ C[x]+=y; x+=lowbit(x); } } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i].val); a[i].idx=i; } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++){ if(a[i].val==a[i-1].val&&i!=1){ mn[i]=mn[i-1]; continue; } mn[i]=query(a[i].idx); add(a[i].idx,1); } memset(C,0,sizeof(C)); for(int i=n;i>=1;i--){ ans+=query(n-a[i].idx+1)*mn[i]; add(n-a[i].idx+1,1); } printf("%d",ans); return 0; }

回复

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

正在加载回复...