初次见面(firstmeet)
【题目背景】
雾之湖边,静得可怕。
露米娅出神凝望。黑白连衣裙,像极了绽放的墨黑和洁白的莲。身边的雾之
湖,倒映着血色天空。酒红的双眸,映照一切。低声浅笑,双臂伸直,她悄无声
息地没入一抹黑暗中,纵身一跃,便穿梭在无尽的苍穹之下。漆黑,在她的身
影上缠绕,蔓延......
空中,红白的巫女灵梦正在低低的飞着,享受着清爽的微风。
突然,灵梦的速度放缓,笑意渐渐凝固——灵梦与露米娅就此见面。
灵梦瞳孔骤缩,那嗜血的笑容,无力的啜泣,血红染满的双手,欣慰却又毫
无生机的微笑......一系列画面先潮水般涌入她的脑海,进而又碎得无影无踪。
无助,失落,灵梦攥紧双拳,想要留下些什么,却又真的无能为力。终于,
她厉声向对面喊道:“这红雾是你放的吧!?”话语未落便祭出阴阳玉,摆出阵
法,绚丽的弹幕旋即铺天盖地地扎了过去。
【问题描述】
此次灵梦发动的阵法可以看做是一个n*n的矩阵,阵法的每行都有一个阴阳
玉,矩阵的其余位置为空,保证任意两个阴阳玉不在同一行,不在同一列,想要
成功发动阵法,灵梦必须在阵法中放置n 张符纸。符纸的放置需满足以下要求:
1.有阴阳玉的地方不能放置符纸;
2.每行只能有一张符纸;
3.每列只能有一张符纸。
在满足上述要求下,符纸放置的方案数就为此次阵法的攻击力,求灵梦此次
阵法的攻击力为多少。
【输入格式】
第一行一个n,接下来一个n*n的矩阵。1 表示有阴阳玉,0 表示位置为空。
【输出格式】
一行一个整数,为阵法的攻击力。
【样例1 输入】
2
1 0
0 1
【样例1 输出】
東方模拟赛3
第4 页共12 页
1
【样例1 说明】
仅有(1, 0) , (0 ,1)为一个合法的方案
【样例2 输入】
6
1 0 0 0 0 0
0 0 0 1 0 0
0 0 1 0 0 0
0 1 0 0 0 0
0 0 0 0 1 0
0 0 0 0 0 1
【样例2 输出】
265

【题解】

题目有一个很强大的限制:不能走的格子必须满足不在同一行,不在同一列

可以发现交换行,不影响结果

我们把他们交换到对角线上

就成了一个错排问题

对拍找规律也不难发现

下面这个会T,因为没有压位高精

