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 ...
随机推荐
- 学习PHP中Fileinfo扩展的使用
今天来学习的这个扩展其实现在也已经是标配的一个扩展了,为什么呢?因为 Laravel 框架在安装的时候它就是必须的一个扩展,没有打开它的话,连 Laravel 框架都是无法使用的. Fileinfo ...
- DEDE整合套件实现本地多个网站随意切换的开发环境
一.修改WEB全局配置: 在Listen 80 后面添加自己的端口号. 例如,2020是我的端口 Listen 2020 二.修改WEB站点配置: a---在NameVirtualHost *:80后 ...
- Java面向对象系列(4)- 类与对象的创建
类与对象的关系 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是不能代表某一个具体的事物 动物.植物.手机-- Person类.Pet类.Car类等,这些类都是用来描述/定义某一类具体的事 ...
- javascript 无限分类
* 根据php无限分类实现js版本的 /** * 根节点 parentid=0, 每个节点都有id, parentid字段 * @param items * @returns {*} */ funct ...
- P4780-Phi的反函数【dfs】
正题 题目链接:https://www.luogu.com.cn/problem/P4780 题目大意 给出\(n\),求一个最小的\(x\)满足\(\varphi(x)=n\). 若不存在或者大于\ ...
- P4323-[JSOI2016]独特的树叶【换根dp,树哈希】
正题 题目链接:https://www.luogu.com.cn/problem/P4323 题目大意 给出\(n\)个点的树和加上一个点之后的树(编号打乱). 求多出来的是哪个点(如果有多少个就输出 ...
- AT4519-[AGC032D]Rotation Sort【dp】
正题 题目链接:https://www.luogu.com.cn/problem/AT4519 题目大意 给出一个长度为\(n\)的排列,每次可以选择一个区间,然后花费\(A\)的代价向左旋转(最左边 ...
- Python3入门系列之-----循环语句(for/while)
前言 for循环在Python中是用的比较多的一种循环方法,小伙伴需要熟练掌握它的使用 本章节将为大家介绍 Python 循环语句的使用.Python 中的循环语句有 for 和 while for循 ...
- FastAPI(59)- 详解使用 OAuth2PasswordBearer + JWT 认证
JWT JSON Web Tokens 它是一个将 JSON 对象编码为密集且没有空格的长字符串的标准 使用 JWT token 和安全密码 hash 使应用程序真正安全 JWT 小栗子 eyJhbG ...
- MacOS下Java与JDK关系与相关路径
MacOS下Java与JDK关系与相关路径 macOS下的Java与JDK的路径曾经困扰过我一段时间,今天稍有些忘记,故记下笔记,整理一下.Java与JDK的关系不在本文笔记之内,Javaer常识. ...