zoukankan      html  css  js  c++  java
  • Test on 12/08/2018

    新生赛新生赛,讲真,没有考什么难的东西,至少我写出来的都不难,估计我是被以前一中的难度吓到了。晚上打了游戏,中午还在打,急急忙忙抄了模板,哈哈哈跟oi的不同就是可以带书有模板抄。因为打了游戏还抄了快速幂,快排、归并的模板,天气恶劣,导致我差一点点迟到。虽然安慰自己剩下的两个小时都是在发呆、可是提前拿到一血速度快可以使排名高一点。太险了,打着伞冲到机房幸好题目还没有开,开了电脑,正在敲头文件的时候题目开了。好像zstu的题目都是1、2题难,喜欢把签到题简单题放到中等偏下的位置。跟noip不一样很难受。

    当时太慌啦,来不及看下面的题,1、2题太难了,还说题目比杭电要难一点。抓到一个bfs模板题就赶紧写。但是bfs还是考虑的东西有点多,虽然前一星期一直再写。虽然保证肯定能写出来,但是还是不够稳。

    写完了bfs看了看榜找了找签到题写。转专业狗很着急,真的害怕前几星期吹的要转最后没转。后来发现一道题有奖、两道题有钱是什么操作。

    罗马数字感觉以前做过,然后约瑟夫环的问题在书上看过了啊,但是前几天书到期了还没带卡就没有续借,把所有书都带上了还是永远缺少没带的那一本。

    还有一道概率题,是VJ上的背包原题,哈哈哈我早就写过背包啦,因为想努力的把dp学会,虽然现在还没有学会,但是还是会这个简单背包的。可是一连4个wa,很难受,明明就是这样写的啊,害怕超时吓得我连memset都不敢写,后来发现 f[0]没有初始!

    最后约瑟夫环找233人,都说打表,什么什么优化,我都听不懂,可我就是先输入然后处理再输出就 tle,于是我把所有都先预处理一遍存到数组里,需要的时候直接输出就好,虽然不知道到底优化了哪些,但是我居然A了。

    有人邀请我去看中医药的比赛,可是想要去班级轰趴过生日就拒绝了,实则因为自己害怕暴露太差的事实23333.

    有钱啦有钱啦,原本想这周日去上海看漫展的,同学有事就改到了周六,周六训练,翘啦。(dbq,我配不上第三这个称号,我周日一定全天都在机房,并且努力的多参加比赛多敲code少玩游戏),准备买jks,买粉色人形师,请班里人吃蛋糕。班里人真多,可是没办法qaq。应该要好好过一个18岁生日的。生日在23号,21号请吃蛋糕,22号中医药比赛就不去了,睡一觉还是在机房学习吧。23号去演出拍点照片发说说啦。成人啦成人啦。

    原本觉得一轮选课我肯定是计算机的人鸭,都拿奖了肯定是稳啦,我要选计算机的课!可是都劝我不要选(委屈巴巴)我还想要学日语、我不想每天早上上课、我想要周三或者周五一整天都没有课,可是生活哪有你想的那么简单。专业课好多,水课好多,还要转专业,还是要努力啊。没有早晚自习的日子我来了。

    去看了看计算机的课表,欸这跟我数学专业有什么区别,我以为他们会学点有关计算机的什么网站制作啊,bulabulabula,(我要是都知道,我就不转计算机了)鬼知道,他们怎么跟数学一样的啊。数学下学期三门数学课 计算机下学期两门数学课 学的数学还都不一样的啊啊啊,真好。

    下一阶段,我要学会dp,我要用熟cb,我要学会单步调试,(不然也太难受了。)

    一号机房空调真暖和,吹到脑袋都不转了。在杭州冷到爆炸。

    头疼的Litmxs

    Description

    今天队友扔了个题给 Litmxs,小 Litmxs 很吃惊,因为这题似曾相识,却又无从下手,他又来求助于你们了!队友给了 Litmxs 一个整数 n(10进制),要求 Litmxs n 转化为 k 进制。如果能转化为 k 进制,上天将会让 Litmxs 偶遇他的女朋友。你能帮帮他吗?

    Input

    输入一个q代表q次询问, 每组数据两个数n,k,保证答案存在

    (q <=110,0<=n<=1e9, k==-2 || k==2)

    Output

     输出对应的k进制,不要有多余的换行和空格

    Examples

    Input

    2
    5 2
    5 -2
    

    Output

    101
    101

    正确解法:

    啊啊啊啊啊,-2进制是想让我死。

    十进制转2进制的时候,因为 / 了一下,所以丢掉了余数,而你要转 -2 进制的时候,就要把这个余数找回来。

    怎么回来呢,n=(n+1)/2 

    还是判断把,因为当是偶数位的时候,对于2进制来说是 +,对于 -2 进制来说就是 - 了。

    找到这个存在余数的时候,并且是在偶数位,就要找一下余数。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<string>
     4 #include<cstring>
     5 #include<map>
     6 #include<set>
     7 #include<algorithm>
     8 #include<cmath>
     9 #include<stdlib.h>
    10 using namespace std;
    11 void zheng(int n)
    12 {
    13     int c[110], kk = 0;
    14     if (n == 0) {
    15         printf("0
    ");    return;
    16     }
    17     while (n != 0)
    18     {
    19         c[++kk] = n % 2;
    20         n = n / 2;
    21     }
    22     for (int i = kk; i >= 1; i--)
    23         printf("%d",c[i]);
    24     printf("
    ");
    25 }
    26 void fu(int n)
    27 {
    28     int c[110], kk = 0;
    29     if (n == 0) {
    30         printf("0
    ");    return;
    31     }
    32     while (n != 0)
    33     {
    34         c[++kk] = n % 2;
    35         if (c[kk] == 1 && kk % 2 == 0)
    36             n = (n + 1) / 2;
    37         else n = n / 2;
    38     }
    39     for (int i = kk; i >= 1; i--)
    40         printf("%d",c[i]);
    41     printf("
    ");
    42 }
    43 int main()
    44 {
    45     int t;
    46     scanf("%d",&t);
    47     while (t--)
    48     {
    49         int n, k;
    50         scanf("%d %d",&n,&k);
    51         if (k == 2)    zheng(n);
    52         else fu(n);
    53     }
    54 
    55     return 0;
    56 }
    View Code

    曼哈顿距离

    Description

    在平面上,坐标(x1, y1)的点P1与坐标(x2, y2)的点P2的曼哈顿距离为:|x1-x2|+|y1-y2|。 现在有一个nXn (1<=n<=1000)的矩阵,一开始矩阵中每个元素的值都为零。 对这个矩阵进行m (1<=m<=100000)次操作,每次操作定义如下:

    (x1, y1), (x2, y2): 对于矩阵中满足x1<=x<=x2, y1<=y<=y2的所有元素(x, y)加上(x, y)与(x1, y1)的曼哈顿距离|x1-x|+|y1-y|

    例如,当n=5,m=2,两组操作分别为(1, 1), (4, 4)和(2, 2), (5, 5):

     

    现在想让你输出m次操作后的矩阵,但是由于本OJ输出文件不能超过1M,所以输出矩阵所有非零元素的乘积即可 (结果对1000000007取余),没有非零项则输出0;

    Input

    第一行两个整数n, m,分别表示正方形网格的边长和操作次数;

    接下来m行,每行4个整数x1 y1 x2 y2;

    Output

      输出一个整数代表答案。

    Examples

    Input

    5 2
    1 1 4 4
    2 2 5 5
    

    Output

    853543927

    正确解法:

    因为题目是 x-x1 + y-y1 的距离,我们很容易想到二维差分标记

    开两个二维数组,把x和y分别算。

    主要是二维差分标记难了一点,边界值没看懂。

    1 fx[x1 + 1][y11] += 1;
    2 fx[x2 + 1][y11] += -1;
    3 fx[x2 + 1][y11] += -(x2 - x1);
    4 fx[x2 + 2][y11] += (x2 - x1);
    5 fx[x1 + 1][y2 + 1] -= 1;
    6 fx[x2 + 1][y2 + 1] -= -1;
    7 fx[x2 + 1][y2 + 1] -= -(x2 - x1);
    8 fx[x2 + 2][y2 + 1] -= (x2 - x1);
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<string>
     4 #include<cstring>
     5 #include<map>
     6 #include<set>
     7 #include<algorithm>
     8 #include<cmath>
     9 #include<stdlib.h>
    10 using namespace std;
    11 const int mad = 1000000007;
    12 int n, m,x1,y11,x2,y2;
    13 int fx[1100][1100],fy[1100][1100];
    14 void print()
    15 {
    16     for (int i = 1; i <= n; i++)
    17     {
    18         for (int j = 1; j <= n; j++)
    19             printf("%d ",fx[i][j]+fy[i][j]);
    20         printf("
    ");
    21     }
    22 }
    23 int main()
    24 {
    25     scanf("%d %d",&n,&m);
    26     while (m--)
    27     {
    28         scanf("%d %d %d %d",&x1,&y11,&x2,&y2);
    29         fx[x1 + 1][y11] += 1;
    30         fx[x2 + 1][y11] += -1;
    31         fx[x2 + 1][y11] += -(x2 - x1);
    32         fx[x2 + 2][y11] += (x2 - x1);
    33         fx[x1 + 1][y2 + 1] -= 1;
    34         fx[x2 + 1][y2 + 1] -= -1;
    35         fx[x2 + 1][y2 + 1] -= -(x2 - x1);
    36         fx[x2 + 2][y2 + 1] -= (x2 - x1);
    37         
    38         fy[x1][y11 + 1] += 1;
    39         fy[x1][y2 + 1] += -1;
    40         fy[x1][y2 + 1] += -(y2 - y11);
    41         fy[x1][y2 + 2] += (y2 - y11);
    42         fy[x2 + 1][y11 + 1] -= 1;
    43         fy[x2 + 1][y2 + 1] -= -1;
    44         fy[x2 + 1][y2 + 1] -= -(y2 - y11);
    45         fy[x2 + 1][y2 + 2] -= (y2 - y11);
    46     }
    47     int tt = 2;
    48     while (tt--)
    49     {
    50         for (int j = 1; j <= n; ++j)
    51             for (int i = 1; i <= n; ++i)
    52                 fx[i][j] += fx[i - 1][j];
    53     }
    54     for (int i = 1; i <= n; i++)
    55         for (int j = 1; j <= n; j++)
    56             fx[i][j] += fx[i][j - 1];
    57     tt = 2;
    58     while (tt--)
    59     {
    60         for (int i = 1; i <= n; ++i)
    61             for (int j = 1; j <= n; ++j)
    62                 fy[i][j] += fy[i][j - 1];
    63     }
    64     for (int j = 1; j <= n; ++j)
    65         for (int i = 1; i <= n; ++i)
    66             fy[i][j] += fy[i - 1][j];
    67     long long ans = 1;
    68     int flag = 1;
    69     for (int i = 1; i <= n; i++)
    70         for (int j = 1; j <= n; j++)
    71         {
    72             if (fx[i][j] + fy[i][j] != 0)
    73             {
    74                 flag = 0;
    75                 ans = (ans*(fx[i][j] + fy[i][j])) % mad;
    76             }
    77         }
    78     if (flag == 1)    printf("0
    ");
    79     else printf("%lld
    ",ans);
    80     return 0;
    81 }
    View Code
    No matter how you feel, get up , dress up , show up ,and never give up.
  • 相关阅读:
    IISManager 的启动
    基于hadoop集群的hive 安装(mysql,derby)
    Struts中央控制器
    在Spring中配置Hibernate事务
    java 实现多线程下载
    hello,博客园
    easyui datagrid中添加右键菜单事件
    C#项目打包
    easyui datagrid中单击添加菜单事件
    SQL多条件查询拼接in中条件方法
  • 原文地址:https://www.cnblogs.com/Kaike/p/10097974.html
Copyright © 2011-2022 走看看