但是BZOJ4563 不会T

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cstring>
 5 #define min(a, b) ((a) < (b) ? (a) : (b))
 6 #define max(a, b) ((a) > (b) ? (a) : (b))
 7
 8 inline void swap(int &x, int &y)
 9 {
10     int tmp = x;x = y;y = tmp;
11 }
12
13 inline void read(int &x)
14 {
15     x = 0;char ch = getchar(), c = ch;
16     while(ch < '0' || ch > '9')c = ch, ch = getchar();
17     while(ch <= '9' && ch >= '0')x = x * 10 + ch - '0', ch = getchar();
18     if(c == '-')x = -x;
19 }
20
21 const int INF = 0x3f3f3f3f;
22 const int MAXN = 5000 + 10;
23
24 int n;
25
26 struct BigNum
27 {
28     int n, data[17000];
29     void put()
30     {
31         for(register int i = n;i >= 1;-- i)
32             putchar(data[i] + '0');
33     }
34     void clean()
35     {
36         n = 0;memset(data, 0, sizeof(data));
37     }
38 }pre[3];
39
40 int pp,p,now;
41
42 void add()
43 {
44     register int len = pre[pp].n;
45     for(register int i = 1;i <= len;++ i)
46         pre[now].data[i] = pre[pp].data[i] + pre[p].data[i];
47     len = pre[p].n;
48     for(register int i = pre[pp].n + 1; i <= len;++ i)
49         pre[now].data[i] = pre[p].data[i];
50     for(register int i = 1;i < len;++ i)
51         if(pre[now].data[i] >= 10)pre[now].data[i + 1] += pre[now].data[i]/10, pre[now].data[i] -= 10;
52     for(;pre[now].data[len] >= 10;++ len)
53         pre[now].data[len + 1] += pre[now].data[len]/10, pre[now].data[len] -= 10;
54     pre[now].n = len;
55 }
56
57 void mul(int b)
58 {
59     for(register int i = 1;i <= pre[now].n;++ i)
60         pre[now].data[i] *= b;
61     for(register int i = 1;i < pre[now].n;++ i)
62         if(pre[now].data[i] >= 10)pre[now].data[i + 1] += pre[now].data[i]/10, pre[now].data[i] %= 10;
63     register int len = pre[now].n;
64     for(;pre[now].data[len] >= 10;++ len)
65          pre[now].data[len + 1] += pre[now].data[len]/10, pre[now].data[len] %= 10;
66     pre[now].n = len;
67 }
68
69 int main()
70 {
71     read(n);
72     pp = 0, p = 1, now = 2;
73     pre[pp].n = 1;pre[p].n = 1, pre[p].data[1] = 1;
74     if(n == 1)pre[pp].put();
75     else if(n == 2)pre[p].put();
76     else
77     {
78         for(register int i = 2;i < n;++ i)
79         {
80             add();
81             mul(i);
82             if(i != n - 1)
83                 swap(pp, now);swap(pp, p);
84         }
85         pre[now].put();
86     }
87     return 0;
88 }

T1

好久不见(longnosee)
【题目背景】
“那些画面是什么!”灵梦紧紧握着手中的符纸,向露米娅喊道。露米娅并
不答话,只是微笑着,转身便是一袭五彩斑斓的弹幕。
灵梦身形一侧,堪堪躲过,身后两颗浮动的阴阳玉在空中曳出一抹朦胧的暗
红,金色的符纸不断从露米娅的身边擦过,却并未有一张击中她。
心中的直觉让灵梦知道红雾与面前的少女毫无关系,但是那悸动的感觉让她
不愿就此离去,两人的弹幕虽然分外密集,但却根本未伤彼此分毫,灵梦心中的
急躁之感越来越重,露米娅的笑容越来越淡,终于,露米娅停了下来,低低地喃
喃了一句:
暗符「Demarcation」!
【问题描述】
露米娅发出的Demarcation 是她的终符,露米娅会发出一个有n 个点的树形
的弹幕,点之间由能量线相连,Demarcation 的攻击力取决于其树形结构直径。
如果这样完整的一个终符击中灵梦,灵梦就没有能力继续去解决红雾异变
了。但是灵梦有一个办法,她可以用阴阳玉击破能量线,从而使原来整个树形结
构的Demarcation 变成若干个树形结构,此时Demarcation 的攻击力取决于这若
干个树形结构中的最大直径。
可是之前的战斗已经消耗了灵梦不少的体力,所以她最多能够再用出p 个阴
阳玉来击破p 道能量线,灵梦想要使切断能量线后剩余的若干树形弹幕的直径最
大值最小,这样她才能正确估计Demarcation 的攻击力并做出正确的防御,求最
小的攻击力为多少。
【输入格式】
第一行两个正整数n, p。
下面n 1行,每行两个正整数u, v,表示一条u到v的双向边。
【输出格式】
一行一个正整数为最小的攻击力。
【样例1 输入】
5 2
1 2
1 3
3 4
4 5
【样例1 输出】
1
【样例1 说明】
其中一种可行的方案为:
击破能量线13
击破能量线34。
【样例2 输入】
16 4
1 2
1 3
2 4
2 5
3 6
3 7
3 8
6 9
6 10
10 15
10 16
7 11
7 12
12 13
12 14
【样例2 输出】
3
【样例2 说明】
对于样例2 给定的树形弹幕
其中一种可行的方案为:
击破能量线36
击破能量线37
击破能量线38
不必全用完4 个阴阳玉。
東方模拟赛3

