[关闭]
@exut 2024-11-14T02:54:00.000000Z 字数 808 阅读 122

OIFC20241113

考试总结


不嘻嘻

心态裂开了

挂挂挂

T1

简单期望,可以对 个数排序,然后算每个数的期望排名乘上权值,遇到冲突的数就暂时剔除冲突那个概率算完加回去就好了

傻逼出题人卡常,上个快读才过

  1. #include<bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4. const int N=1e7+5;
  5. const int mod=1e9+7;
  6. int read(){
  7. int a=0,s=0,c=getchar();
  8. while(!isdigit(c)) s|=(c=='-'),c=getchar();
  9. while(isdigit(c)) a=a*10+c-48,c=getchar();
  10. return a;
  11. }
  12. struct node{
  13. int val;
  14. int p;
  15. int id;
  16. }w[N];
  17. bool cmp(node x,node y){
  18. return x.val<y.val;
  19. }
  20. int n;
  21. int cut[N];
  22. signed main(){
  23. freopen("good.in","r",stdin);
  24. freopen("good.out","w",stdout);
  25. n=read();
  26. for(int i=1;i<=n;i++){
  27. w[i*2-1].val=read();
  28. w[i*2].val=read();
  29. w[i*2-1].p=read();
  30. w[i*2].p=read();
  31. w[i*2-1].id=w[i*2].id=i;
  32. }
  33. sort(w+1,w+2*n+1,cmp);
  34. int P=0;
  35. int ans=0;
  36. for(int i=1;i<=2*n;i++){
  37. ans=(ans+((((P+1-cut[w[i].id]+mod)%mod+mod)%mod)*w[i].p%mod)*w[i].val)%mod;
  38. cut[w[i].id]=w[i].p;
  39. P+=w[i].p,P%=mod;
  40. // cout<<P<<endl;
  41. }
  42. cout<<ans;
  43. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注