Mutual Training for Wannafly Union #9】的更多相关文章

A.Phillip and Trains CodeForces 586D 题意:过隧道,每次人可以先向前一格,然后向上或向下或不动,然后车都向左2格.问能否到达隧道终点. 题解:dp,一开始s所在列如果前方为'.'则dp[i]=1.r[i]代表上一次的dp[i]值. 如果该行当前可行,那么它就可以更新它上下两行(如果有),必须用r[i]去更新. 再判断每行在当前时间是否会发生撞车:看看位置 i+t*2,i+t*2+1,i+t*2+2 是否有车. #include <iostream> #inc…
---恢复内容开始--- q神等人组织的vjudge上的多校训练,题目基本上都来自于CF,#1是上周进行的,参加后感觉收获很多,因为上周准备期中比较忙,解题报告现在补上. 比赛地址(兼题目地址) A题 DFS搜索所有路径,需要注意的是走的顺序,先向前走一步,再向上或向下或静止不动,由于车一直在走,可以认为是相对运动,即人再向右侧走两个格子.遇到当前位置是车就说明走不通,可以走出的条件是已经在此行所有车的后面. 注意,一定要写visited记录走没走过格子(也就我这种搜索初学者会犯这么傻的错误吧,…
题目链接:http://www.spoj.com/problems/IAPCR2F/en/ 题目大意: 给m个数字代表的大小,之后n组数据,两两关联,关联后的所有数字为一组,从小到大输出组数以及对应的组数数字和. 解题思路: 很明显一个并查集,5个月前的这场比赛,过三四题的人不少,其实有3题是大众题,这题当时知道是并查集,可是当时对其理解不深,没A掉.现在回头来补题,用数组存储莫名WA,改用vector玄学AC.下次回头来看应该又用不一样的感受吧! 丑代码: #include <stdio.h>…
codeforces 298A. Snow Footprints 分类讨论三种情况: ①..RRRRRR…  ②..LLLLLLL… ③..RRRLLLL.. //AC by lwq: #include<stdio.h> #include<algorithm> #include<string> #include<string.h> using namespace std; int main() { int n; scanf("%d",&a…
Mr.BG is very busy person. So you have been given enough time (1000 milliseconds) to help him. Mr. BG has a bag of marbles with different alphabets written on them. And he has become busy on playing with these marbles by putting them in N boxes place…
A(SPOJ NPC2016A) 题意:给一个正方形和内部一个点,要求从这个点向四边反射形成的路线的长度 分析:不断做对称,最后等价于求两个点之间的距离 B(CF480E) 题意:求01矩阵内由0组成的最大正方形,但这里有修改操作,每次操作把一个0位置修改成1.矩阵大小<=2000*2000,操作次数<=2000 分析:离线倒序+悬线法+单调队列维护 首先离线,倒着从前往后做 先预处理每个0位置向上.向下最多能延展多少 对于修改就暴力修改,时间复杂度是O(kn)的 问题是如何维护询问的结果 注…
A =w= B QvQ C 题意:有长度为n的序列(n<=5e5),求满足条件的a,b,c,d的组数,要求满足条件:min([a,b])<=min([c,d]),a<=b<c<=d 分析:数据结构(set+BIT) 不妨把所有点按照从小到大的顺序加入数组 那么当一个数x进入数组时候,已经在数组里的数一定小于等于它 我们考虑以x为min([a,b])的方案数 很明显我们可以找到该位置的l和r(set) 那么a只能在l~x之间,b只能在x~r之间,而c,d只能在空隙之中 用乘法原…
A(UVA12336) 题意:给一个n*m(n,m<=1e5)的棋盘,棋盘上有一些障碍点不能放棋子,现在要在棋盘上放4个棋子,满足A->B->C->D->A,其中走的规则是跳马字,问一共有多少种方案 分析:数学计算+hash 因为A.B.C.D可以顺时针.逆时针.随便以谁为起点放,所以对于一个确定的图形,一共有8种方案,所以问题就变成了寻找有多少个图形 容易想到用总的图形个数-障碍点占据的图形个数 先分析一共有多少种图形,一共有六种,一种是5*3格子里的直菱形,一种是3*5格…
A 题意:平面上有n个点(n<=100000),给你一个p(20<=p<=100) 判断是否存在一条直线至少过[np/100](向上取整)个点,时限20s,多组数据 分析:概率算法 最直接的想法是枚举任意两个点算出这条直线经过多少点,这样至少也是O(n^2)(当然肯定不止),TLE 注意p>=20,假设结果存在,那么这条直线要经过至少n/5个点 那么一次枚举两个点,成功的概率是1/5*1/5=1/25 也就是说如果结果存在,那么一次枚举枚举不到的概率是24/25 如果枚举n次,一直…
题目链接:http://vjudge.net/contest/142053#overview A.题意:有一个3*n的隧道,人和车轮流走,人先向右走一步,然后选在是在原地不动还是上下移动一格,之后车开始往左移两格,问人是否能走到隧道尽头 思路:车是不会上下动的,那么我们按照相对来算就行,也就是人相当于往右走一步,然后选择不动还是上下移动一格,然后往右走两步.bfs处理把能走到的点加入到队列 bfs和dp其实思路是一样的,都是从左到右递推过去的 #include <stdio.h> #inclu…