【题解】

“最大值最小”显然二分

二分链长,贪心删除子树中通过根节点且链长>mid的最长的一条分链

显然法证明即可。。。

BZOJ2097

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cstring>
 5 #include <algorithm>
 6 #define max(a, b) ((a) > (b) ? (a) : (b))
 7 #define min(A, b) ((a) < (b) ? (a) : (b))
 8
 9 const int INF = 0X3f3f3f3f;
10 const int MAXN = 100000 + 10;
11
12 inline void read(int &x)
13 {
14     x = 0;char ch = getchar(), c = ch;
15     while(ch < '0' || ch > '9')c = ch, ch = getchar();
16     while(ch <= '9' && ch >= '0')x = x * 10 + ch - '0', ch = getchar();
17     if(c == '-')x = -x;
18 }
19
20 struct Edge
21 {
22     int u,v,next;
23     Edge(int _u,int _v,int _next){u = _u;v = _v;next = _next;}
24     Edge(){}
25 }edge[MAXN << 1];
26 int head[MAXN], cnt;
27 inline void insert(int a, int b)
28 {
29     edge[++cnt] = Edge(a,b,head[a]);
30     head[a] = cnt;
31 }
32
33 int n,p,mid,ans;
34
35 int tmp[MAXN],f[MAXN];
36
37 void dfs(int u, int fa)
38 {
39     for(register int pos = head[u];pos;pos = edge[pos].next)
40     {
41         int v = edge[pos].v;
42         if(v == fa)continue;
43         dfs(v, u);
44     }
45     int cnt = 0;
46     for(register int pos = head[u];pos;pos = edge[pos].next)
47     {
48         int v = edge[pos].v;
49         if(v == fa)continue;
50         tmp[++ cnt] = f[v] + 1;
51     }
52     std::sort(tmp + 1, tmp + 1 + cnt);
53     for(;cnt;-- cnt)
54     {
55         if(tmp[cnt] + tmp[cnt - 1] > mid) ++ ans;
56         else break;
57     }
58     f[u] = tmp[cnt];
59 }
60
61 int main()
62 {
63     read(n), read(p);
64     int tmp1,tmp2;
65     for(register int i = 1;i < n;++ i)
66     {
67         read(tmp1), read(tmp2);
68         insert(tmp1, tmp2);
69         insert(tmp2, tmp1);
70     }
71     int l = 1, r = n, answer = 0;
72     while(l <= r)
73     {
74         memset(f, 0, sizeof(f));
75         ans = 0;
76         mid = (l + r) >> 1;dfs(1, 0);
77         if(ans <= p)answer = mid, r = mid - 1;
78         else l = mid + 1;
79     }
80     printf("%d", answer);
81     return 0;
82 }

T2

