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的更多相关文章

  1. 【Mutual Training for Wannafly Union #1 】

    A.Phillip and Trains CodeForces 586D 题意:过隧道,每次人可以先向前一格,然后向上或向下或不动,然后车都向左2格.问能否到达隧道终点. 题解:dp,一开始s所在列如 ...

  2. Mutual Training for Wannafly Union #1解题报告

    ---恢复内容开始--- q神等人组织的vjudge上的多校训练,题目基本上都来自于CF,#1是上周进行的,参加后感觉收获很多,因为上周准备期中比较忙,解题报告现在补上. 比赛地址(兼题目地址) A题 ...

  3. Mutual Training for Wannafly Union #6 E - Summer Trip(并查集)

    题目链接:http://www.spoj.com/problems/IAPCR2F/en/ 题目大意: 给m个数字代表的大小,之后n组数据,两两关联,关联后的所有数字为一组,从小到大输出组数以及对应的 ...

  4. Mutual Training for Wannafly Union #2

    codeforces 298A. Snow Footprints 分类讨论三种情况: ①..RRRRRR…  ②..LLLLLLL… ③..RRRLLLL.. //AC by lwq: #includ ...

  5. 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 ...

  6. Mutual Training for Wannafly Union #9

    A(SPOJ NPC2016A) 题意:给一个正方形和内部一个点,要求从这个点向四边反射形成的路线的长度 分析:不断做对称,最后等价于求两个点之间的距离 B(CF480E) 题意:求01矩阵内由0组成 ...

  7. 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& ...

  8. Wannafly Union Goodbye 2016

    A 题意:平面上有n个点(n<=100000),给你一个p(20<=p<=100) 判断是否存在一条直线至少过[np/100](向上取整)个点,时限20s,多组数据 分析:概率算法 ...

  9. Wannafly Union#1

    题目链接:http://vjudge.net/contest/142053#overview A.题意:有一个3*n的隧道,人和车轮流走,人先向右走一步,然后选在是在原地不动还是上下移动一格,之后车开 ...

随机推荐

  1. WEB前端学习

    第一日:软件的安装和下载 1.百度搜索推荐使用webStorm前端神器进行开发,傻瓜式安装不必多说! 激活 前提:修改本地的hosts配置文件(/etc/hosts) 最后一行新增这句话:0.0.0. ...

  2. 线段树+树状数组+贪心 HDOJ 5338 ZZX and Permutations

    题目传送门 /* 题意:不懂... 线段树+树状数组+贪心:贪心从第一位开始枚举,一个数可以是循环节的末尾或者在循环节中,循环节(循环节内部是后面的换到前面,最前面的换到最后面).线段树维护最大值,树 ...

  3. 【雅虎2017】一个在线展示广告的CVR预估框架实践

    论文A Practical Framework of Conversion Rate Prediction for Online Display Advertising 定期更新,获取更多,欢迎sta ...

  4. kill 8080 port on windows

    1. 查找PID netstat -ano | findstr :yourPortNumber 2. kill进程 taskkill /PID typeyourPIDhere /F

  5. Android Studio3.0打包APK的时候 报错:

    Error:Execution failed for task ':app:transformDexWithDexForRelease'.> com.android.build.api.tran ...

  6. IDEA 提示Cannot resolve symbol

    将Springboot项目,构建为多个模块的时候,idea的有些类中报错Cannot resolve symbol 解决: 1.File->Invalidate Caches/Restart 清 ...

  7. IDEA 导入maven项目,显示:nothing to show

    问题描述: IDEA 导入maven项目,import project,默认下一步,直到Select Maven projects to import界面无选项,提示:nothing to show ...

  8. dede手机访问网站跳转到手机端模板

    如何手机访问的时候跳转到自己的手机端模板,这时候需要一个js跳转代码:当手机访问的时候直接跳转到手机端 那手机端前提要有手机端的模板 <script> if(navigator.platf ...

  9. HTML——meta

    http://www.cnblogs.com/jr1993/p/4542862.html

  10. C# 面向对象之类和方法

    一.新建一个类,用来存放属性和方法( 属性和方法写在同一个类中). 先新建一个类: using System; using System.Collections.Generic; using Syst ...