【NOIP模拟】行星通道计划

本文介绍了一种使用二维树状数组解决线段相交问题的方法,通过维护动态二维前缀和,有效地处理了线段的加入和删除操作,适用于需要快速查询线段相交情况的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题面

时限500ms

分析

考完才发现,很裸的二维树状数组也能过

可以画图发现,能满足两条线相交,只有两种情况 :

1.大的比大的大,小的在中间(9比7大,2在1和7中间)

2.小的比小的小,大的在中间(或者说1比2小,7在2和9中间)

还有各种修改操作,第一个想到的就是树状数组,线段树之类的。

而二维树状数组维护的就是动态二维前缀和,根据我们推出来的结论,超适合做此题。

设x<y,把两端分别为x和y的一条线段加入二维树状数组的(x,y)位置

看下面此图,红色和蓝色矩形中的权值,就是我们要求的。根据上面两句话推出来的。

代码

  1. #include<bits/stdc++.h>  
  2. using namespace std;  
  3. #define N 1010  
  4. #define M 500050  
  5. int n,m;  
  6. int t[N][N];  
  7. struct email  
  8. {  
  9.     int x,y,c,k;  
  10. }a[M];  
  11. template<class T>    
  12. void read(T &x)    
  13. {    
  14.     x=0;    
  15.     static char c=getchar();    
  16.     while(c<'0'||c>'9') c=getchar();    
  17.     while(c>='0'&&c<='9')    
  18.     x=x*10+c-'0',c=getchar();    
  19. }    
  20. inline int lowbit(int x){return x&(-x);}  
  21. inline void add(int x,int y,int v)  
  22. {  
  23.     for(int i=x;i<=n;i+=lowbit(i))  
  24.         for(int j=y;j<=n;j+=lowbit(j))  
  25.             t[i][j]+=v;  
  26. }  
  27. inline int query(int x,int y)  
  28. {  
  29.     if(x<=0||y<=0) return 0;  
  30.     int ret=0;  
  31.     for(int i=x;i;i-=lowbit(i))  
  32.         for(int j=y;j;j-=lowbit(j))  
  33.             ret+=t[i][j];  
  34.     return ret;  
  35. }  
  36.   
  37. int main()  
  38. {  
  39.     read(n);read(m);  
  40.     for(int i=1;i<=m;i++)  
  41.     {  
  42.         read(a[i].c);  
  43.         if(a[i].c==0)  
  44.         {  
  45.             read(a[i].x),read(a[i].y);  
  46.             if(a[i].x>a[i].y)swap(a[i].x,a[i].y);  
  47.             int x=a[i].x,y=a[i].y;  
  48.             if(y-x<2){printf("0\n");continue;}  
  49.             int ans=query(x-1,y-1)-query(x-1,x)+query(y-1,n)-query(x,n)-query(y-1,y)+query(x,y);  
  50.             printf("%d\n",ans);   
  51.             add(x,y,1);  
  52.         }  
  53.         else  
  54.         {  
  55.             read(a[i].k);  
  56.             add(a[a[i].k].x,a[a[i].k].y,-1);  
  57.         }  
  58.     }  
  59. }  

转载于:https://www.cnblogs.com/NSD-email0820/p/9839304.html

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值