好久不见(longnosee)
【题目背景】
“那些画面是什么!”灵梦紧紧握着手中的符纸,向露米娅喊道。露米娅并
不答话,只是微笑着,转身便是一袭五彩斑斓的弹幕。
灵梦身形一侧,堪堪躲过,身后两颗浮动的阴阳玉在空中曳出一抹朦胧的暗
红,金色的符纸不断从露米娅的身边擦过,却并未有一张击中她。
心中的直觉让灵梦知道红雾与面前的少女毫无关系,但是那悸动的感觉让她
不愿就此离去,两人的弹幕虽然分外密集,但却根本未伤彼此分毫,灵梦心中的
急躁之感越来越重,露米娅的笑容越来越淡,终于,露米娅停了下来,低低地喃
喃了一句:
暗符「Demarcation」!
【问题描述】
露米娅发出的Demarcation 是她的终符,露米娅会发出一个有n 个点的树形
的弹幕,点之间由能量线相连,Demarcation 的攻击力取决于其树形结构直径。
如果这样完整的一个终符击中灵梦,灵梦就没有能力继续去解决红雾异变
了。但是灵梦有一个办法,她可以用阴阳玉击破能量线,从而使原来整个树形结
构的Demarcation 变成若干个树形结构,此时Demarcation 的攻击力取决于这若
干个树形结构中的最大直径。
可是之前的战斗已经消耗了灵梦不少的体力,所以她最多能够再用出p 个阴
阳玉来击破p 道能量线,灵梦想要使切断能量线后剩余的若干树形弹幕的直径最
大值最小,这样她才能正确估计Demarcation 的攻击力并做出正确的防御,求最
小的攻击力为多少。
【输入格式】
第一行两个正整数n, p。
下面n 1行,每行两个正整数u, v,表示一条u到v的双向边。
【输出格式】
一行一个正整数为最小的攻击力。
【样例1 输入】
5 2
1 2
1 3
3 4
4 5
【样例1 输出】
1
【样例1 说明】
其中一种可行的方案为:
击破能量线13
击破能量线34。
【样例2 输入】
16 4
1 2
1 3
2 4
2 5
3 6
3 7
3 8
6 9
6 10
10 15
10 16
7 11
7 12
12 13
12 14
【样例2 输出】
3
【样例2 说明】
对于样例2 给定的树形弹幕
其中一种可行的方案为:
击破能量线36
击破能量线37
击破能量线38
不必全用完4 个阴阳玉。

