UVALive - 7139(差分+模拟)
题目链接
参考
题意
N*M的网格,一辆车沿着网格线按给定路线走,每个网格里有一个人,人的视线始终看着车,问这些人净转圈数的平方和。
分析
由于车的起点和终点都为左上角,且每个格子里的人永远面对着车,经过多次模拟可发现:每个人的圈数与其所在格子左边向下次数与向上次数的差。于是只需要维护这个次数,对每次行车路线上的右边的格做处理,可以用前缀和的思想来维护,而且因为网格具体规格不确定,可以用vector。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <vector> #include <ctype.h> #include <queue> using namespace std; const int maxn=1e6+10; const int inf=0x3f3f3f3f; const int mod=1e9+7; typedef long long ll; vector< vector<int> >v; int main(){ #ifdef LOCALfreopen("in.txt","r",stdin); #endifint t, m, n, k;int kase=0;scanf("%d",&t);while(t--){scanf("%d%d%d",&n,&m,&k);int dx=1,dy=1;int d;char dir[3];v=vector< vector<int> >(n+10,vector<int>(m+10,0));while(k--){scanf("%s%d",dir,&d);if(dir[0]=='L'){dy-=d;}else if(dir[0]=='R'){dy+=d;}else if(dir[0]=='D'){v[dx][dy]++;v[dx+d][dy]--;dx+=d;}else if(dir[0]=='U'){v[dx][dy]++;v[dx-d][dy]-=1;dx-=d;}}// for(int i=1;i<=n+1;i++){ // for(int j=1;j<=m+1;j++) // printf("%d",v[i][j]); // puts(""); // }ll ans=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){v[i][j]+=v[i-1][j]+v[i][j-1]-v[i-1][j-1];ans+=(ll)v[i][j]*v[i][j];}}printf("Case #%d: %lld\n",++kase,ans);}return 0; }
转载于:https://www.cnblogs.com/fht-litost/p/7345448.html
UVALive - 7139(差分+模拟)相关推荐
- UVALive - 7139 Rotation 矩阵前缀和(imos和)
传送门:UVALive 7139 题意:N*M的网格,一辆车沿着网格线按给定路线走,每个网格里有一个人,人的视线始终看着车,问这些人净转圈数的平方和. 思路:因为起点和终点都是左上角,因此我们可以维护 ...
- UVALive 7139 Rotation(模拟)
思路:模拟题,留意到其实左右操作是会抵消的,所以只用考虑上下就好了 #include<iostream> #include<cstdio> #include<vector ...
- c语言差分一阶波动方程,用有限差分模拟一维波动方程.doc
摘 要 波动是物质运动的重要表现形式.由于物质特征.结构的不同,波在其内部传播具有不同的特征,包含的信息也不尽相同.波在连续介质中的传播问题一直受到极大的重视,波传问题的研究也具有十分重要的工程应用意 ...
- UVALive 7139 Rotation
这个题就是模拟题,但是性质很深. 观察可得到一个结论:对于一个方格中的人来说,如果要有一个完整的时针旋转,则必然是一边走下去,一边走上去,且"包含"所以不用考虑R,L. 若车 ...
- UVALive 7139 Rotation(矩阵前缀和)(2014 Asia Shanghai Regional Contest)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=6 ...
- UVALive - 6440(模拟)
题目链接:https://vjudge.net/contest/241341#problem/G 题目大意:输入一个N,n次操作.对于第一种操作增加一个病人,告诉病人的t0,st0,r.第二种操作,在 ...
- UVALive 7139 - Rotation
传送门 题意:由n*m个格子组成的网格地图,一辆车沿着边移动,车从起点出发,最终又回到起点 每个格子中间都站着一个人,一直面向着车,若(x,y)格子的人在车子行驶过程中,顺时针转了a度,逆时针b度,则 ...
- UVALive 7139 Rotation 二维vector+矩阵前缀和 【模版】
题目大意:给一个n*m的矩阵,每个方块上有一个人.现在有一辆车在左上角的格点处,矩阵里的人都会一直面向那辆车.现在给出车的移动路线,问每个人总旋转角度的平方和是多少.若一个人顺时针旋转10个圈,逆时针 ...
- 省选模拟赛记录(越往下越新哦~~~)
LOG 模拟赛 第一次见尼玛这么给数据范围的-- 开考有点困,迷迷糊糊看完了三道题,真的是像老吕说的那样,一道都不会-- 思考T1,感觉有点感觉,但是太困了,就先码了暴力,发现打表可以50分,于是就大 ...
最新文章
- Java 洛谷 P1200 [USACO1.1]你的飞碟在这儿 Your Ride Is Here
- MySQL(二)——DQL数据查询语言
- check box 如何调整字体大小_CSS中关于box-sizing你可能需要知道的小知识
- 【51nod - 1108】距离之和最小 V2(曼哈顿距离,中位数性质)
- delphi if多个条件_判断(if)语句
- 我的城市,我的汽车:Autoblog 摄影大赛
- ubuntu 12安装oracle,Ubuntu12.04(32位)安装Oracle 11g(32位)全过程
- c++ 23种设计模式_使用Go实现GoF的23种设计模式(三)
- ubuntu15.04源失效问题修复
- 山东大学软件学院操作系统实验的准备
- 简单动态字符串(SDS)
- 计算机基础知识论文统一格式,大一计算机基础知识论文.docx
- 系统学习dede标签
- 新手操作低客单价时常见的误区有哪些?
- 尼康相机测试软件mac版,尼康Webcam Utility
- 流利说被强制退市:因市值过低 不符合上市要求
- mac电脑如何打包dmg安装包文件
- 获取视频文件格式信息的工具和方法
- linux将tick变成日期,Linux时间子系统之:Tick Device layer综述
- qcc304x笔记之音频链路(chain)机制(十八)