神仙题,打了个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的更多相关文章

  1. Codeforces Round #367 (Div. 2) B. Interesting drink (模拟)

    Interesting drink 题目链接: http://codeforces.com/contest/706/problem/B Description Vasiliy likes to res ...

  2. Hdu 2979 Expensive Drink

    Description There are some water, milk and wine in your kitchen. Your naughty little sister made som ...

  3. ZZNU 2098 Drink coffee(差分+树状数组)

    题目链接:http://acm.hi-54.com/problem.php?pid=2098 2098 : Drink coffee 时间限制:1 Sec 内存限制:256 MiB 提交:32 答案正 ...

  4. codeforces 706B B. Interesting drink(二分)

    题目链接: B. Interesting drink 题意: 给出第i个商店的价钱为x[i],现在询问mi能在多少个地方买酒; 思路: sort后再二分; AC代码: #include <ios ...

  5. 8.10 NOIP模拟测试16 Blue+Weed+Drink

    T1 Blue 贪心,每次跳得时候跳能跳到的最远的地方,跳过的就把他设为0,每次二分找到位置,一直跳就行,如果能跳到的位置就是当前位置或比当前位置还小(数组里现在呆着的这一块石头,二分得到的就是当前位 ...

  6. ZZNU-OJ-2098 : Drink coffee【线段树合并区间或者 差分 + 二分索引树】

    : Drink coffee 时间限制: Sec 内存限制: MiB 提交: 答案正确: 提交 状态 讨论区 题目描述 为了在上课时保持清醒,凯伦需要一些咖啡.咖啡爱好者凯伦想知道最佳的温度来冲煮完美 ...

  7. NOIP模拟测试16「Drink·blue·weed」

    话说这次考试 Drink 非常棒的一道卡常练习题,适合练习卡常 真的很棒 前置卡常知识 1.char要比int快 char是最快的 输出putchar,输入getchar 在这个题快了7000豪 2. ...

  8. CodeForces - 706B Interesting drink(二分查找)

    Interesting drink Problem Vasiliy likes to rest after a hard work, so you may often meet him in some ...

  9. CodeForces 706B Interesting drink (二分查找)

    题意:给定 n 个数,然后有 m 个询问,每个询问一个数,问你小于等于这个数的数有多少个. 析:其实很简单么,先排序,然后十分查找,so easy. 代码如下: #pragma comment(lin ...

随机推荐

  1. Spring配置xml自动提示——转载https://blog.csdn.net/sinat_18474835/article/details/79370629

    以Spring2.0为例: 下载地址: Csdn: http://download.csdn.net/download/hh775313602/9812757 没积分的可以去百度网盘下载,我已共享: ...

  2. 字符串常用方法(转载--https://www.cnblogs.com/ABook/p/5527341.html)

    一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建 ...

  3. laravel--laravel的重定向类Redirector

    laravel的重定向类Redirector 在laravel5中,重定向类可以直接通过redirect()方法直接获取,不需要声明,有几个常用的方法: redirect() -> to( “重 ...

  4. 转:Android检查设备是否联网

    public static boolean isConnect(Context context) { ConnectivityManager connectionManager = (Connecti ...

  5. 前端(jQuery)(6)-- jQuery的扩展与noConflict

    1.jQuery的扩展 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  6. localStorage对象简单应用 - - 访问次数

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 理解es6箭头函数

    箭头函数知识点很少,但是要理解清楚,不然看代码会很不适应的. 1. 最简单的写法 x => x*x 可以理解为 我的x要被转化为x*x,所以实际相当于下边的这个 function (x){ re ...

  8. VSCode 配置阿里云CentOS 7.6 远程开发

    配置步骤 一.windows 10 开发机配置 windows 10 1809后支持ssh命令 1.生成ssh密钥.使用以下命令,先生成本地公钥和私钥ssh-keygen -t rsa -b 4096 ...

  9. LintCode_514 Paint Fence

    题目 here is a fence with n posts, each post can be painted with one of the k colors.You have to paint ...

  10. CSS利用filter/opacity实现背景透明

    先看看众所周知的解决方案 如果我们想要一个半透明背景,有两种实现方式: 1.利用CSS和opacity属性 .opacity { filter:alpha(opacity=);/*IE浏览器*/ op ...