愿你安好(blessyou)
【题目背景】
死一般的寂静。被击破的露米娅无力的躺在地上,脸上挂着的还是那亘古不
变的微笑。
灵梦缓缓地落下,地上是素未谋面却又感觉无比熟悉的露米娅,不知怎么,
她总觉得那笑容,不是自己所熟悉的笑容。
“你。。是不会笑而在笑吗?”露米娅怔住了,晶莹的泪珠开始从两颊划过。
她闭上了眼,不再看向灵梦。
久驻无语,灵梦裙角轻轻飞舞,她后退一步,转而飞向了远方,脑海中一个
朦胧的倩影,金色的发丝上绑着的红缎带,渐渐的与露米娅的身影重合,只是笑
容比她真实,年龄比她更大。
留在原地的原地的露米娅无神的双眼望向天空,喃喃道:“不是我不会笑啊。。
我只是不能对你笑啊。因为我是——
宵暗的妖怪啊!”
【问题描述】
失落的灵梦无助地向着红雾的源头飞去,可是在飞过一片绿地时,突然一片
漆黑大雾笼罩住了她,霎时灵梦的眼前一片黑暗,身体无法动弹,渐渐地她感到
身体的力气一点一点地在流逝,想要反抗的灵梦却发现根本是徒劳。她想要呐喊
却发现什么也做不到。黑雾可以看做是一个n m z的立方体,灵梦此时处于其
中的某个位置上,可以把黑雾看做是一个三维坐标系,分X , Y , Z 轴。
这时,绝望的灵梦突然听到了漆黑中传来了异样的声音,她万念俱灰,闭上
眼睛,任凭身体缓缓躺平,放弃了挣扎。。。
“我将会尽我最后的力量,为你准备一个逃生的宵暗隧道,但是我的力量已
经不多了,隧道的形状与数量,已经不是我能够掌控的了。”露米娅那柔和的声
音在灵梦耳边响起。
灵梦猛的睁开眼,发现眼前虽仍是黑暗,但是自己却可以清楚的感知到整片
黑雾的内部构造,在黑雾的某些地方,有些不知为何物的银色立方体,正在发着
幽幽的光芒,灵梦的直觉告诉她这些东西一定非常危险。
“为什么要帮我!”灵梦问道。
“我的时间已经不多了,听我的话!感受它,控制它!”露米娅并不答话,
而是这样说道。
这时,12 个一模一样的小小的隧道已经悬浮在了灵梦身边,虽然也是黑色的,
却与身边的黑雾有着本质的区别,并且,给了灵梦一种莫名的安心之感。
露米娅的隧道可以看做是由几个空心的立方体组成,形状如下图所示。
其中内部为空,且可以从白面出入,只可以将白面拼接。
“小灵梦,黑雾的出口我已经探查清楚了,我会用意念传达给你。”依旧是
那温和的声音,只不过声音已经比上次虚弱太多了。
一丝光点出现在灵梦的脑海中,突然光明驱散了面前无尽的黑暗,她此时正
置身于一个封闭的空间中,脚下是一望无尽的虚空,抬头望去,一个散发着无限
曙光的出口赫然摆在那里!。
“你可以用意念驱散这些隧道组合成不同的形状,使得互相两个隧道的入口
(白面)相接,这样你就可以从隧道中逃出去了。。。小灵梦,我能帮你的。。
也就只有这些了。不过要注意,千万不要让这些隧道伸到这片空间的外面,隧道
也不能够彼此相交,也不要将隧道放置在那些银色的立方体上,否则你会被时空
逆流给撕成碎片的。切记。”
灵梦能用意念控制隧道,使得白面相互连接,如下图所示。
露米娅的声音就此消失。灵梦没有隧道无法在空间内移动,她想要成功逃出
去,只有用这12 个隧道(可以不全用),拼出一套从灵梦当前位置到出口的通
道,且灵梦的初始位置与某隧道的白面相接,出口与某隧道的白面相接,且隧
道与隧道之间白面相接,灵梦才能获救。
由于这12 个隧道都是耗费的露米娅的生命力量,所以用隧道越少越好,否则
灵梦将再也无法得知那种熟悉的感觉从何而来,求最少需要几个隧道才能联通灵
梦现在的位置与出口,若无法联通,输出"Dream Battle"。
【输入格式】
输入的第一行包含4个正整数n , m , z , p表示黑雾的长,高,宽和银色立方
体的数量。
输入的第二行包含三个正整数s s s x , y , z 和一个字符c,其中( , , ) s s s x y z 是灵
梦初始位置,c的值为' x' , ' y'或' z',用于指示入口所在的面。
当c为' x'时,表示灵梦初始位置所在的面与YZ坐标平面平行。
当c为' y'时,表示灵梦初始位置所在的面与XZ 坐标平面平行。
当c为' z'时,表示灵梦初始位置所在的面与XY 坐标平面平行。
输入保证灵梦初始位置所在的面在黑雾表面(即一个立方体的表面)。
数字和数字,数字和字符之间用一个空格隔开。
输入的第三行包含三个正整数t t t x , y , z 和一个字符c,其中( , , ) t t t x y z 是出
口位置,意义同上。
接下来p 行,每行包含三个正整数i i i x , y , z ,表示在( , , ) i i i x y z 的位置有银
色立方体。
【输出格式】
输出包含一个1个正整数,表示最少使用的隧道的数量,如果灵梦不能成功
逃脱(即无法通过接隧道来使隧道的某一开口与出口恰好相接),
输出"Dream Battle"。
【样例1 输入】
5 4 3 1
3 1 1 z
1 4 3 x
2 3 3
【样例1 输出】
2
【样例2 输入】
10 10 10 7
4 10 1 z
9 3 10 z
1 8 3
9 6 8
7 4 2
4 1 6
3 5 10
5 4 6
9 9 8
【样例2 输出】
7
数据保证初始位置与出口在黑雾的表面上
灵梦最终也未知道为何露米娅会带给她如此安心,熟悉的感觉。
在灵梦成功逃脱出黑雾后,露米娅的身影已经消失的无影无踪,是生是死也未曾得知。
只剩一条红色的缎带在地上孤独的存在着。

【题解】

爆搜即可

