hdu 5084 HeHe (观察思考题)
题意:
给一个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);
}
hdu 5084 HeHe (观察思考题)的更多相关文章
- HDU 5084 HeHe --找规律
题意: 给出矩阵M,求M*M矩阵的r行c列的数,每个查询跟前一个查询的结果有关. 解法: 观察该矩阵得知,令ans = M*M,则 ans[x][y] = (n-1-x行的每个值)*(n-1+y列的每 ...
- hdu 5084 前缀和预处理
http://acm.hdu.edu.cn/showproblem.php?pid=5084 给出矩阵M,求M*M矩阵的r行c列的数,每个查询跟前一个查询的结果有关. 观察该矩阵得知,令ans = M ...
- hdu 4639 Hehe
http://acm.hdu.edu.cn/showproblem.php?pid=4639 每一段 "hehe..... " 相互独立 将每一段 "hehe..... ...
- 【斐波那契DP】HDU 4639——HeHe
题目:点击打开链接 多校练习赛4的简单题,但是比赛的时候想到了推导公式f(n)=f(n-1)+f(n-2)(就是斐波那契数列),最后却没做出来. 首先手写一下he(不是hehe)连续时的规律.0-1 ...
- hdu 4639 Hehe (dp)
一道dp题,转移方程不是自己推出来的. 题目的意思是用‘qnmlgb’替换‘hehe’,可以替换也可以不替换,问有多少种情况. 如果结尾不是‘hehe’,那么dp[i]=dp[i-1],如果是是‘he ...
- HDU 4639 Hehe 2013 Multi-University Training Contest 4
题意大致如下:屌丝找女神聊天,女神回了一句 hehe ,而我们都知道 Hehe 有两个意思,一个就是 Hehe ,另外一个则是 wqnmlgb (我去年买了个表) ,所以屌丝很纠结,于是开始思考到底女 ...
- HDU 4639 hehe 杭电2013多校联赛第四场1008题
解题报告:题目的意思是输入一个字符串,并规定,里面的“hehe”可以用"wqnmlgb"来代替,也可以不代替,问输入的这个字符串在经过相关的代替之后可以有多少种不同的形态.先打一个 ...
- HDU 4639 Hehe (2013多校4 1008 水题)
Hehe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 5084(矩阵操作)
HeHe Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
随机推荐
- CentOS8部署tftp
tftp:简单文本传输协议,而ftp:文本传输协议.可以把tftp看成是ftp的精简版.tftp用于免登录传输小文件,tftp服务端监听在udp协议的69端口tftp简单的工作原理: tftp服务端与 ...
- Java实现导出Excel
项目中实现的代码: 一.//controller @RequestMapping(value = "/exportAccountManager") public void expo ...
- 全流程指导Visual Studio Code+Markdown Nice+gitee+PicGo管理自己的技术博客文章
全流程指导Visual Studio Code+Markdown Nice+gitee+PicGo管理自己的技术博客 1.背景 我挺喜欢写博客,但每一次将博客转移到公众号或者知乎,总是需要调整格式,不 ...
- JavaScript 获取html元素
1.通过ID获取: document.getElementById("idname"); 2.通过class.tagname获取: var wcyclass = document. ...
- [转载]提升SQLite数据插入效率低、速度慢的方法
转载地址:http://blog.csdn.net/chenguanzhou123/article/details/9376537#,如果有侵犯原创,请留言告知,本人会及时删除. 前言 SQLite数 ...
- mac上通过git推送时忽略node_modules文件夹
node_modules出现改动一般不需要通过git推送,如果不忽略node_modules每次安装新的包会出现几千条新变动,并没有必要推送 1.通过终端进入项目根目录 创建 .gitignore 文 ...
- 基于BootStrap的轮播图
准备 先设计一个承载轮播图的区域:四周向外阴影.扁平圆角: 1 #myShuffArea{ 2 width: 50%; 3 height: 300px; 4 border: solid 1px gai ...
- PAT (Basic Level) Practice (中文)1025 反转链表 (25分)
1025 反转链表 (25分) 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→ ...
- 7-Zip
7-Zip https://www.7-zip.org/
- ShutdownHook原理
微信搜索"捉虫大师",点赞.关注是对我最大的鼓励 ShutdownHook介绍 在java程序中,很容易在进程结束时添加一个钩子,即ShutdownHook.通常在程序启动时加入以 ...