Mutual Training for Wannafly Union #5
A(UVA12336)
题意:给一个n*m(n,m<=1e5)的棋盘,棋盘上有一些障碍点不能放棋子,现在要在棋盘上放4个棋子,满足A->B->C->D->A,其中走的规则是跳马字,问一共有多少种方案
分析:数学计算+hash
因为A、B、C、D可以顺时针、逆时针、随便以谁为起点放,所以对于一个确定的图形,一共有8种方案,所以问题就变成了寻找有多少个图形
容易想到用总的图形个数-障碍点占据的图形个数
先分析一共有多少种图形,一共有六种,一种是5*3格子里的直菱形,一种是3*5格子里的直菱形,还有4种分别是4*4格子中的4种情况
那么总的个数就是5*3矩阵的个数+3*5矩阵的个数+(4*4矩阵的个数)*4
然后再分析障碍点占据的图形个数
这很明显会出现共用的情况,最简单的方法就是记录下从一个障碍点出发的图形上有多少个障碍点,记录下ans[1],ans[2],ans[3],ans[4],那么ans=ans[1]+ans[2]/2+ans[3]/3+ans[4]/4
对于每个障碍点,枚举6种图形,并且枚举它在这种图形的四个顶点的哪个点(这里可以根据基础方向坐标不断顺时针旋转)
统计所到点是否是障碍点,就用hash吧,用set、map什么的会TLE
B
= =
C
=w=
D
QvQ
E
题意:将一个十进制数转成-2进制
分析:套路
当时我写的时候写的很复杂,是从高位逼近,后来网上找到了转负进制的通法
比如10进制要转-R进制,同样也是不断取模(-R),整除(-R),那么问题就是有的位上会出现负数,这不符合-R进制的数字局限
有个很巧妙的方法,就是给这个位置上的数+R,那么整个数字就改变了R*R^i=R^(i+1),那么第i+1位上的数字加上一个1即可(因为相邻位正负性恰好相反)
具体做的时候,不断取模-R,如果发现某位<0,给这位+R,给剩余整除的数+1即可
沃老师在讲题的时候是通过分析-2进制的奇偶性来解释这一过程的……
F(OpenJ_POJ C15C 北大2015校赛C题)
题意:n个点,m条边的无向图(n<=1e5,m<=2e5),有时间点1~k(k<=1e5),但是每条边在某个确定的时间点(每条边只有一个时间点)会断掉,特别的,有的边永远不会断。询问每个时间点,互相相连的点对有多少个
分析:cdq分治+可撤销并查集
题目求解的是互相相连的点对,本质是维护能够删除的并查集
有一种很好的离线分治做法,对时间进行分治[l,r]
对于每个中间点mid,先将[mid+1,r]这些时间点会断的边全部加入并查集,然后继续向左递归
直到[1,1],那么这个时候加入并查集中的正好是[2,k]的,那么[1,1]的答案就出来了
然后我们接下来希望得到[2,2]的答案,很关键的一点就是要把时间点为2的边全部删掉,我们可以惊奇地发现这些边是我们最后加入到并查集中的
一般来说,对于[l,r],先将[mid+1,r]中所有边加入并查集,再递归处理[l,mid],然后将[mid+1,r]中的边全部删掉、将[l,mid]中的边全部加入(因为这部分答案我们已经得到了),再递归处理[mid+1,r],这样我们删除的所有边都是刚刚加入并查集的边,所以如果将并查集的加边当作一个栈的话,我们就是不断弹出栈顶的边
这里并查集要求的可持久化仅仅是要求最近的上一次的信息
这种可撤销并查集的实现很简单,用按秩合并的并查集即可,入栈时记录入栈前两个点各自信息保存下来,出栈时候按照记录的值恢复即可
至于统计答案,合并的时候将两个即将连通的连通块的size相乘加到ans中,撤销时候减去
分析下复杂度,对于k个时间点信息,有logk层需要将其加入并查集,从并查集中撤销,因为是按秩合并的并查集,所以复杂度是logk,所以总的就是O(K*log^2(k))
这种按时间整体分治的cdq分治好神啊!就是处理完左边的,处理右边,考虑左边对右边的答案统计的影响。还涉及到可撤销的并查集,这题真神啊~~~~
Mutual Training for Wannafly Union #5的更多相关文章
- 【Mutual Training for Wannafly Union #1 】
A.Phillip and Trains CodeForces 586D 题意:过隧道,每次人可以先向前一格,然后向上或向下或不动,然后车都向左2格.问能否到达隧道终点. 题解:dp,一开始s所在列如 ...
- Mutual Training for Wannafly Union #1解题报告
---恢复内容开始--- q神等人组织的vjudge上的多校训练,题目基本上都来自于CF,#1是上周进行的,参加后感觉收获很多,因为上周准备期中比较忙,解题报告现在补上. 比赛地址(兼题目地址) A题 ...
- Mutual Training for Wannafly Union #6 E - Summer Trip(并查集)
题目链接:http://www.spoj.com/problems/IAPCR2F/en/ 题目大意: 给m个数字代表的大小,之后n组数据,两两关联,关联后的所有数字为一组,从小到大输出组数以及对应的 ...
- Mutual Training for Wannafly Union #2
codeforces 298A. Snow Footprints 分类讨论三种情况: ①..RRRRRR… ②..LLLLLLL… ③..RRRLLLL.. //AC by lwq: #includ ...
- Mutual Training for Wannafly Union #8 D - Mr.BG Hates Palindrome 取余
Mr.BG is very busy person. So you have been given enough time (1000 milliseconds) to help him. Mr. B ...
- Mutual Training for Wannafly Union #9
A(SPOJ NPC2016A) 题意:给一个正方形和内部一个点,要求从这个点向四边反射形成的路线的长度 分析:不断做对称,最后等价于求两个点之间的距离 B(CF480E) 题意:求01矩阵内由0组成 ...
- Mutual Training for Wannafly Union #6
A =w= B QvQ C 题意:有长度为n的序列(n<=5e5),求满足条件的a,b,c,d的组数,要求满足条件:min([a,b])<=min([c,d]),a<=b<c& ...
- Wannafly Union Goodbye 2016
A 题意:平面上有n个点(n<=100000),给你一个p(20<=p<=100) 判断是否存在一条直线至少过[np/100](向上取整)个点,时限20s,多组数据 分析:概率算法 ...
- Wannafly Union#1
题目链接:http://vjudge.net/contest/142053#overview A.题意:有一个3*n的隧道,人和车轮流走,人先向右走一步,然后选在是在原地不动还是上下移动一格,之后车开 ...
随机推荐
- [C陷阱和缺陷] 第2章 语法“陷阱”
第2章 语法陷阱 2.1 理解函数声明 当计算机启动时,硬件将调用首地址为0位置的子例程,为了模拟开机时的情形,必须设计出一个C语言,以显示调用该子例程,经过一段时间的思考,得出语句如下: ( * ...
- 状态压缩+枚举 POJ 3279 Fliptile
题目传送门 /* 题意:问最少翻转几次使得棋子都变白,输出翻转的位置 状态压缩+枚举:和之前UVA_11464差不多,枚举第一行,可以从上一行的状态知道当前是否必须翻转 */ #include < ...
- HTML基础2——综合案例1——如何用iis配置网站
1.打开iis 如果机子上面没有iis,可以先装一个,不同的系统可能安装步骤不一样,至于iis的安装方法,大家可以去百度找找. 2.准备网站源程序 既然要配置网站,肯定要先准备好网站源程序,网 ...
- 常用JavaScript代码库(又名:WFang.js)
1.根据公司项目封装ajax请求,结合layer框架一起使用 /*提取接口公共部分*/ var ApiConf = { server:"http://localhost:8080/Batte ...
- JDBC和数据库连接池
JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成. ● JDBC ● C3P0 ● DRUID 一.JDBC ...
- LN : leetcode 399 Evaluate Division
lc 399 Evaluate Division 399 Evaluate Division Equations are given in the format A / B = k, where A ...
- [ USACO 2017 FEB ] Why Did the Cow Cross the Road III (Gold)
\(\\\) \(Description\) 给定长度为\(2N\)的序列,\(1\text ~N\)各出现过\(2\)次,\(i\)第一次出现位置记为\(a_i\),第二次记为\(b_i\),求满足 ...
- 151. [USACO Dec07] 建造路径
★★ 输入文件:roads.in 输出文件:roads.out 简单对比 时间限制:1 s 内存限制:128 MB 译 by CmYkRgB123 描述 Farmer John 刚刚得 ...
- mongo 3.4分片集群系列之一:浅谈分片集群
这篇为理论篇,稍后会有实践篇. 这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mong ...
- cookie、json详解
什么是cookie 1.cookie是存储于访问者计算机中的变量2.cookie是浏览器提供的一种机制3.可以由js控制(设置.读取.删除)4.cookie可以实现跨页面全局变量可以跨越同域名下多个网 ...