用类似A*的思想加一点剪枝即可

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <cstdlib>
  4 #include <cstring>
  5 //#define abs(a) ((a) < 0 ? (-1 * (a)) : (a))
  6 //#define ok(x, y, a) ((x) >= 1 && (y) >= 1 && (a) >= 1 && (x) <= n && (y) <= m && (a) <= z && !b[x][y][a])
  7 #define min(a, b) ((a) < (b) ? (a) : (b))
  8 #define max(a, b) ((a) > (b) ? (a) : (b))
  9
 10 const int INF = 0X3f3f3f3f;
 11 const int dx[6] = {1,-1,0,0,0,0};
 12 const int dy[6] = {0,0,1,-1,0,0};
 13 const int dz[6] = {0,0,0,0,1,-1};
 14
 15 inline void read(int &x)
 16 {
 17     x = 0;char ch = getchar(), c = ch;
 18     while(ch < '0' || ch > '9')c = ch, ch = getchar();
 19     while(ch <= '9' && ch >= '0')x = x * 10 + ch - '0', ch = getchar();
 20     if(c == '-')x = -x;
 21 }
 22
 23 int n,m,t,p,b[30][30][30],sx,sy,sz,ex,ey,ez,ans,sdir,edir;
 24 char sc,ec;
 25
 26 inline int abs(int a)
 27 {
 28     return a < 0 ? -a : a;
 29 }
 30
 31 inline int ok(int x, int y, int z)
 32 {
 33     return x > 0 && y > 0 && z > 0 && x <= n && y <= m && z <= t && (!b[x][y][z]);
 34 }
 35
 36 struct Node
 37 {
 38     int num,dir;
 39     Node(int _num, int _dir){num = _num;dir = _dir;}
 40     Node(){}
 41 }fangan[40],xuelie[40];
 42 int tot;
 43
 44 //表示当前格子x,y,z已经放了,尝试放到dir方向, 已经放了num个
 45 void dfs(int x, int y, int z, int dir, int num)
 46 {
 47     if(num + (abs(ex - x) + abs(ey - y) + abs(ez - z))/4 >= ans)return;
 48     if(x == ex && y == ey && z == ez && dir == edir)
 49     {
 50         ans = min(ans, num);
 51         return;
 52     }
 53     //走两步,然后四个方向走两步
 54     if(ok(x + dx[dir], y + dy[dir], z + dz[dir]) && ok(x + dx[dir] * 2, y + dy[dir] * 2, z + dz[dir] * 2))
 55     {
 56         b[x + dx[dir]][y + dy[dir]][z + dz[dir]] = b[x + dx[dir] * 2][y + dy[dir] * 2][z + dz[dir] * 2] = 1;
 57         x += (dx[dir] * 2), y += (dy[dir] * 2), z += (dz[dir] * 2);
 58         for(register int i = 0;i < 6;++ i)
 59         {
 60             if((i | 1) == (dir | 1))continue;
 61             if(ok(x + dx[i], y + dy[i], z + dz[i]) && ok(x + dx[i] * 2, y + dy[i] * 2, z + dz[i] * 2))
 62             {
 63                 b[x + dx[i]][y + dy[i]][z + dz[i]] = b[x + dx[i] * 2][y + dy[i] * 2][z + dz[i] * 2] = 1;
 64                 fangan[++tot] = Node(2, dir);
 65                 fangan[++tot] = Node(2, i);
 66                 dfs(x + dx[i] * 2, y + dy[i] * 2, z + dz[i] * 2, i, num + 1);
 67                 tot -= 2;
 68                 b[x + dx[i]][y + dy[i]][z + dz[i]] = b[x + dx[i] * 2][y + dy[i] * 2][z + dz[i] * 2] = 0;
 69             }
 70         }
 71         x -= (dx[dir] * 2), y -= (dy[dir] * 2), z -= (dz[dir] * 2);
 72         b[x + dx[dir]][y + dy[dir]][z + dz[dir]] = b[x + dx[dir] * 2][y + dy[dir] * 2][z + dz[dir] * 2] = 0;
 73     }
 74
 75     //走三步,然后四个方向走一步
 76     if(ok(x + dx[dir], y + dy[dir], z + dz[dir]) && ok(x + dx[dir] * 2, y + dy[dir] * 2, z + dz[dir] * 2) && ok(x + dx[dir] * 3, y + dy[dir] * 3, z + dz[dir] * 3))
 77     {
 78         b[x + dx[dir]][y + dy[dir]][z + dz[dir]] = b[x + dx[dir] * 2][y + dy[dir] * 2][z + dz[dir] * 2] = b[x + dx[dir] * 3][y + dy[dir] * 3][z + dz[dir] * 3] = 1;
 79         x += (dx[dir] * 3), y += (dy[dir] * 3), z += (dz[dir] * 3);
 80         for(register int i = 0;i < 6;++ i)
 81         {
 82             if((i | 1) == (dir | 1))continue;
 83             if(ok(x + dx[i], y + dy[i], z + dz[i]))
 84             {
 85                 b[x + dx[i]][y + dy[i]][z + dz[i]] = 1;
 86                 fangan[++tot] = Node(3, dir);
 87                 fangan[++tot] = Node(1, i);
 88                 dfs(x + dx[i], y + dy[i], z + dz[i], i, num + 1);
 89                 tot -= 2;
 90                 b[x + dx[i]][y + dy[i]][z + dz[i]] = 0;
 91             }
 92         }
 93         x -= (dx[dir] * 3), y -= (dy[dir] * 3), z -= (dz[dir] * 3);
 94         b[x + dx[dir]][y + dy[dir]][z + dz[dir]] = b[x + dx[dir] * 2][y + dy[dir] * 2][z + dz[dir] * 2] = b[x + dx[dir] * 3][y + dy[dir] * 3][z + dz[dir] * 3] = 0;
 95     }
 96 }
 97
 98 int main()
 99 {
100     freopen ("blessyou.in", "r", stdin); freopen ("blessyou.out", "w", stdout);
101     read(n), read(m), read(t), read(p);
102     read(sx), read(sy), read(sz);scanf("%c", &sc);
103     read(ex), read(ey), read(ez);scanf("%c", &ec);
104     for(register int i = 1;i <= p;++ i)
105     {
106         int tmp1,tmp2,tmp3;
107         read(tmp1), read(tmp2), read(tmp3);
108         b[tmp1][tmp2][tmp3] = 1;
109     }
110     ans = 13;
111     if(sc == 'x')
112     {
113         if(sx == 1) sdir = 0, sx -= 1;
114         else sdir = 1, sx += 1;
115     }
116     else if(sc == 'y')
117     {
118         if(sy == 1) sdir = 2, sy -= 1;
119         else sdir = 3, sy += 1;
120     }
121     else
122     {
123         if(sz == 1) sdir = 4, sz -= 1;
124         else sdir = 5, sz += 1;
125     }
126     if(ec == 'x')
127     {
128         if(ex == n) edir = 0;
129         else edir = 1;
130     }
131     else if(ec == 'y')
132     {
133         if(ey == m) edir = 2;
134         else edir = 3;
135     }
136     else
137     {
138         if(ez == t) edir = 4;
139         else edir = 5;
140     }
141     dfs(sx,sy,sz,sdir,0);
142     if(ans == 13)printf("Dream Battle");
143     else printf("%d", ans);
144     return 0;
145 }

