HZOJ Drink
神仙题,打了个whs式暴力卡常卡A了(我没脸),正解还是要打的,然而作者的题解看不懂……
Drink:
看惯了罗马音的小朋友们都会知道r发l的音,题目名:D Link.
每次修改都会改变O( N ^ 2 )个位置的值,二维平面上没有一个确定的正方向,因此也无法使用传统数据结构。
什么东西的变化量是O( N )级别的呢?
如果把每个点都看作一个人,他的头面向某个方向。分别记录这个人的方向上的前后左右分别是谁,那么每次旋转改变的只是正方形边缘上的值,以及所有点的方向。
这样来看至少我们发现了变化量为O( N )级别的东西啦(虽然方向的改变量还是O( N ^ 2 ))。
注意到,我们并不需要真的知道每个点的方向,我们只需要正确地维护前后左右四个值即可。因为每个点的方向是可以由已知方向的相邻点算出来的!
每个点确实是有方向的,但是我们不用纪录也不用直接更改它,每次只要正确修改边界上的值,整个矩形的方向就会自动改变。
解决啦!
复杂度O( Q * N ), 常数稍大。
搞不懂,先坑着。把暴力代码放出来:
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #define LL long long
- #define ma(x) memset(x,0,sizeof(x))
- using namespace std;
- int n,m,q;
- int x[],y[],c[];
- char map[][],tmap[][];
- inline int read();
- signed main()
- {
- // freopen("drink.in","r",stdin);
- // freopen("3.out","w",stdout);
- n=read(),m=read(),q=read();
- for(int i=;i<=n;i++)
- for(int j=;j<=m;j++)
- {
- map[i][j]=getchar();
- while(map[i][j]<''||map[i][j]>'')map[i][j]=getchar();
- tmap[i][j]=map[i][j];
- }
- int tx,ty,tc;
- for(int i=;i<=q;i++)
- {
- tx=read(),ty=read(),tc=read();
- for(;tc>;tc-=,tx++,ty++)
- {
- for(int j=;j<tc-;j++)
- {
- int t1=map[tx+j][ty+tc-],
- t2=map[tx][ty+j],
- t3=map[tx+tc-][ty+tc--j],
- t4=map[tx+tc--j][ty];
- map[tx+j][ty+tc-]=t2;
- map[tx][ty+j]=t4;
- map[tx+tc-][ty+tc--j]=t1;
- map[tx+tc--j][ty]=t3;
- }
- }
- }
- for(int i=;i<=n;i++)
- {
- for(int j=;j<=m;j++)
- printf("%d ",map[i][j]-'');
- puts("");
- }
- }
- inline int read()
- {
- int s=,f=;char a=getchar();
- while(a<''||a>''){if(a=='-')f=-;a=getchar();}
- while(a>=''&&a<=''){s=s*+a-'';a=getchar();}
- return s*f;
- }
HZOJ Drink的更多相关文章
- Codeforces Round #367 (Div. 2) B. Interesting drink (模拟)
Interesting drink 题目链接: http://codeforces.com/contest/706/problem/B Description Vasiliy likes to res ...
- Hdu 2979 Expensive Drink
Description There are some water, milk and wine in your kitchen. Your naughty little sister made som ...
- ZZNU 2098 Drink coffee(差分+树状数组)
题目链接:http://acm.hi-54.com/problem.php?pid=2098 2098 : Drink coffee 时间限制:1 Sec 内存限制:256 MiB 提交:32 答案正 ...
- codeforces 706B B. Interesting drink(二分)
题目链接: B. Interesting drink 题意: 给出第i个商店的价钱为x[i],现在询问mi能在多少个地方买酒; 思路: sort后再二分; AC代码: #include <ios ...
- 8.10 NOIP模拟测试16 Blue+Weed+Drink
T1 Blue 贪心,每次跳得时候跳能跳到的最远的地方,跳过的就把他设为0,每次二分找到位置,一直跳就行,如果能跳到的位置就是当前位置或比当前位置还小(数组里现在呆着的这一块石头,二分得到的就是当前位 ...
- ZZNU-OJ-2098 : Drink coffee【线段树合并区间或者 差分 + 二分索引树】
: Drink coffee 时间限制: Sec 内存限制: MiB 提交: 答案正确: 提交 状态 讨论区 题目描述 为了在上课时保持清醒,凯伦需要一些咖啡.咖啡爱好者凯伦想知道最佳的温度来冲煮完美 ...
- NOIP模拟测试16「Drink·blue·weed」
话说这次考试 Drink 非常棒的一道卡常练习题,适合练习卡常 真的很棒 前置卡常知识 1.char要比int快 char是最快的 输出putchar,输入getchar 在这个题快了7000豪 2. ...
- CodeForces - 706B Interesting drink(二分查找)
Interesting drink Problem Vasiliy likes to rest after a hard work, so you may often meet him in some ...
- CodeForces 706B Interesting drink (二分查找)
题意:给定 n 个数,然后有 m 个询问,每个询问一个数,问你小于等于这个数的数有多少个. 析:其实很简单么,先排序,然后十分查找,so easy. 代码如下: #pragma comment(lin ...
随机推荐
- Linq To SQL和Linq To Object的批量操作InsertAllOnSubmit介绍
无论是Linq To SQL还是Linq To Object(Entity frameworks)它们都为开发人员提供了Insert操作,及Insert集合操作,即InsertOnSubmit和Ins ...
- Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---装饰模式之StarBuzzCoffee[转]
1 2{<HeadFirst设计模式>之装饰模式 } 3{ 本单元中的类为被装饰者 } 4{ 编译工具: Delphi7.0 } 5{ E-Ma ...
- @Service ,@Controller,@Component注解
首先,在applicationContext.xml文件中加一行: <context:component-scan base-package="com.hzhi.clas"/ ...
- NACOS集群搭建遇到的问题
搭建NACOS官网教程: https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html 这里说的很详细了.也有中文的.我就记录一下在搭建集群的时候 ...
- python无法启动火狐浏览器且报错“selenium.common.exceptions.WebDriverException: Message: Unable to find a matching set of capabilities”
安装了python2,使用pip安装了selenium,但是在使用时,报了“selenium.common.exceptions.WebDriverException: Message: 'gecko ...
- php百度地图计算两地现实距离
请自行到百度地图官网申请您的ak <!--前端获取手机经纬度的代码--> <!--<!DOCTYPE html>--> <!--<html lang=& ...
- python之pip
sudo vim /usr/bin/lsb_release 确保第一行是python2.7,不然无法使用pip安装第三方依赖
- MaxCompute问答整理之7月
本文是基于本人对MaxCompute产品的学习进度,再结合开发者社区里面的一些问题,进而整理成文.希望对大家有所帮助. 问题一.DataWorks V2.0简单模式和标准模式的区别?公司数仓的数据上云 ...
- 洛谷3128 [USACO15DEC]最大流Max Flow——树上差分
题目:https://www.luogu.org/problemnew/show/P3128 树上差分.用离线lca,邻接表存好方便. #include<iostream> #includ ...
- 忘记用了delete释放内存,如何防止内存溢出
C++的内存管理还是要自己来做的,自己要进行内存的申请和释放 程序直接kill掉,OS会回收的 但是面试要问到这个问题,其实是想问你别的 RAII,也称为“资源获取就是初始化”,是c++等编程语言常用 ...