辽宁OI2016夏令营模拟T3-chess】的更多相关文章

放棋子(chess.pas/c/cpp)题目大意现在有一个 n*m 的棋盘,现在你需要在棋盘上摆放 2n 个棋子,要求满足如下条件:1. 每一列只能有一个棋子:2. 每一行的前 xi 个格子有一个棋子,而且最多有一个棋子:3. 每一行的后 yi 个格子有一个棋子,而且最多有一个棋子:求一共有多少种不同的放置方案,答案对于 1000000007 取模输入文件输入文件为 chess.in.输入共有 n+1 行.第一行有两个整数 n,m,表示该棋盘的行数与列数.接下来的 n 行,每行两个整数 xi 和…
最短路(road.pas/c/cpp)题目大意有一个点数为 n,边数为 m 的无向图,点的编号为 1 到 n.边的权值均为非负数.现在请你求出从点 1 到点 n 的最短路径条数,若有无限条则输出-1,答案对于1000000009 取模.输入文件输入文件为 road.in.输入共有 m+1 行.第一行有两个整数 n,m,表示图中所有的点数与边数.接下来的 m 行,每行三个整数 x,y,z,表示了一条边的起点.终点以及该边的长度.输出文件输出文件为 road.out.输出一个整数表示从点 1 至点…
数值距离(dis.pas/c/cpp)题目大意我们可以对一个数 x 进行两种操作:1. 选择一个质数 y,将 x 变为 x*y2. 选择一个 x 的质因数 y,将 x 变为 x/y定义两个数 a,b 之间的距离为把 a 变成 b 所需要执行的最少操作次数.例如数 69 与 42之间的距离为 3,因为 42=69/23*2*7现在有一个长度为 n 的序列 a1,a2,…,an.对于每一个 i,我们需要找到一个 j,使得 ai 到aj 的距离最小,若有多个 j 满足条件,输出最小的 j.输入文件输入…
[问题描述] 小美很喜欢下象棋. 而且她特别喜欢象棋中的马. 她觉得马的跳跃方式很独特.(以日字格的方式跳跃) 小芳给了小美一张很大的棋盘,这个棋盘是一个无穷的笛卡尔坐标. 一开始\(time=0\)的时候,马在原点.每个时刻马都跳一步. 可是这个坐标图有点残缺,有几个点是不能跳到的. 然后小美很好奇在\(time=[0,K]\)中,马能跳到多少个不同的格子. [输入格式] 从文件chess.in中读入数据. 第一行两个数K,n表示时间上限和残缺的点的数量. 接下来n行,每行一个坐标 xi,yi…
神奇的场上原码 #include<iostream> #include<cstdio> #include<cstring> #include<queue> //red 0 yellow 1 nothing 2 using namespace std; int map[101][101],n,m,ans=0x7fffffff,vis[101][101]; const int px[4]={1,-1,0,0},py[4]={0,0,1,-1}; struct n…
这道题就是道状压dp...比赛的时候太贪心 然后状压又不好 所以T2 T3一起挂了QAQ 吸取教训QAQ f[i][j][k]表示前i个数选了j个 最后a个的状态为k的答案 #include<cstdio> #include<cstring> #include<algorithm> #define LL long long using std::swap; ; int read(){ ,f=,c=getchar(); ; c=getchar();} +(c-'); c=…
调了一个下午只有八十分QAQ md弃了不管了 对拍也没拍出来 鬼知道是什么数据把我卡了QAQ 没事我只是个SB而已 这题其实还是蛮正常的 做法其实很简单 根据链剖的构造方法 你每次修改都是一段又一段的线段 那么你只要求一下线段并起来后哪些地方被覆盖了>=t次 不过要基数排序一波不然会T #include<cstdio> #include<cstring> #include<algorithm> #define LL long long using std::swa…
题目描述 $dirty$在一个棋盘上放起了棋子. 棋盘规格为$n\times m$,他希望任意一个$n\times n$的区域内都有$C$个棋子.$dirty$很快就放置好了一个满足条件的棋盘方案,但是他认为这样过于简单了,他希望知道有多少个满足条件的方案. 输入格式 输入三个整数$n,m,C$,含义如题所述. 输出格式 输出一行一个整数,表示答案对$10^9+7$取模的结果. 样例 样例输入: 2 3 1 样例输出: 6 数据范围与提示 对于$20\%$的数据,$n,K\leqslant 4$…
题目描述 $pig$在下象棋的时候特别喜欢用马,他总是计算着自己的马还需要几步才能吃掉对方的帅,以及方案数的个数,当然$pig$很笨,所以他只能求助于你.我们假设在$n\times m$的棋盘上,$pig$的马只能走$1\times 2$的格点,他的马一开始在$st$,对方的帅在$ed$.当然,我们不能忽视友军和敌军,所以如果落点被友军占有,那么就不能飞过去了:如果落点被敌军占有,那么$pig$认为自己这一步赚了,所以不计入总步数.为了简化问题,我们的马在飞的时候不受到敌军限制. 输入格式 $p…
题目大意 给出$n$, $p$, 求有多少长度为$n$的排列可以被分成三个上升子序列, 数量对$p$取模, 数据范围 $3 \leq n \leq 500$. 思路 首先让我们考虑如果有一个排列,如何判断这个排列合法,我可以考虑贪心,维护三个上升序列的末尾(最大值),从左到右依次将数插入序列,把这个数贪心的加到它可以加入的末尾的数最大的序列里. 因此考虑dp,定义$f[i][j][k]$表示现在有$i$个数,形成了三个上升子序列,其中最大的子序列末尾显然是第$i$大的数,第二大的子序列末尾是第$…