T3

转载于:https://www.cnblogs.com/huibixiaoxing/p/7647663.html

NOIP模拟赛 17.10.10相关推荐

  1. NOIP模拟赛csy2021/10/30

    NOIP模拟赛csy2021/10/30 比赛时间规划 赛后反思与总结 这..总的来说感觉打的很不好,根本没有状态,有一部分原因是今天来晚了,太慌,更多的还是这次题感觉很难o(╥﹏╥)o 比赛时间规划 ...

  2. 辣鸡(ljh) NOIP模拟赛 模拟 平面几何 数论 化学相关(雾)

    [题目描述] 辣鸡ljhNOI之后就退役了,然后就滚去学文化课了. 然而在上化学课的时候,数学和化学都不好的ljh却被一道简单题难住了,受到了大佬的嘲笑. 题目描述是这样的:在一个二维平面上有一层水分 ...

  3. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  4. 【noip模拟赛4】Matrix67的派对 暴力dfs

    [noip模拟赛4]Matrix67的派对 描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们安排 ...

  5. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  6. 2020.03.18模拟赛17(第二题)

    2.[GDKOI训练]音乐节拍(mnotes) 题目描述 FJ准备教他的奶牛弹奏一首歌曲,歌曲由N(1<=N<=50,000)种音节组成,编号为1到N,而且一定按照从1到N的顺序进行弹奏, ...

  7. 2020.03.18模拟赛17(第三题)

    3.[GDKOI训练]电视游戏问题(vidgame) 题目描述 农夫约翰的奶牛们游戏成瘾!本来FJ是想要按照陶教授的做法拿她们去电击戒瘾的,可是后来他发现奶牛们玩游戏之后比原先产更多的奶.很明显,这是 ...

  8. NOIP 模拟赛 长寿花 题解

    NOIP 模拟赛 长寿花 题解 要放 \(n\) 层物品,第 \(i\) 层有 \(a_i\) 个位置放物品,物品有 \(m\) 中颜色,有约束条件: 同一层两个相邻物品颜色不能相同. 相邻两层颜色集 ...

  9. jyzy noip模拟赛5.22-2

    不知道哪来的题 jyzy noip模拟赛5.22-2 样例输入 1 2 3 4 样例输出 0.200000000000000 数据 |a|,|b|,|c|,|d|<=1e9 很多大佬迅速想到二分 ...

