随笔分类 -  int main()

摘要:bzoj2463 谁能赢呢? 题目大意:给定一个n×n的方格,从(1,1)开始走,每次可以到上下左右没有到过的一个格子,alice先手,交替操作,如果先手必胜则输出'Alice’,否则输出‘Bob’。 思路:lcomyn大爷秒暴结论。后来仔细想了想,只发现走一步肯定会改变格子奇偶性。其实如果n是偶数 阅读全文
posted @ 2015-08-28 08:17 Rivendell
摘要:bzoj1040 骑士 题目大意:给出每个骑士的攻击力和痛恨的人,每个骑士不能和自己痛恨的人一起出现,选一些骑士使得他们的攻击力最大。 思路:因为每个骑士恨一个人,所以是一个环套树森林(注意n点n边的联通图可能是环套树森林!!!),虽然题目是单向边,但等同于双向边。对于环套树dp的做法,可以搜到环后 阅读全文
posted @ 2015-08-26 16:51 Rivendell
摘要:(一)弦图:当且仅当存在完美消除序列。 bzoj1006 神奇的国度 题目大意:给定一张弦图,求它的最小染色数。 思路:之所以看出是弦图,因为题目中说只有三元环,而没有更多的。求最小染色数就是求出完美消除序列后,从后往前尽量染能染的最小的颜色。其他分析的复杂度是O(n+m)的,但是自己写出程序没有优 阅读全文
posted @ 2015-08-26 10:05 Rivendell
摘要:(一)半平面交:化出一些一元二次不等式,然后就可以求一些半平面交来找合法解了。 bzoj1007 水平可见直线 题目大意:给定一些直线,求从无限高处可以看到那些直线。 思路:对于每一条直线都是一个半平面,然后加上无穷远的半平面之后求半平面交,用到的就是。这里无穷远的半平面可以赋成1e100防止错误。 阅读全文
posted @ 2015-08-25 19:12 Rivendell
摘要:CODEVS1064虫食算 题目描述 Description 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子: 43#9865#045 + 8468#6633 44445506978 其中#号代表被虫子啃掉的数字。根据算式,我们很容易判 阅读全文
posted @ 2015-08-20 20:26 Rivendell
摘要:bzoj2049 洞穴探测 题目大意:lct(link,cut,判联通)。 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define maxnode 10005 using namespace 阅读全文
posted @ 2015-08-18 13:07 Rivendell
摘要:可持久化线段树就类似于主席树,所以先不放题了。bzoj3673||3674 可持久化并查集思路:用可持久化线段树来维护每个点的fa信息,然后按秩合并(相当于点的高度)查找的时候顺着父亲暴力查找。这里我们可以找到爸爸儿子那一级就可以了,可以省一些时间。#include#include#include#... 阅读全文
posted @ 2015-08-17 15:15 Rivendell
摘要:bzoj3105 新Nim游戏 题目大意:给定n堆火柴,第一二次取的时候可以取走任意堆,然后和普通的游戏一样,问怎样取能先手必胜,最小化第一次取的火柴数。 思路:第一次取走后,剩下的火柴中不存在一个子集异或和为0(用线性基判断这件事),贪心能取就取,总和减去剩下的就可以了。实现的时候我们是用别的数来 阅读全文
posted @ 2015-08-16 17:57 Rivendell
摘要:bzoj2337 XOR和路径 题目大意:无向图中,每个点等概率的选择周围的点走过去,求1~n路径权值(走过边的异或和)的期望。 思路:对边权的二进制每一位单独考虑,因为异或后互不影响。设f[i]表示i~n的路径权值为1的概率,对于每一个点列出方程(注意边权为0/1),高斯消元求出答案。 #incl 阅读全文
posted @ 2015-08-16 17:20 Rivendell
摘要:SD集训divisors 题目大意:给定一个1~n的排列p,求l<=a,b<=r中pa%pb=0的(a,b)数对个数。 思路:离线操作。对于1~n所有数在n以内的约数个数n/1+n/2+n/3+...+n/n=nlogn,那么我们可以保存下所有的这样成倍数的关系,按左端点排序,然后暴力插入。对于查询 阅读全文
posted @ 2015-08-11 20:02 Rivendell
摘要:bzoj3679 数字之积 题目大意:给定n、l、r,f(i)表示i的各位数字之积(不含前导0),求出0<f(i)<=n(l<=i<r)的个数。 思路:这是在夏令营中学长讲的题目,听到一种相对简单的方法。很显然要用1~r的个数-1~l的个数我们先用2、3、5、7(因为每一位都是0~9,所以只能有这几 阅读全文
posted @ 2015-07-29 19:39 Rivendell
摘要:CODEVS1198国王游戏 题目描述 Description 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干 阅读全文
posted @ 2015-07-28 16:04 Rivendell
摘要:后缀数组 bzoj1031 JSOI字符加密Cipher 题目大意:给一个字符串,圈成圆圈,从任意位置断开,组成len个字符串,按字典序升序排序后,输出尾字母。 思路:将字符串加倍后,对所有后缀排序,用后缀数组的思想,O(nlogn),输出的时候只要输出长度>=len的相应位置的字母就可以了。 #i 阅读全文
posted @ 2015-07-25 14:33 Rivendell
摘要:CODEVS1156作业调度方案 题目描述 Description 我们现在要利用m台机器加工n个工件,每个工件都有m道工序,每道工序都在不同的指定的机器上完成。每个工件的每道工序都有指定的加工时间。 每个工件的每个工序称为一个操作,我们用记号j-k表示一个操作,其中j为1到n中的某个数字,为工件号 阅读全文
posted @ 2015-07-13 23:44 Rivendell
摘要:很久之前就学习过的算法,但是最近发现很多题目都可以用倍增的方法解决,并且十分好写,所以总结一下。 noip2013 货车运输 题目大意:n各点构成一个无向图,每条边有一个最大负载,有q辆货车,分别从不同的点到不同的点,求每辆货车最大运载量。 思路:为了满足最大负载,肯定是走图的最大生成树上的路径,并 阅读全文
posted @ 2015-07-06 16:45 Rivendell
摘要:某次模拟赛的T2 强迫症 题目大意:判断一棵树是否对称。 思路:首先,一棵树的重心一定在对称轴上。一棵树是否对称有两种情况:有点在对称轴上和没有点在对称轴上。没有点在对称轴上的情况一定有两个重心(但有两个重心并不一定没有点在对称轴上)。有两个重心时,我们只需要算出两个重心对应子树的hash值,然后比 阅读全文
posted @ 2015-07-05 18:04 Rivendell
摘要:bzoj1047 理想的正方形题目大意:求a*b的矩阵中一个n*n的子矩阵,使得子矩阵的最大值和最小值的差最小。思路:一开始认为能用二维线段树a掉,但lcomyn大神写了一下,结果T了,于是就寻找新的写法。借鉴了斜率优化的思路,发现单调队列可以优越的做到O(ab)的求出整个矩阵中每个点左面延伸n位的... 阅读全文
posted @ 2015-07-04 18:55 Rivendell
摘要:今天学习了一种用hash求解lcp问题的方法。把一段内的hash表示为某个数x的递增次方乘上字符串相应位置的字母对应值,然后二分长度,判断两段的hash值是否相等就可以了。hash值可以用unsigned long long保存,这种类型能在溢出的时候自动mod2^64(看到书上说的)。cogs18... 阅读全文
posted @ 2015-07-04 18:50 Rivendell
摘要:求解a^x=b(mod p),p为质数时,直接bsgs就可以了。将x写作km-j,m=sprt(p)时复杂度最优,a^(km)=ba^j(mod p),我们预先求出a^j(j=0~m-1)存入map,然后穷举k=1~p/m,如果map中有值,返回km-cnt[]就可以了。bzoj4128 Matri... 阅读全文
posted @ 2015-07-01 20:51 Rivendell
摘要:poj1741树上的点对 题目大意:给定一棵树,求树上距离不超过k的点对个数。 思路:点分治模板题。 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #define 阅读全文
posted @ 2015-06-26 20:30 Rivendell