10 2018 档案
摘要:CF776B Sherlock and his girlfriend 一个数和它的质因数不能同色。 素数的约数只有本身和1。 显然所有素数都可以染同色,合数同理。 欧拉筛一筛。 注意特判n<3的情况。 1 #include<iostream> 2 #include<cstdio> 3 #includ
阅读全文
摘要:poj2262 Goldbach's Conjecture 用欧拉筛把素数筛出来,再枚举一下。 #include<iostream> #include<cstdio> #include<cstring> #define re register using namespace std; #define
阅读全文
摘要:P3197 [HNOI2008]越狱 考虑所有状况:显然是$m^{n}$ 考虑所有不合法状况: 显然相邻两个数不相等 那么后面$n-1$个数就有$(m-1)^{n-1}$种取法 第一个数前面没有相邻的,那么就有$m$种取法 ∴不合法状况有$m*(m-1)^{n-1}$种 ∴$ans=m^{n}-m*
阅读全文
摘要:P1965 转圈游戏 求 $(x+m*10^{k})\%n$ 显然的快速幂。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define re register 5 using namespace std; 6 type
阅读全文
摘要:poj1942 Paths on a Grid 题意:给定一个长m高n$(n,m \in unsigned 32-bit)$的矩形,问有几种走法。$n=m=0$时终止。 显然的$C(m+n,n)$ 但是没有取模,n,m的范围又在unsigned int 范围内 于是有一种神奇的方法↓↓ 1 #inc
阅读全文
摘要:poj1850 Code 题意:输出若干个给定的字符串($length<=10$)在字典序中的位置,字符串中的字母必须严格递增。 读取到非法字符串时,输出“0”,终止程序。(poj1496:继续读取) 我们分成2种情况讨论字典序小于给定字符串的字符串个数 1.长度比给定字符串小 其实长度为$i$的字
阅读全文
摘要:P1314 聪明的质监员 显然可以二分参数W 统计Y用下前缀和即可。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cctype> 5 #include<algorithm> 6 #include<cma
阅读全文
摘要:P3811 【模板】乘法逆元 线性递推逆元模板 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define re register 5 using namespace std; 6 int n,p,inv[3000002
阅读全文
摘要:P1072 Hankson 的趣味题 解法1:唯一分解定理 通过$gcd$和$lcm$对$x$的质因数个数的限制,算出每个质因数的能取的$min~max$个数 然后用乘法原理乘起来。 解法2(code↓): 考虑$lcm(x,b_{0})=b_{1}$ 转化一下:$x*b_{0}=b_{1}*gcd
阅读全文
摘要:P1083 借教室 第一眼:线段树。 然鹅懒得写。 正解:差分+二分。 显然订单合法的上线可以二分 然后差分数组维护一下。没了。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cctype> 5 #def
阅读全文
摘要:P2312 解方程 bzoj3751(数据加强) 暴力的一题 数据范围:$\left | a_{i} \right |<=10^{10000}$。连高精都无法解决。 然鹅面对这种题,有一种常规套路:取模 显然方程两边同时$mod$结果不会改变 于是我们牺牲了正确性使答案允许我们暴力枚举。 为了提高正
阅读全文
摘要:P1270 “访问”美术馆 艺术馆最多有100个展室 > 节点数$<=100*2<2^{8}=256$ 所以可以开一个$f[i][j]$表示到第$i$个点为止花去$j$分钟的最大价值 对于分叉的点,我们可以直走右边或直走左边,也可以两边都走一次,分别转移即可。 对于展室(叶节点),处理一下几分钟能拿
阅读全文
摘要:Description 有一天,贝茜无聊地坐在蚂蚁洞前看蚂蚁们进进出出地搬运食物.很快贝茜发现有些蚂蚁长得几乎一模一样,于是她认为那些蚂蚁是兄弟,也就是说它们是同一个家族里的成员.她也发现整个蚂蚁群里有时只有一只出来觅食,有时是几只,有时干脆整个蚁群一起出来.这样一来,蚂蚁们出行觅食时的组队方案就有
阅读全文
摘要:Description Farmer John's N (1 <= N <= 50,000) cows (numbered 1..N) are planning to run away and join the circus. Their hoofed feet prevent them from
阅读全文
摘要:Description Input 第一行给出N,W 第二行到第N+1行:每行给出二个整数x,y,输入的x严格递增,并且第一个x总是1 第一行给出N,W 第二行到第N+1行:每行给出二个整数x,y,输入的x严格递增,并且第一个x总是1 Output 输出一个整数,表示城市中最少包含的建筑物数量 输出
阅读全文
摘要:P2873 [USACO07DEC]泥水坑Mud Puddles bfs入门。 对于坐标为负的情况,我们可以给数组下标加上$abs(min(minx,miny))$转正(根据题意判断) 1 #include<iostream> 2 #include<cstdio> 3 #include<cstrin
阅读全文
摘要:P2872 [USACO07DEC]道路建设Building Roads kruskal求最小生成树。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<queue> 6
阅读全文
摘要:P2871 [USACO07DEC]手链Charm Bracelet 裸01背包。 看到自己1年半前写的30分code.......菜的真实(捂脸) 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define re re
阅读全文
摘要:P2909 [USACO08OPEN]牛的车Cow Cars 显然的贪心。 按速度从小到大排序。然后找车最少的车道,查询是否能填充进去。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm>
阅读全文
摘要:P2908 [USACO08OPEN]文字的力量Word Power 第一眼:AC自动机(大雾) 直接暴力枚举即可。 用<cctype>的函数较方便(还挺快) $isalpha(a)$:$a$是否是字母 $tolower(a)$:$a$把a转成小写 1 #include<iostream> 2 #i
阅读全文
摘要:P2907 [USACO08OPEN]农场周围的道路Roads Around The Farm 基础dfs,按题意递归即可。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define re register 5 usi
阅读全文
摘要:P2920 [USACO08NOV]时间管理Time Management 显然的贪心。 按deadline从大到小排序,然后依次填充时间。 最后时间为负的话那么就是无解 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #i
阅读全文
摘要:P2919 [USACO08NOV]守护农场Guarding the Farm 相似题:P3456 [POI2007]GRZ-Ridges and Valleys 按海拔是否相同分块 每次bfs海拔相同的块,根据与周围的块的大小关系判断是否是山丘。 1 #include<iostream> 2 #i
阅读全文
摘要:P2918 [USACO08NOV]买干草Buying Hay 显然的完全背包 设$f[i]$为买$i$磅干草的最小代价 搞搞完全背包即可 注意到最后可能买的干草超出范围,但是价格可能更低。 于是我们的背包处理到$m+maxP$即可(本题$P_{i}<=5000$) end. 1 #include<
阅读全文
摘要:P2904 [USACO08MAR]跨河River Crossing 显然的dp 设$f[i]$表示运走$i$头奶牛,木筏停在未过河奶牛一侧所用的最小代价 $s[i]$表示一次运$i$头奶牛到对面的代价 我们枚举上次运走了$j$头,显然$f[i]=min(f[i],f[i-j]+s[j]+s[0])
阅读全文
摘要:P2903 [USACO08MAR]麻烦的干草打包机The Loathesome Hay Baler 细节题。$O(n^{2})$的$bfs$可过。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cstr
阅读全文
摘要:P1353 [USACO08JAN]跑步Running 显然的dp 设$f[i][j]$表示进行到第$i$分钟时,$j$疲劳度下的最远距离,$d[i]$为第$i$分钟下能跑的距离 分类讨论 1.运动:显然$f[i][j]=max(f[i][j],f[i-1][j-1]+d[i])$ 2.休息:我们枚
阅读全文
摘要:P2419 [USACO08JAN]牛大赛Cow Contest Floyd不仅可以算最短路,还可以处理点之间的关系。 跑一遍Floyd,处理出每个点之间是否有直接或间接的关系。 如果某个点和其他$n-1$个点都有关系,那么它的排名就是可确定的。 1 #include<iostream> 2 #in
阅读全文
摘要:P2895 [USACO08FEB]流星雨Meteor Shower 给每个点标记一下能够走的最迟时间,蓝后bfs处理一下 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #inc
阅读全文
摘要:P2665 [USACO08FEB]连线游戏Game of Lines 第一次写快读没判负数....(捂脸) 暴力$O(n^2)$求斜率,排序判重。 注意垂直方向的直线要特判。 end. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstri
阅读全文
摘要:P2896 [USACO08FEB]一起吃饭Eating Together 显然的最长不升/降子序列,求出最长值,则答案为$n-$最长值(改掉剩下的)。 复杂度$O(nlogn)$ (然鹅有神仙写了$O(n)$模拟)
阅读全文
摘要:P2925 [USACO08DEC]干草出售Hay For Sale 简化版01背包(连价值都免了) 直接逆推解决 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cctype> 5 #define re
阅读全文
摘要:P2905 [USACO08OPEN]农场危机Crisis on the Farm 发现总步数$k<=30$,考虑用$k$瞎搞 设$f[u][i][j]$表示已经吹$u$次哨,全体奶牛向右走$i$步,向上走$j$步的最优解 预处理$g[i][j]$表示全体奶牛向右走$i$步,向上走$j$步可以救几只
阅读全文
摘要:P2906 [USACO08OPEN]牛的街区Cow Neighborhoods 考虑维护曼哈顿距离:$\left | x_{1}-x_{2} \right |+\left | y_{1}-y_{2} \right |$ 看起来很难维护的样子,我们尝试转化 设两个点$(x_{1},y_{1}),(x
阅读全文
摘要:P2913 [USACO08OCT]车轮旋转Wheel Rotation 稳妥起见(防止数据出锅),用了bfs 每次的转移可以直接用异或和解决。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue>
阅读全文
摘要:P2912 [USACO08OCT]牧场散步Pasture Walking 求树上两点间路径 >lca 使用倍增处理lca(树剖多长鸭) 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cctype> 5
阅读全文
摘要:P1550 [USACO08OCT]打井Watering Hole P1550 [USACO08OCT]打井Watering Hole 对于自己建水库的情况,新建一个虚拟结点,和其他点的边权即为自建水库的费用 这样问题就转化为一个裸最小生成树问题了。 这里用堆优化prim解决。 1 #include
阅读全文
摘要:Description 勤奋的Farmer John想要建造一个四面的栅栏来关住牛们。他有一块长为n(4<=n<=2500)的木板,他想把这块本板 切成4块。这四块小木板可以是任何一个长度只要Farmer John能够把它们围成一个合理的四边形。他能够切出多少 种不同的合理方案。注意: *只要大木板
阅读全文
摘要:P2926 [USACO08DEC]拍头Patting Heads 把求约数转化为求倍数。 累计每个数出现的个数,然后枚举倍数累加答案。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cctype> 5
阅读全文
摘要:[HNOI2012]永无乡 每个联通块的点集用动态开点线段树维护 并查集维护图 合并时把线段树也合并就好了。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cctype> 5 #define re reg
阅读全文
摘要:P3521 [POI2011]ROT-Tree Rotations loj2163 [POI2011]ROT-Tree Rotations(数据加强) (loj的数据套了个fread优化才过...) 显然地,对于一棵线段树(树根设为$rt$),是否翻转它的子树的子树,对于跨$mid$的逆序对数量没有
阅读全文
摘要:UVA11090 Going in Cycle!! 二分答案,用spfa判负环。 注意格式;图不一定连通。 复杂度$O(nmlog(maxw-minw))$ 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<
阅读全文
摘要:P1174 打砖块 普通分组背包:50pts 题解说的啥????(大雾) 看了半天 $s[0/1][i][j]$表示第$i$列用$j$发子弹,最后一发是1/否0打在该列上的价值 $f[0/1][i][j]$表示截止到第$i$列共用$j$发子弹,最后一发是1/否0打在该列上的最大价值 每次转移分成先打
阅读全文
摘要:P1757 通天之分组背包 hdu1712 ACboy needs your help hdu1712题意:A[i][j]表示用j天学习第i个课程能够得到A[i][j]的收益,求m天内获得的收益最大值,一天只能上一节课(转)。 分组背包套路: 保证一组只选<=1个 1 #include<iostre
阅读全文
摘要:P1122 最大子树和 大水题 随便找一个点做根,蓝后累计子树和。 子树和<0的话不取就行了 顺便找个最大值输出 end.
阅读全文
摘要:P1131 [ZJOI2007]时态同步 设$f[i]$为与$i$与最远的点的距离 在dfs时每次更新的时候顺便统计一下长度,不同的话就改成最长的那条并更新答案
阅读全文
摘要:P2831 愤怒的小鸟 我们先预处理出每个猪两两之间(设为$u,v$)和原点三点确定的抛物线(当两只猪横坐标相等时显然无解) 处理出$u,v$确定的抛物线一共可以经过多少点,记为$lines[u][v]$ 设$f[i]$表示已经被消灭的猪的集合为二进制表示为$i$时,需要的最小抛物线数 显然$f[0
阅读全文
摘要:P2397 yyy loves Maths VI (mode) 神奇的摩尔投票法(大雾) 保证众数个数大于一半。 两两相消,剩下的那个必定是众数。 我们只要开2个变量,一个存个数,一个存值即可。 (luogu的数据卡快读???) luogu P2397 code: 1 #include<cstdio
阅读全文
摘要:P1879 [USACO06NOV]玉米田Corn Fields 状压dp水题 看到$n,m<=12$,肯定是状压鸭 先筛去所有不合法状态,蓝后用可行的状态跑一次dp就ok了 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4
阅读全文
摘要:P1026 统计单词个数 设$f[i][j]$表示到主串第$i$位,已分成$j$段的最多单词数,$val[l][r]$表示区间$[l,r]$包含的单词个数 可得:$f[i][j]=max(f[i][j],f[u][j-1]+val[u+1][i])$ 套一个三重循环即可 $val[l][r]$可以暴
阅读全文
摘要:P2679 子串 设$f[i][j][k][p]$表示匹配到A串第$i$个位置,B串第$j$个位置,已经匹配了$k$段,$p=0 or 1$表示A串的该位有没取 $p==1$时 $f[i][j][k][1]=f[i-1][j-1][k][1]+f[i-1][j-1][k-1][0]+f[i-1][j
阅读全文
摘要:P1941 飞扬的小鸟 细节题 上升是完全背包 下降是01背包 (数组访问越界本机怎么能过???(大雾)) 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cctype> 5 #define re regi
阅读全文
摘要:P1099 树网的核 (bzoj数据加强) 前置知识:树的直径 (并不想贴我的智障写法虽然快1倍但内存占用极大甚至在bzoj上MLE) 正常写法之一:用常规方法找到树的直径,在直径上用尺取法找一遍,再dfs,再全图找一遍。 分类讨论: 1.偏心距可能是所取路径上(非端点)的某一点与直径外一点的距离
阅读全文
摘要:poj1985 Cow Marathon 树的直径裸题 树的直径的一般求法: 任意一点为起点,dfs/bfs找出与它最远的点$u$ 以$u$为起点,dfs/bfs找出与它最远的点$v$ 则$d(u,v)$是一条直径 下面给出poj1985的code(poj2631自行修改)
阅读全文
摘要:P1351 联合权值 想刷道水题还交了3次.....丢人 (1.没想到有两个点都是儿子的状况 2.到处乱%(大雾)) 先dfs一遍处理出父亲$fa[x]$ 蓝后再一遍dfs,搞搞就出来了。
阅读全文
摘要:P1052 过河 dp不难,重点是要想到离散化。 石子个数$<=100$意味着有大量空间空置,我们可以缩掉这些空间。 实现的话自己yy下就差不多了。
阅读全文
摘要:P1006 传纸条 普通的四维dp (当然有一些很ok的方法然鹅我比较菜) $f[i][j][k][u]$表示第一张纸条在$(i,j)$,第二张在$(k,u)$ 复杂度$O(n^{4})$
阅读全文
摘要:P4099 [HEOI2013]SAO 我们设$f[u][k]$表示以拓扑序编号为$k$的点$u$,以$u$为根的子树中的元素所组成的序列方案数 蓝后我们在找一个以$v$为根的子树。 我们的任务就是在合并这两棵树时维护$f[u][k]$ 合并时,$v$的元素可能全在点$u$的前/后面,也可能都有。
阅读全文
摘要:poj3318 Matrix Multiplication 题意:给定$n*n(n<=500)$的矩阵$A,B,C$,如果$A*B==C$,输出“YES”,否则为“NO”;多组数据,$O(n^{3})$必T 我们可以随机生成一个神奇的列向量$v$,你可以把它看做n*1或1*n的矩阵,里面的元素随机为
阅读全文
摘要:poj2454 Jersey Politics 震惊!手写swap竟比stl快30ms! poj不能用time(0) (大雾) 题意:给定一长度为$3k(1<=k<=60)$的序列,把它划分成等长的三段(元素可交换),要求至少两段的和大于$500*k$,求满足上述条件的一个划分(保证有解)。 先按权
阅读全文
摘要:UVA10529 Dumb Bones go to solution 设$f[i]$表示叠$i$个的骨牌的期望 $O(n)$做法
阅读全文
摘要:P1291 [SHOI2002]百事世界杯之旅 设$f(n,k)$表示共n个名字,剩下k个名字未收集到,还需购买饮料的平均次数 则有: $f(n,k)=\frac{n-k}{n}*f(n,k) + \frac{k}{n}*f(n,k+1) +1$ 移项整理,可得: $f(n,k)=f(n,k+1)+
阅读全文
摘要:poj3071 Football 题意:有2^n支球队比赛,每次和相邻的球队踢,两两淘汰,给定任意两支球队相互踢赢的概率,求最后哪只球队最可能夺冠。 我们可以十分显然(大雾)地列出转移方程(设$f[ i ][ j ]$为第 $j$ 支球队踢赢第 $i$ 场比赛的概率,$k$为枚举的对手): $f[
阅读全文
摘要:hdu3037 Saving Beans 题意:n个不同的盒子,每个盒子里放一些球(可不放),总球数<=m,求方案数。 $1<=n,m<=1e9,1<p<1e5,p∈prime$ 卢卡斯(Lucas)定理(计算组合数 防爆精度) $lucas(n,m,p)=lucas(n/p,m/p,p)*C(n\
阅读全文
摘要:P3327 [SDOI2015]约数个数和 神犇题解(转) 无话可补
阅读全文
摘要:P2257 YY的GCD luogu题解第一篇非常棒,当然你也可以point here(转) 正题因为题解写的太优秀所以没得补充 这里用了一个卡常技巧:循环展开 就是以代码长度为代价减少循环次数 实测快了15ms(一个点1.5ms....) (用了快读更慢???(大雾)但是register真有用)
阅读全文
摘要:poj3252 Round Numbers 组合数学(数位dp) (没想到书上的标程还要看脸TAT) (我以后再也不在poj上用scanf/printf了TAT) (poj的题都默认多组数据的吗TAT) tips:信息学奥赛数学一本通的标程和部分Baidu上的代码访问数组越界,脸黑的会GG(比如我Q
阅读全文
摘要:第一章 数论 1.素数:线性欧拉筛 2.超素表达式: 3.Antiprime数:逆用唯一分解定理,暴搜质因数个数 4.小三学算术:答案<=3,从质因数奇偶性入手,压位暴力分解 5.C Looooops:exgcd 6.The Balance:分类讨论exgcd 7.Strange Way to Ex
阅读全文
摘要:hdu1573 X问题 excrt 跑一遍excrt,蓝后算算个数 用%lld就出锅(大雾)
阅读全文
摘要:P4777 【模板】扩展中国剩余定理(EXCRT) excrt模板 我们知道,crt无法处理模数不两两互质的情况 然鹅excrt可以 设当前解到第 i 个方程 设$M=\prod_{j=1}^{i-1}b[j]$ ,$ res$是前$ i-1 $个方程的最小解 则$ res+x*M$ 是前 $i-1
阅读全文
摘要:poj2142 The Balance exgcd 应分为2种情况分类讨论 显然我们可以列出方程 ax-by=±d 当方程右侧为-d时,可得 by-ax=d 于是我们就得到了2个方程: ax-by=d by-ax=d -> bx-ay=d 分别跑一遍exgcd,取abs(a)+abs(b)更小的那个
阅读全文
摘要:UVA12995 Farey Sequence 欧拉函数 同仪仗队那题几乎相同,本质都是求欧拉函数的和
阅读全文
摘要:P2158 [SDOI2008]仪仗队 欧拉函数 计算下三角的点数再*2+1 观察斜率,自行体会
阅读全文
摘要:UVA756 Biorhythms crt crt裸题 因为模数已知所以有些值能直接求
阅读全文
摘要:[TJOI2009]猜数字 中国剩余定理 求解i=1 to n : x≡a[i] (mod b[i])的同余方程组 设 t= ∏i=1 to n b[i] 我们先求出 i=1 to n : x≡1 (mod b[i]) ; j=1 to n,j≠i : x≡0 (mod b[j])的解 我们可以 把
阅读全文
摘要:青蛙的约会 exgcd 根据题意列出方程: 设所用时间为T,相差R圈时相遇 移项转换,得 设a=n-m,b=l,c=x-y,x_=T,y_=R,则 经典的不定方程式,果断用exgcd解 当且仅当 gcd(a,b) | c 时,方程有解 我们用exgcd求的方程为 a*x_+b*y_=gcd(a,b)
阅读全文