最新文章

  1. 读《大型网站技术架构:核心原理与案例分析》第一章:大型网站架构演化
  2. 中兴通讯首席科学家谈5G现状
  3. 云炬VB开发笔记 3VB语言基础和顺序结构
  4. VT-x/AMD-V 硬件加速器已被启动,但当前处于无效状态
  5. 人工智能状态图matlab,人工智能—TensorFlow(七):matplotlib图形可视化
  6. mysql storm_flume+kafka+storm+mysql架构设计
  7. 表面上在帮女朋友拍照,其实镜头瞄准的是......
  8. 用Java解析:您可以使用的所有工具和库
  9. oracle+trace参数设置,Oracle autotrace参数详解
  10. ReadDirectoryChangesW 函数
  11. 杀死 tomcat 进程的脚本
  12. 腾讯赵建春:AI浪潮下的高效运维思考及实践
  13. ai的预览模式切换_当AI频繁切换色彩预览模式时 颜色会越变越深 求解?
  14. 一款响应式的(电子报)Newsletter 模板 – Antwort
  15. 拓端tecdat|【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享
  16. Mathematica处理高斯光束的分布图像
  17. QT+VS开发界面入门(qt界面在VS2022实现自动生成槽函数)
  18. WARNING: The directory '/home/zhex/.cache/pip/http' or its parent directory is not owned by the curr
  19. 成长与发展---怎么给博士军团当好“博导”?(PL)
  20. java将字符串变小写变大写_Java 实例 – 字符串小写转大写

热门文章

  1. 华为HCIE认证改版(2021年5月30日正式改版升级)
  2. matebook14支持触摸屏吗_用过华为MateBook 14 2020款,才发现这“屏”真的很优秀
  3. 末位淘汰!985高校硕士毕业拟新规:强制20%不通过或需大改?
  4. 妈妈说就算你注册的域名再长GOOGLE都能搜索出来,百度也有妈妈!
  5. com.google.guava包里面的相关简单方法
  6. 5月30日第壹简报,星期一,农历五月初一
  7. 小红书的文案有什么特点
  8. 汇编语言里 eax ebx ecx edx esi edi ebp esp这些都是什么意思啊
  9. 什么是redis数据库?
  10. 如何使用计算机勾绘汇水面积,汇水面积怎么计算