bzoj 2321: [BeiJing2011集训]星器 乱搞
2017-09-04 19:12
225 查看
题意
给定一个矩阵,定义一个操作:选择两个同一行或同一列不相邻的点,将这两个点上各一个星向中间移动一位,产生魔力为两点间距离-1,求始态到终态的产生魔力
n,m<=200,Ai,j<=1000
分析
真佩服能想出这道题的人。。。我们定义一个点(i,j)的势能为i*i+j*j。
假设现在操作选了两个点(i,j)和(i,k)且j+2<=k
操作前的势能为i∗i+j∗j+i∗i+k∗k
操作后的势能为i∗i+(j+1)∗(j+1)+i∗i+(k−1)∗(k−1)
前-后得2∗k−2∗j−2=2∗(k−j−1)
所以答案就是初始状态的势能减去结束状态的势能/2.
这。。。
代码
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; typedef long long LL; int n,m; int main() { scanf("%d%d",&n,&m); LL ans=0; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) { int x; scanf("%d",&x); ans+=x*(i*i+j*j); } for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) { int x; scanf("%d",&x); ans-=x*(i*i+j*j); } printf("%lld",ans/2); return 0; }
相关文章推荐
- BZOJ 2321 BeiJing2011集训 星器
- BZOJ 2321: [BeiJing2011集训]星器
- bzoj2321[BeiJing2011集训]星器
- BZOJ2321 [BeiJing2011集训]星器 能量守恒定律
- bzoj2321: [BeiJing2011集训]星器
- BZOJ 2321: [BeiJing2011集训]星器 脑洞
- BZOJ2321 [BeiJing2011集训]星器
- 【BZOJ 2321】 [BeiJing2011集训]星器
- Bzoj2321 [BeiJing2011集训]星器
- BZOJ2321 [BeiJing2011集训]星器 能量守恒定律
- [BZOJ2321][BeiJing2011集训]星器(结论???。。。)
- 【BZOJ 2321】[BeiJing2011集训]星器 脑洞
- BZOJ 2321 [BeiJing2011集训] 星器
- 【BZOJ】2321: [BeiJing2011集训]星器(数学+特殊的技巧)
- 2321: [BeiJing2011集训]星器
- 2321: [BeiJing2011集训]星器
- 2321: [BeiJing2011集训]星器
- BZOJ2321: [BeiJing2011集训]星器
- bzoj2460: [BeiJing2011]元素
- [高斯消元 线性基 树 记数] BZOJ 2322 [BeiJing2011]梦想封印