【jzoj3771】【NOI2015模拟8.15】【小 Z 的烦恼】
来源:互联网 发布:2016coc双王升级数据 编辑:程序博客网 时间:2024/05/18 13:45
题目大意
小 Z 最近遇上了大麻烦,他的数学分析挂科了。于是他只好找数分老师求情。
善良的数分老师答应不挂他,但是要求小 Z 帮助他一起解决一个难题问题是这样的,现在有 n 个标号为 1~n 的球和 m 个盒子,每个球都可以放进且只能放进一个盒子里面,但是要满足如下的规则:
1. 若把标号为 i 的球放进了第 j 个盒子,那么标号为 2*i 的球一定要在第 j+1 个盒子里面(若 j
2. 若把标号为 i 的球放进了第 j 个盒子,并且 k*2=i,那么标号为 k 的球一定要在第 j-1 个盒子里面(若 j>1)
小 Z 的数分老师想要知道,给定了 n 和 m 的时候,第一个盒子最多能放进去多少个球。事实上,他已经推算出了公式,但是需要检验当 n 趋向于无穷大时是否仍然满足这个公式,因此 n 可能会非常大。
解题思路
可以发现第一个盒子数取值范围为1到n/2m−1 ,合法的数x集合为首项为2mx,公差为2mx+1,x属于整数
ans=∑∞x=0n−2mx2mx+1+1
=∑∞x=0n2mx+12
高精度位运算即可。
code
#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define LF double#define LL long long#define ULL unsigned int#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)#define fr(i,j) for(int i=begin[j];i;i=next[i])#define f2(i,j) for(int i=begi2[j];i;i=nex2[i])using namespace std;int const mn=500+2,inf=1e9+7;int n,m,nn,K,a[mn][mn],b[mn*mn],c[mn][mn];LL tot,f[mn*mn][2],g[mn*mn][2],sizeb0,sumb0;void oper(int x,int y,int op){ int l=c[x][y],p=l-1; LL q0=0,q1=0; while(p){ q0+=f[p][0]; q1+=f[p][1]; p-=p&(-p); } q0<<=1;q1<<=1; tot+=op*((q0+g[l][0]-sizeb0)*a[x][y]-q1-g[l][1]+sumb0); sizeb0+=op; sumb0+=a[x][y]*op; g[l][0]+=op; g[l][1]+=a[x][y]*op; p=l;q0=a[x][y]*op; while(p<=nn){ f[p][0]+=op; f[p][1]+=q0; p+=p&(-p); }}int main(){ freopen("matrix.in","r",stdin); freopen("matrix.out","w",stdout); scanf("%d%d%d",&n,&m,&K); fo(i,1,n)fo(j,1,m)scanf("%d",&a[i][j]),b[++b[0]]=a[i][j]; sort(b+1,b+b[0]+1); int tmp=0; fo(i,1,b[0])if((i==1)||(b[i]!=b[i-1]))b[++tmp]=b[i]; b[0]=tmp;nn=b[0]; fo(x,1,n)fo(y,1,m){ int l=1,r=b[0],md; while(l!=r){ md=(l+r)>>1; if(b[md]<a[x][y])l=md+1; else r=md; } c[x][y]=l; } fo(i,1,K)fo(j,1,K)oper(i,j,1); LL ans=tot; fo(i,1,n-K+1){ if(i&1){ fo(j,1,m-K){ fo(k,i,i+K-1)oper(k,j,-1),oper(k,j+K,1); ans+=tot; } if(i!=n-K+1){ fo(k,m-K+1,m)oper(i,k,-1),oper(i+K,k,1); ans+=tot; } }else{ fd(j,m-K,1){ fo(k,i,i+K-1)oper(k,j,1),oper(k,j+K,-1); ans+=tot; } if(i!=n-K+1){ fo(k,1,K)oper(i,k,-1),oper(i+K,k,1); ans+=tot; } } } printf("%lld",ans*2%10007); return 0;}
阅读全文
0 0
- 【JZOJ3771】【NOI2015模拟8.15】小 Z 的烦恼
- 【jzoj3771】【NOI2015模拟8.15】【小 Z 的烦恼】
- 【jzoj3773】【NOI2015模拟8.15】【小 P 的烦恼】【动态规划】
- 【JZOJ3773】【NOI2015模拟8.15】小 P 的烦恼
- NYOJ 453 小珂的烦恼 模拟
- NYOJ-453 小珂的烦恼【模拟||找规律】
- BZOJ 2760 JLOI 2011 小A的烦恼 模拟
- 小明的烦恼
- 小轩的烦恼
- 小明的烦恼
- 小明的烦恼
- 小萨的烦恼
- 小萨的烦恼
- 小萨的烦恼
- 小萨的烦恼
- 小明的烦恼
- 小明的烦恼
- 小明的烦恼
- 猪王争霸
- android build 完成时发出通知
- LOJ 1422(区间DP)
- 错误解决方案
- 蓝桥杯_算法训练_大小写转换
- 【jzoj3771】【NOI2015模拟8.15】【小 Z 的烦恼】
- C++ virtual关键字
- 记一次寻找http代理修改过程
- poj
- myEclipse导出可运行的jar包
- 源码编译报 Xmx Size、GC、ninja 相关错误解决方案
- 7月投产问题及应对方案
- 【线程】多线程同时拷贝同一文件
- 一维数值与指针的问题关系