简单动态开点 - E.Grid

E.Grid:https://ac.nowcoder.com/acm/contest/1108/E

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=1e6;
int sum[maxn],ls[maxn],rs[maxn];
int sum2[maxn],ls2[maxn],rs2[maxn],cnt,cnt2;
void up(int& o,int l,int r,int ql,int qr)
{
	if(!o)o=++cnt;  //动态开点,节点存在就不开, 节点不存在就开店
	if(sum[o]==r-l+1)return;  //若该区间满了就不需要再更新下去了
	if(l>=ql&&r<=qr)
	{
		sum[o]=r-l+1;
		return;
	}
	int m=(l+r)/2;
	if(ql<=m)up(ls[o],l,m,ql,qr);
	if(qr>m)up(rs[o],m+1,r,ql,qr);
	sum[o]=sum[ls[o]]+sum[rs[o]];
}
void up2(int& o,int l,int r,int ql,int qr)
{
	if(!o)o=++cnt2;
	if(sum2[o]==r-l+1)return;
	if(l>=ql&&r<=qr)
	{
		sum2[o]=r-l+1;
		return;
	}
	int m=(l+r)/2;
	if(ql<=m)up2(ls2[o],l,m,ql,qr);
	if(qr>m)up2(rs2[o],m+1,r,ql,qr);
	sum2[o]=sum2[ls2[o]]+sum2[rs2[o]];
}
int main()
{
	int n,m,q,op,a,b,rt,rt2;
	while(~scanf("%d%d%d",&n,&m,&q))
	{
		cnt=cnt2=rt=rt2=0;
		while(q--)
		{
			scanf("%d%d%d",&op,&a,&b);
			if(op==1)up(rt,1,n,a,b);
			else up2(rt2,1,m,a,b);
			ll ans=1ll*sum[1]*m+1ll*(n-sum[1])*sum2[1];
			ans=1ll*n*m-ans+1;
			if(sum[1]==0)ans=1ll*(m-sum2[1])*n+sum2[1];
			if(sum2[1]==0)ans=1ll*(n-sum[1])*m+sum[1];
			printf("%lld\n",ans);
		}
		for(int i=1;i<=cnt;i++)
		sum[i]=ls[i]=rs[i]=0;
		for(int i=1;i<=cnt2;i++)
		sum2[i]=ls2[i]=rs2[i]=0;
	}
}


恬不知耻得的抄了xls的代码,嘿嘿

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以回答这个问题。Pyecharts.charts.Grid()是一个用于创建网格布局的类,可以用于将多个图表组合在一起。以下是一个示例代码: ```python from pyecharts.charts import Bar, Line, Grid # 创建柱状图 bar = Bar() bar.add_xaxis(['A', 'B', 'C', 'D']) bar.add_yaxis('数据1', [5, 20, 36, 10]) bar.add_yaxis('数据2', [15, 6, 45, 20]) # 创建折线图 line = Line() line.add_xaxis(['A', 'B', 'C', 'D']) line.add_yaxis('数据3', [10, 30, 20, 15]) line.add_yaxis('数据4', [5, 15, 25, 35]) # 创建网格布局 grid = Grid() grid.add(bar, grid_opts=GridOpts(pos_left="5%", pos_right="5%")) grid.add(line, grid_opts=GridOpts(pos_left="5%", pos_right="5%")) # 渲染图表 grid.render() ``` 这个例子中,我们创建了一个柱状图和一个折线图,并将它们组合在一个网格布局中。我们使用了`GridOpts`类来设置每个图表在网格中的位置。最后,我们调用`render()`方法来渲染图表。 ### 回答2: Pyecharts是一个Python库,用于生成各种类型的交互式图表。Pyecharts提供了多种图表类型,其中Grid是一种用于将多个图表组合在一个网格中进行展示的图表类型。 Pyecharts.charts.Grid()是一个用于创建网格布局的类。通过Grid类,我们可以在一个网格中同时展示多个图表。这样可以方便地比较、分析和展示多个图表之间的数据关系。 例如,我们可以使用Grid类将柱状图和折线图组合在一个网格中展示,这样可以直观地比较两种不同类型的数据趋势。代码示例如下: ```python from pyecharts.charts import Bar, Line, Grid from pyecharts import options as opts # 创建柱状图 bar = Bar() bar.add_xaxis(["A", "B", "C", "D", "E"]) bar.add_yaxis("柱状图", [1, 2, 3, 4, 5]) # 创建折线图 line = Line() line.add_xaxis(["A", "B", "C", "D", "E"]) line.add_yaxis("折线图", [5, 4, 3, 2, 1]) # 创建网格布局,将柱状图和折线图组合在一个网格中 grid = Grid() grid.add(bar, grid_opts=opts.GridOpts(pos_left="5%", pos_right="5%")) grid.add(line, grid_opts=opts.GridOpts(pos_left="5%", pos_right="5%")) # 渲染生成HTML文件 grid.render("grid_example.html") ``` 在上述示例中,我们首先创建了一个柱状图和一个折线图,并设置它们的x轴和y轴数据。然后,通过创建Grid类实例,并使用add方法将柱状图和折线图添加到网格布局中。最后,通过调用render方法将网格布局渲染成HTML文件。在打生成的HTML文件时,我们可以看到柱状图和折线图被组合在同一个网格中展示。 总结来说,Pyecharts.charts.Grid()的例子展示了如何使用Grid类将多个图表组合在一个网格中进行展示,以便于比较和分析多个图表之间的数据关系。 ### 回答3: Pyecharts.charts.Grid()是Echarts Python库Pyecharts中的一个类,用于创建网格布局的图表。 在Pyecharts中,使用Grid()可以将多个图表组合在一个网格布局中展示。这个类提供了一种方便的方式来分割网格,并在每个网格中展示不同的图表。 以下是一个使用Grid()的简单例子: ```python from pyecharts import options as opts from pyecharts.charts import Bar, Line, Grid # 创建柱状图 bar = ( Bar() .add_xaxis(["A", "B", "C"]) .add_yaxis("Category1", [1, 2, 3]) .add_yaxis("Category2", [4, 5, 6]) .set_global_opts(title_opts=opts.TitleOpts(title="Bar Chart")) ) # 创建折线图 line = ( Line() .add_xaxis(["A", "B", "C"]) .add_yaxis("Category1", [3, 2, 1]) .add_yaxis("Category2", [6, 5, 4]) .set_global_opts(title_opts=opts.TitleOpts(title="Line Chart")) ) # 在网格中组合图表 grid = ( Grid() .add(bar, grid_opts=opts.GridOpts(pos_left="5%", pos_right="5%")) # 第一个图表占据整个网格 .add(line, grid_opts=opts.GridOpts(pos_left="5%", pos_right="5%")) # 第二个图表占据整个网格 ) # 渲染图表 grid.render("grid_example.html") ``` 以上的例子中,我们创建了一个柱状图和一个折线图,并将它们放入一个网格布局中。通过`Grid().add()`方法,可以将每个图表添加到网格中,并使用`grid_opts`参数来设置每个图表在网格中的位置和大小。 在这个例子中,我们只创建了一个网格,其中的两个图表占据了整个网格。通过调整`pos_left`和`pos_right`参数,可以控制每个图表在网格中的水平位置。其他还有很多参数可以调整,以满足更复杂的需求。 最后,我们使用`grid.render()`方法将图表渲染为一个HTML文件,并在浏览器中打以查看图表的结果。 通过使用Pyecharts.charts.Grid(),我们可以在一个图表中展示多个不同类型的图表,从而方便地进行数据可视化分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值