hdu 5084 HeHe (观察思考题)
2024-10-10 09:34:36
题意:
给一个n行n列的矩阵M。这个矩阵M由2n-1数构成。分别是t1,t2,....t(2n-1)。
m个query。每个query形式:ri, ci。
第i个query的答案 ans[i]=E[(ri+ans[i-1])%n ][(ci+ans[i-1])%n] E=M*M
求m个query的答案和。即ans[1]+...ans[m]的答案。
矩阵形式:
t3 t4 t5 t4 t5 t6 t7
t2 t3 t4 t3 t4 t5 t6
t1 t2 t3 t2 t3 t4 t5
t1 t2 t3 t4
思路:
直接算M*M,时间复杂度是n^3,会超时。考虑到矩阵具有特殊性,找出规律。
ans[x][y]=t[n+1-x](增)*t[n-1+y](减)+....+a[2n-x]*a[y]
ans[x+1][y+1]=ans[x][y] + 某个东西 - 某个东西 (这里不写出,在记事本上写一下便可观察出)
这样算M*M大约时间复杂度大约是n^2
代码:
int n,m,r,c;
int t[2500];
int ans[1005][1005]; int main(){
//freopen("test.in","r", stdin); while(scanf("%d",&n)!=EOF){
rep(i,1,2*n-1) scanf("%d",&t[i]);
mem(ans,0);
rep(i,1,n) rep(j,1,n){
if(i-1<1 || j-1<1)
rep(k,0,n-1) ans[i][j]+=t[n+1-i+k]*t[n-1+j-k];
else{
ans[i][j]=ans[i-1][j-1];
ans[i][j]-=t[2*n-(i-1)]*t[j-1];
ans[i][j]+=t[n+1-i]*t[n-1+j];
}
} ll sum=0;
int ANS;
scanf("%d",&m);
scanf("%d%d",&r,&c); ANS=ans[r+1][c+1]; sum+=ANS;
rep(i,2,m){
scanf("%d%d",&r,&c);
ANS=ans[(r+ANS)%n+1][(c+ANS)%n+1];
sum+=ANS;
}
printf("%I64d\n",sum);
} //fclose(stdin);
}
最新文章
- XE2:查看Extended Events收集的数据
- 【2016-11-3】【坚持学习】【Day18】【我认识的ORM】
- (2016弱校联盟十一专场10.3) 	B.Help the Princess!
- 鼠标滚轮控制侧边div上下翻动效果
- 基于Retrofit+RxJava的Android分层网络请求框架
- linux进程查找及杀死
- 实例源码--Android理财工具源码
- WCF - IIS Hosting
- Xutils 源码解析【转】
- ArrayList的toArray
- ubuntu14.04英文环境下安装中文输入法
- 【RAC】RAC相关基础知识
- GIT归纳整理
- 【系统监控】性能监测 vmstat,mpstat,iostat
- KafKa记录
- Pyperclip could not find a copy/paste mechanism for your system.
- Ionic2 App Import BrowserAnimationsModule or NoopAnimationsModule问题
- King&#39;s Quest POJ - 1904(强连通分量)
- BZOJ 1012: [JSOI2008]最大数maxnumber 单调队列/线段树/树状数组/乱搞
- Python 一行代码实现并行
热门文章
- DP之背包经典三例
- PHP中使用if的时候为什么建议将常量放在前面?
- python学习笔记(十五)-unittest单元测试的一个框架
- P5825-排列计数【EGF,NTT】
- Phalcon多模块如何实现连接不同数据库 《Phalcon入坑指南系列 五》
- Docker里面没有你期望的命令、甚至没有yum怎么办?
- 从零入门 Serverless | SAE 的极致应用部署效率
- 解决npm : 无法加载文件 D:\Code\renren-fast-vue\node_modules\.bin\npm.ps1,因为在......
- Frida高级逆向-Hook Java
- LuckySheet一款在线Excel使用心得