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\n");    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("\n");
25 }
26 void fu(int n)
27 {
28     int c[110], kk = 0;
29     if (n == 0) {
30         printf("0\n");    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("\n");
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("\n");
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\n");
79     else printf("%lld\n",ans);
80     return 0;
81 }
View Code

 

posted @ 2018-12-10 18:05  kaike  阅读(182)  评论(0编辑  收藏  举报