Problem

外太空旅行

Time Limit: 5Sec5 Sec
Memory Limit: 128MB128 MB

Description

在人类的触角伸向银河系的边缘之际,普通人上太空旅行已经变得稀松平常了。某理科试验班有nn个人,现在班主任要从中选出尽量多的人去参加一次太空旅行活动。
可是nn名同学并不是和平相处的。有的人,比如小AA和小BB整天狼狈为奸,是好朋友;但还有的人,比如杜鲁门和赫鲁晓夫就水火不相容。这nn名同学,由于是理科生,都非常的理性,所以“朋友的朋友就是朋友”和“敌人的朋友就是敌人”这两句话对这些同学无效。换句话说,有可能小AA和小BB是朋友,小BB和小CC是朋友,但是小AA和小CC两人势如水火。
任意两个人之间要不就是敌人,要不就是朋友。
因为在太空船上发生人员斗殴事件是很恶劣也很危险的,因此选出来参加旅行活动的同学必须互相之间都是朋友。你的任务就是确定最多可以选多少人参加旅行。

Input

第一行一个整数nn(1n501\le n\le 50)。所有的同学按照1n1\sim n编号。
接下来若干行,每行两个用空格隔开的整数a,ba, b (1a,bn1\le a,b\le n),表示aabb是朋友。
注意:如果一个数对(x,y)(x,y)或者(y,x)(y,x)没有在文件中出现,那么编号为xxyy的两个同学就是敌人。

Output

仅仅一个数,即最多可以选多少人参加活动。

Read more »

Problem

【AMPPZ2014】Pillars

Time Limit: 5Sec5 Sec
Memory Limit: 256MB256 MB
Special  JudgeSpecial\;Judge

Description

给定一个n×mn\times m的矩形,其中有f个2×22\times 2的障碍物,其中任意两个障碍物中心之间的欧几里得距离至少为66
且每个障碍物的中心到边缘的距离至少为33。请找到一条从左下角(1,1)(1,1)出发经过所有没有障碍物的点各一次的且最后回到左下角的回路。

Input

第一行包含三个整数n,m,fn,m,f(1n,m10001\le n,m\le 1000n,mn,m都为偶数)。
接下来ff行,每行两个整数x,yx,y(1x<n1\le x<n, 1y<m1\le y<m),表示该障碍物左下角的坐标。

Output

如果无解,输出NIENIE,否则第一行输出TAKTAK,第二行输出方案。
方案包含n×m4×fn\times m-4\times f个字符,第ii个字符表示第ii步的移动方向,用GG表示上,DD表示下,LL表示左,PP表示右。

Read more »

Problem

神奇的矩阵

Time Limit: 5Sec5 Sec
Memory Limit: 512MB512 MB

Description

给出三个行数和列数均为NN的矩阵AABBCC,判断A×B=CA\times B=C是否成立。

Input

题目可能包含若干组数据。
对于每组数据,第一行一个数NN,接下来给出三个N×NN\times N的矩阵,依次为AABBCC三个矩阵。

Output

对于每组数据,若A×B=CA\times B=C成立,则输出YesYes,否则NoNo。每个答案占一行。

Read more »

Problem

【AMPPZ2014】The Captain

Time  Limit:  20  Sec\mathrm{Time\;Limit:\;20\;Sec}
Memory  Limit:  256  MB\mathrm{Memory\;Limit:\;256\;MB}

Description

给定平面上的nn个点,定义(x1,y1)(x1,y1)(x2,y2)(x2,y2)的费用为min(x1x2,y1y2)\min(|x1-x2|,|y1-y2|),求从11号点走到nn号点的最小费用。

Input

第一行包含一个正整数nn(2n2×1052\le n\le 2\times 10^5),表示点数。
接下来nn行,每行包含两个整数x[i]x[i],y[i]y[i](0x[i],y[i]1090\le x[i],y[i]\le 10^9),依次表示每个点的坐标。

Output

一个整数,即最小费用。

Read more »

Problem

【HAOI2016】字符合并

Time  Limit:  20  Sec\mathrm{Time\;Limit:\;20\;Sec}
Memory  Limit:  256  MB\mathrm{Memory\;Limit:\;256\;MB}

Description

有一个长度为 nn0101 串,你可以每次将相邻的 kk 个字符合并,得到一个新的字符并获得一定分数。得到的新字符和分数由这 kk 个字符确定。你需要求出你能获得的最大分数。

Input

第一行两个整数nnkk。接下来一行长度为nn0101串,表示初始串。接下来2k2^k行,每行一个字符cic_i和一个整数wiw_icic_i表示长度为kk0101串连成二进制后按从小到大顺序得到的第ii种合并方案得到的新字符,wiw_i表示对应的第ii种方案对应获得的分数。1n3001\le n\le 300, 0ci10\le c_i\le 1, wi1w_i\ge 1, k8k\le 8

Output

输出一个整数表示答案

Read more »

Problem

货车运输

题目描述

AA 国有 nn 座城市,编号从 11nn,城市之间有 mm 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 qq 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。

输入输出格式

