POJ
给我一瓶AC钙
是一颗萌菜没错了
展开
-
(POJ) 3006 Dirichlet's Theorem on Arithmetic Progressions
传送门先用一下欧拉素数筛,然后直接暴力枚举就行了。#include<iostream>#include<algorithm>#include<cstdio>using namespace std;#define MAX 1000000+7int prime[MAX];bool is_prime[MAX+1];int solve(int n...原创 2018-12-10 14:23:17 · 152 阅读 · 1 评论 -
(POJ) 3580 SuperMemo
传送门一道很全的splay模板题,自己搞了半天都不对,只能考别人的代码感受一下AC的味道,真香。#include<cstdio>#include<iostream>#include<algorithm>#include<string>#include<cstring>#include<queue>#inc...原创 2019-05-06 20:50:42 · 341 阅读 · 0 评论 -
(POJ) 1741 Tree
点分治解题思路:点分治模板题,看懂上面那篇博客就能切啦。#include<cstdio>#include<iostream>#include<algorithm>#include<string>#include<cstring>#include<queue>#include<stack>#i...原创 2019-04-29 19:29:09 · 176 阅读 · 0 评论 -
(POJ) 2566 Bound Found (尺取法)
题目大意:就是在给你的数列中取一段,使它和的绝对值最接近于t,并输出他的和的绝对值,区间l和r。解题思路:一开始说这是一道尺取题,我是不信的,因为没有发现单调性,那我怎么尺取呢,看了别人的题解,才恍然大悟,居然可以对前缀和sum排序,当然下标id是要记住的。然后这时候的sum就有单调性了,我们就可以在sum上进行尺取。l与r,a[r].sum-a[l].sum 就是 a[l].id+1与a[r...原创 2019-03-27 13:32:16 · 173 阅读 · 0 评论 -
(POJ) 1816 Wild Words (字典树+搜索)
传送门题目大意:给你n个模板字符串和m个待匹配字符串,模板字符串中有‘?’可以匹配任意一个字符,‘*’可以匹配0个1个或者多个字符串。问待匹配字符串可以和哪些模板字符串相匹配。解题思路:我们可以将‘*’和‘?’分别放在26和27两个位置,存储字符串的时候,将每个字符串的最后一个节点返回存储起来,find不在和原来一样,而是一个搜索,当搜索的位置==len,而且当且节点为字符串的尾节点(fl...原创 2019-01-29 14:18:07 · 281 阅读 · 0 评论 -
(POJ) 3279 Fliptile
传送门题目大意:有一个m*n的格子,格子一面是白色的,一面是黑色的。现在需要将所有的格子都翻成白色的,但是由于牛蹄子很大,所以他每次翻一个都会影响到上下左右四个,现在让你求出最少的翻转次数,输出翻转矩阵。解题思路:这个题虽然数据很小,但是如果我们简单的考虑每个格子的翻转情况,那会有2^mn种情况,直接pass,同一个格子当然是只能翻转一次,翻多次这是多余的。由于第一行的格子可以被下一行或者...原创 2018-12-29 17:33:33 · 226 阅读 · 0 评论 -
(POJ) 3276 Face The Right Way(模拟+尺取)
传送门题目大意:N头牛排成了一列,但有的朝前有的朝后,现在农夫买了一台机器,但是这台机器购买时必须要设置一个固定的K,每次操作都会使K头连续的牛转向,求出让所有的牛能朝向前的最少次数M和对应的K。解题思路:显然对同一个区间翻转一次就行了,翻转多次都是多余的。我们需要从最左边的牛开始翻转,因为它只属于一个区间,如果它朝后,那就不得不翻转。所以这个题我们可以去枚举长度k去解决。但是如果我们朴素...原创 2018-12-27 20:18:11 · 211 阅读 · 0 评论 -
(POJ) 1050 To the Max
传送门题目大意:给你一个矩阵,求里面的最大子矩阵(求和最大)。解题思路:第一想法当然是暴力枚举了,当然立即pass,复杂度过高,那再用前缀和处理一下的,这样复杂还是过高的。直接枚举是肯定不现实的。那我们直接枚举上界呢,然后将它下面的一层一层的加上去,每加一次都算一次最大子序列和。比如枚举第i层作为上界,求出此时的最大子序列和就是以i为上界,宽为1的最大子矩阵;在将i+1层的数依此加上第i层...原创 2018-12-10 15:36:08 · 203 阅读 · 0 评论 -
(POJ) 1159 Palindrome
传送门题目大意:给你一串字符串,问最少添加几个字符可以使该字符串变成回文串。解题思路:先求出该字符串的最长回文子串。然后总长度减去最长回文子串的长度就行了。已经形成回文的我们没有必要多此一举去添加字符了,而还单着的,我们在相对的位置在给他加一个就行了。但是直接区间dp求最长回文字串,开二维数组会MLE,而又不太好滚动(不知道可不可以滚动),不过可以直接开short 莽过。#inc...原创 2018-12-10 15:06:39 · 212 阅读 · 0 评论 -
(POJ) 2378 Tree Cutting
传送门题目大意:给定一棵无向树,节点数为n(n<=10000),问删除那些节点可以使得新图中的每一个连通分支的节点数都不超过n/2解题思路:这是一道入门的很裸的树型dp。dp[i]代表删除i节点后,分成的各个部分中 节点数量最大值。#include<iostream>#include<cstdio>#include<vector>usi...原创 2018-12-10 14:54:59 · 177 阅读 · 0 评论 -
(POJ) 2385 Apple Catching
传送门题目大意:有两棵苹果树,每秒都会有一颗苹果树掉苹果下来,人一开始在第一颗树下,只有w次移动的机会,求最多能拿几颗苹果。解题思路:dp[i][j]代表在第i课树下移动了j次获得的最多果子,由于一开始在第一颗树下,所以初始化要注意一下。#include<iostream>#include<cstring>#include<algorithm>...原创 2018-12-10 14:48:07 · 187 阅读 · 0 评论 -
(POJ) 2181 Jumping Cows
传送门这个题有两种解法。第一种贪心:总是只选择最低点和最高点。这样对答案的贡献肯定是最大的。#include<iostream>#include<algorithm>using namespace std;const int maxn=150000+5;int p;int t[maxn];int main() { while(cin>>...原创 2018-12-10 14:29:14 · 291 阅读 · 1 评论 -
(POJ) 2182 Lost Cows (贪心 or 树状数组)
传送门题意:n头牛,每头牛有[1,n]的独立的编号,现在这些牛杂乱的站在一排,给出在第i头牛之前,并且比第i头牛编号小的个数,i属于2到n。求解现在的每头牛的编号思路:我们从后往前考虑即可,其实最后一头牛的id都是可以直接确定的,贪心递推(不知道该不该称这个为贪心)即可,点然我们也许可以用树状数组,我是直接用的别人的了,也是从后往前考虑,然后二分当前牛的编号,通过前面比它小的牛和后面比它小...原创 2019-05-15 16:05:31 · 305 阅读 · 0 评论