首页 > 其他分享 >[AGC001E] BBQ Hard

[AGC001E] BBQ Hard

时间:2023-01-13 11:55:22浏览次数:51  
标签:different skewers Hard AGC001E pieces dp Skewer Meal BBQ

Problem Statement

Snuke is having another barbeque party.

This time, he will make one serving of Skewer Meal.

He has a stock of $N$ Skewer Meal Packs. The $i$-th Skewer Meal Pack contains one skewer, $A_i$ pieces of beef and $B_i$ pieces of green pepper. All skewers in these packs are different and distinguishable, while all pieces of beef and all pieces of green pepper are, respectively, indistinguishable.

To make a Skewer Meal, he chooses two of his Skewer Meal Packs, and takes out all of the contents from the chosen packs, that is, two skewers and some pieces of beef or green pepper. (Remaining Skewer Meal Packs will not be used.) Then, all those pieces of food are threaded onto both skewers, one by one, in any order.

(See the image in the Sample section for better understanding.)

In how many different ways can he make a Skewer Meal? Two ways of making a Skewer Meal is different if and only if the sets of the used skewers are different, or the orders of the pieces of food are different. Since this number can be extremely large, find it modulo $10^9+7$.

Constraints

  • $2≦N≦200,000$
  • $1≦A_i≦2000, 1≦B_i≦2000$

Input

The input is given from Standard Input in the following format:

$N$
$A_1$ $B_1$
$A_2$ $B_2$
:
$A_N$ $B_N$

Output

Print the number of the different ways Snuke can make a serving of Skewer Meal, modulo $10^9+7$.


Sample Input 1

3
1 1
1 1
2 1

Sample Output 1

26

题目的意思是,对于所有的不同的 \(i,j\),要在 \(a_i+a_j+b_i+b_j\) 中选出 \(a_i+a_j\) 个位置给牛肉。换言之,求值:

\[\sum\limits_{i=1}^n\sum\limits_{j=i+1}^n C_{a_i+a_j+b_i+b_j}^{a_i+b_i} \]

所以这东西怎么求呢?观察到 \(a_i,b_i\le 1000\),考虑能不能使用这个性质。

接下来是很玄学的一步:把 \(C_{a_i+a_j+b_i+b_j}^{a_i+b_i}\) 看作从点 \((0,0)\) 到达 \((a_i+b_i,a_j+b_j)\) 的路径数

但这样 dp 次数有点多,再转化一层,看作从点 \((-a_i,-b_i)\) 走到 \((a_j,b_j)\)

注意到此时两个点已经分别只和 \(i\) 和 \(j\) 有关了。再预处理时将所有 \(dp_{-a_i,-b_i}\) 的值赋值为 1,然后跑完 dp,将所有的 \(dp_{a_i,b_i}\) 的值加起来,复杂度 \(O(\max(a_i,b_i)^2)\)

注意到 \((-a_i,-b_i)\) 到 \((a_i,b_i)\) 的值都不计入答案,可以减去,然后每种情况被算了两次,所以要再除以2.

#include<cstdio>
const int N=2e5+5,M=2005,P=1e9+7,iv2=P+1>>1;
int n,a[N],b[N],ans,c[M<<2][M<<2],f[M<<1][M<<1];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d%d",a+i,b+i),f[M-a[i]][M-b[i]]++;
	for(int i=-2000;i<=2000;i++)
		for(int j=-2000;j<=2000;j++)
			(f[i+M][j+M]+=(f[M+i-1][j+M]+f[i+M][j+M-1])%P)%=P;
	for(int i=c[0][0]=1;i<M*4;i++)
	{
		c[i][0]=c[i][i]=1;
		for(int j=1;j<i;j++)
			c[i][j]=(c[i-1][j]+c[i-1][j-1])%P;
	}
//	printf("%d %d\n",c[4][2],c[6][4]);
//	printf("%d\n",f[M+1][M+1]);
	for(int i=1;i<=n;i++)
	{
		(ans+=f[a[i]+M][b[i]+M])%=P;
		(ans-=c[a[i]+b[i]<<1][a[i]<<1])%=P;
	}
	printf("%d",1LL*(ans+P)*iv2%P);
}

标签:different,skewers,Hard,AGC001E,pieces,dp,Skewer,Meal,BBQ
From: https://www.cnblogs.com/mekoszc/p/17049192.html

相关文章

  • ShardingSphere
    高性能架构模式互联网业务兴起之后,海量用户加上海量数据的特点,单个数据库服务器已经难以满足业务需要,必须考虑数据库集群的方式来提高性能。高性能数据库集群的第一种方......
  • Codeforces 1335E2 Three Blocks Palindrome (hard version)
    链接难度:\(\texttt{1800}\)\(T\)组数据。一个序列\(a_{1\simn}\)。定义\([\underbrace{a,a,\dots,a}_{x},\underbrace{b,b,\dots,b}_{y},\underbrace{a,......
  • Sharding-Proxy 分库分表示例
    我司当前的一个数据库,分了51个数据库及表,使用 Sharding-JDBC去独立连接。(Sharding-JDBC是Sharding-Sphere的第一个产品,也是Sharding-Sphere的前身。它定位为轻量级Java框......
  • 【CF802O】April Fools' Problem (hard) 题解 (线段树模拟费用流)
    线段树模拟费用流。LG传送门。SolutionPart1根据题面,显然想到此题是费用流。建图方式亦是显然:\(S\rightarrowi\),流量为\(1\),费用为\(a_i\);\(i\rightarrowT_0\)......
  • 2493172 - SAP HANA Hardware and Cloud Measurement Tools
    SymptomThisistheofficialreleasenoteforSAPHANAhardwareandcloudmeasurementtools.SAPHANAhardwareandcloud measurementtoolshelpyoutom......
  • ARM Cortex-M0单片机进Hardfault后串口如何打印输出错误信息
    如果在程序运行时进hardfault想要打印出现问题前的错误信息,可按如下操作实现:我们先找到系统启动文件中的HardFault_Handler汇编入口,将其整个替换为如下写法:HardFault_Ha......
  • 用hardhat 做ERC20转帐时报了 Nonce too high. Expected nonce to be 6 but got 11. N
    https://github.com/scaffold-eth/scaffold-eth/issues/476InMetamask,ensureyouareonyourdev/testaccountthen:clickontheavatarcircletoprightInthe......
  • shardingsphere
    shardingsphere目录shardingsphere1.面试题1.1业务增长-数据库性能优化2.分库分表带来的优点3.分库分表带来的问题4.分库分表核心概念4.1垂直分表例子:商品详情一般是拆......
  • ShardingJDBC
    分库分表概念垂直角度(表结构不一样,大结构分多个小结构)垂直分表:将一个表字段拆分多个表,每个表存储部分字段好处:避免IO时锁表的次数,分离热点字段和非热点字段,避免......
  • AGC006D Median Pyramid Hard
    ​​\(AGC006D\)\(Median\)\(Pyramid\)\(Hard\)​​一、题目描述二、题目解析这道例题看到时毫无头绪,因为课程是二分,所以往二分的方向想,猜到是二分枚举最上面的那个数是......