输入格式:
输入文件名为 truck.intruck.in
输入文件第一行有两个用一个空格隔开的整数 nn, mm,表示 AA 国有 nn 座城市和 mm 条道路。 接下来 mm 行每行 33 个整数 xxyyzz,每两个整数之间用一个空格隔开,表示从 xx 号城市到 yy 号城市有一条限重为 zz 的道路。注意: xx 不等于 yy,两座城市之间可能有多条道路 。
接下来一行有一个整数 qq,表示有 qq 辆货车需要运货。
接下来 qq 行,每行两个整数 xxyy,之间用一个空格隔开,表示一辆货车需要从 xx 城市运输货物到 yy 城市,注意: xx 不等于 yy
输出格式:
输出文件名为 truck.outtruck.out
输出共有 qq 行,每行一个整数,表示对于每一辆货车,它的最大载重是多少。如果货车不能到达目的地,输出1-1

Read more »

Problem

【NOIp2008】双栈排序

题目描述

TomTom最近在研究一个有趣的排序问题。如图所示,通过22个栈S1S_1S2S_2TomTom希望借助以下44种操作实现将输入序列升序排序。
操作aa: 如果输入序列不为空,将第一个元素压入栈S1S_1
操作bb: 如果栈S1S_1不为空,将S1S_1栈顶元素弹出至输出序列
操作cc: 如果输入序列不为空,将第一个元素压入栈S2S_2
操作dd: 如果栈S2S_2不为空,将S2S_2栈顶元素弹出至输出序列
如果一个1n1\sim n的排列PP可以通过一系列操作使得输出序列为1,2,(n1),n1,2,\cdots(n-1),nTomTom就称PP是一个“可双栈排序排列”。例如(1,3,2,4)(1,3,2,4)就是一个“可双栈排序序列”,而(2,3,4,1)(2,3,4,1)不是。下图描述了一个将(1,3,2,4)(1,3,2,4)排序的操作序列:<a,c,c,b,a,d,d,b><a,c,c,b,a,d,d,b>

![](https://cdn.luogu.org/upload/pic/51.png)

当然,这样的操作序列有可能有几个,对于上例(1,3,2,4)(1,3,2,4)<a,c,c,b,a,d,d,b><a,c,c,b,a,d,d,b>是另外一个可行的操作序列。TomTom希望知道其中字典序最小的操作序列是什么。

输入输出格式

输入格式:
输入文件twostack.intwostack.in的第一行是一个整数nn
第二行有nn个用空格隔开的正整数,构成一个1n1\sim n的排列。
输出格式:
输出文件twostack.outtwostack.out共一行,如果输入的排列不是“可双栈排序排列”,输出数字00;否则输出字典序最小的操作序列,每两个操作之间用空格隔开,行尾没有空格。

Read more »

Problem

【HAOI2007】上升序列

Time  Limit:  10  Sec\mathrm{Time\;Limit:\;10\;Sec}
Memory  Limit:  162  MB\mathrm{Memory\;Limit:\;162\;MB}

Description

对于一个给定的S=a1,a2,a3,,anS={a_1,a_2,a_3,\cdots,a_n},若有P=ax1,ax2,ax3,,axmP={a_{x_1},a_{x_2},a_{x_3},\cdots,a_{x_m}},满足(x1<x2<<xmx_1 < x_2 < \cdots< x_m)且(ax1<ax2<<axma_{x_1} < a_{x_2} < \cdots < a_{x_m})。那么就称PPSS的一个上升序列。如果有多个PP满足条件,那么我们想求字典序最小的那个。任务给出SS序列,给出若干询问。对于第ii个询问,求出长度为LiL_i的上升序列,如有多个,求出字典序最小的那个(即首先x1x_1最小,如果不唯一,再看x2x_2最小……),如果不存在长度为LiL_i的上升序列,则输出ImpossibleImpossible.

Input

第一行一个NN,表示序列一共有NN个元素第二行NN个数,为a1,a2,,ana_1,a_2,\cdots,a_n 第三行一个MM,表示询问次数。下面接MM行每行一个数LL,表示要询问长度为LL的上升序列。N10000N\le 10000M1000M\le 1000

Output

对于每个询问,如果对应的序列存在,则输出,否则输出ImpossibleImpossible.

Read more »

Problem

【SCOI2005】互不侵犯King

Time  Limit:  10  Sec\mathrm{Time\;Limit:\;10\;Sec}
Memory  Limit:  162  MB\mathrm{Memory\;Limit:\;162\;MB}

Description

N×NN\times N的棋盘里面放KK个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共88个格子。

Input

只有一行,包含两个数NN, KK (1N91 \le N \le 9, 0KN20 \le K \le N^2)

Output

方案数。

Read more »

Problem

【HAOI2015】树上操作

Time  Limit:  10  Sec\mathrm{Time\;Limit:\;10\;Sec}
Memory  Limit:  256  MB\mathrm{Memory\;Limit:\;256\;MB}

Description

有一棵点数为 NN 的树,以点 11 为根,且树点有边权。然后有 MM
操作,分为三种:
操作 11 :把某个节点 xx 的点权增加 aa
操作 22 :把某个节点 xx 为根的子树中所有点的点权都增加 aa
操作 33 :询问某个节点 xx 到根的路径中所有点的点权和。

Input

第一行包含两个整数 N,MN, M 。表示点数和操作数。接下来一行 NN 个整数,表示树中节点的初始权值。接下来 N1N-1 行每行三个正整数 fr,tofr, to , 表示该树中存在一条边 (fr,to)(fr, to) 。再接下来 MM 行,每行分别表示一次操作。其中第一个数表示该操作的种类(13)(1\sim 3) ,之后接这个操作的参数(x 或者 x a)(x\ 或者\ x\ a)

Output

对于每个询问操作,输出该询问的答案。答案之间用换行隔开。

Read more »