poj 300题
文章平均质量分 84
HARD_UNDERSTAND
Just try
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
poj 几道简单的dp题
题目:poj 1836题意: 求使数列程先递增后递减的形式需要去掉的数字个数。当然也可以直接递减或者只递减不递增。 分析: 用最长递增子序列的方法求,然后枚举两个起点的位置即可。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int INF=1e8;const int N=10原创 2016-07-19 10:19:34 · 1866 阅读 · 0 评论 -
poj 2115 C Looooops 扩展欧几里得算法
题意: 对于C的for(i=A ; i!=B ;i +=C)循环语句,问循环几次才会结束,其中所有的数(mod2^k)。 若在有限次内结束,则输出循环次数。否则输出死循环。 分析: 模线性方程的题目:题目可转化为Cx=(B-A)mod(2^k)求x的最小解? 然后就是用扩展欧几里得算法求解了。 详细的解题报告参考:http://blog.youkuaiyun.com/non_cease/articl原创 2016-08-02 19:44:15 · 281 阅读 · 0 评论 -
poj 2635 The Embarrassed Cryptographer ??/Java??(???)
??: ?K( 4 <= K <= 10^100 )???????,L( 2 <= L <= 10^6)?????????????,??????????L,??GOOD,???????????? ??: ???,??L?????,?????K??????K??,????????????Java??????import java.io.BufferedInputStream;import ja原创 2016-08-02 09:59:00 · 273 阅读 · 0 评论 -
poj 3292 Semi-prime H-numbers 筛素数(简单题)
题意: H-numbers是4n+1形式的数 H-prime是由H-number构成的素数(即因子只有1和一个H-number) H-semi是由两个H-prime的积构成 要求找出n(n<1e6)以内有多少个H-semi数? 分析: 简单题,模仿一下Euler筛法,得到H-prime表,然后O(n)去求H-semi数即可。#include<iostream>#include<cstd原创 2016-08-02 09:49:01 · 373 阅读 · 0 评论 -
poj 1019 Number Sequence 数学
题意: 给你这一串数字 11212312341234512345612345671234567812345678912345678910123456789101112345678910…… 要我们求出第n个数是多少(从左到右看),例如第2个是1,第三个是2,第八个是2; 分析: log10(x)+1求的是一个数的位数。然后可以这样求出第i个数的位数,a[i]统计到第i个数一共有几个数,即从原创 2016-08-01 18:46:38 · 295 阅读 · 0 评论 -
poj 1850 数位dp/排列组合
题意: 字符串可以由26个小写字母组成,按字典序排列。a,b,……..abcde..xyz编号为1,2,…….。给出一个字符串,求他的编号,如果不符合要求,输出0. 分析; 因为是组合数学分类的题目,读完题就一直考虑怎么用组合?然而我只能想到用搜索去做QAQ。数位dp(其实这题记忆化并没有什么卵用),搜索一下即可。组合的话,实在无能为力啊!之后看了别人用排列组合做的, 图片来自:http:/原创 2016-08-01 15:46:38 · 532 阅读 · 0 评论 -
poj 3252 Round Numbers 数位dp
题意: Round Numbers:把一个数分解成二进制,0的个数>=1的个数的数 分析: 显然数位dp可解,这题用排列组合也能做。不过还是数位dp简单点。 排列组合可以参考Kuangbin巨巨的题解:http://www.cnblogs.com/kuangbin/archive/2012/08/22/2651730.html#include<iostream>#include<cstdi原创 2016-08-01 10:16:17 · 472 阅读 · 0 评论 -
poj 几道简单的二分题
poj 3273 Monthly Expense题意: 有n个数,划分成m块,和最大的一块最小是多少? 分析: 最大值最小问题,二分答案。#include<cstdio>using namespace std;typedef long long ll;const int N=1e5+9;int a[N],n,m;bool ok(int x){ int k=m,t=0; //原创 2016-08-03 17:41:58 · 432 阅读 · 0 评论 -
poj 1459 最大流 Dinic模板题
题意:给几个发电站,给几个消耗站,再给几个转发点。发电站只发电,消耗站只消耗电,转发点只是转发电,再给各个传送线的传电能力。问你消耗站能获得的最多电是多少。思路:这题建图是比较显然的,超源点和发电战之间连边,容量是发电量,消耗站和超汇点之间连边,容量是消耗量,然后输电线本来就是边,这样就建好图了,剩下的就是套最大流的模板了。此题n#include#include原创 2016-07-09 18:15:19 · 347 阅读 · 0 评论 -
poj 1845 求A^B的约数之和
题意: 求A^B的所有约数之和 Mod 9901。思路: 大数模运算。两个最基本公式:(A*B)%C = ((A%C)(B%C))%C 和 (A+B)%C = ((A%C)+(B%C))%C 。用__int64的原因为 n = cnt[i] B (cnt[i]为A第i个素因子的个数)可能会超int。1: 对A进行素因子分解得 A = p1^a1 * p2^a2 * p3^a3 *...* pn原创 2016-08-02 21:33:06 · 760 阅读 · 0 评论 -
poj 2406 连续重复子串(后缀数组DC3/kmp)
题目:http://poj.org/problem?id=2406 题意: 给定一个字符串 L,已知这个字符串是由某个字符串 S 重复 R 次而得到的, 求 R 的最大值。分析: 做法比较简单,穷举字符串 S 的长度 k,然后判断是否满足。判断的时候,先看字符串 L 的长度能否被 k 整除,再看 suffix(1)和 suffix(k+1)的最长公共前缀是否等于 n-k。在询问最长公共前缀的原创 2016-09-01 15:18:06 · 458 阅读 · 0 评论 -
poj 3693 重复次数最多的连续重复子串(后缀数组+RMQ)
题目:http://poj.org/problem?id=3693 题意: 给定一个字符串,求重复次数最多的连续重复子串分析: 在后缀数组神文中也这题的题解。 比较容易理解的部分就是枚举长度为L,然后看长度为L的字符串最多连续出现几次。 既然长度为L的串重复出现,那么str[0],str[l],str[2*l]……中肯定有两个连续的出现在字符串中。那么就枚举连续的两个,然后从原创 2016-09-01 16:40:28 · 456 阅读 · 0 评论 -
poj 几道简单的搜索题(三)
题目:poj 2531题意:给出n(n分析:n=20,暴力枚举的时间复杂度才O(2^20*C),C是求和的时间常数。2000ms的时间足够了。暴力枚举的话可以子集枚举和递归(时间接近1000ms)。这题递归的话可以剪枝,可以优化到32ms,方法是参考:http://blog.youkuaiyun.com/martin31hao/article/details/8098302原创 2016-07-15 00:12:38 · 754 阅读 · 0 评论 -
poj 3020 二分图最大匹配
题意:给定一个地图,*代表城市,o代表空地,用天线来覆盖相邻的两个城市,问最少需要多少天线?(所谓相邻是指上下左右4个方向相邻)n分析:这题读完后,看起来像骨牌覆盖,想了想状压dp,觉得可以做啊。但是自己没做QAQ。然后就想怎么用二分图,可是没做出来QAQ,还是搜题解吧。。。思路:把单个的城市当做一块,进行编号从而构建图的连通性,两个城市相邻就连一条边,至于原创 2016-07-09 09:08:05 · 320 阅读 · 0 评论 -
poj3687 反向建图拓扑排序
题目:点击打开链接这题好坑啊,WA了一下午,到最后发现读错题了QAQ,如果理解了题意,那就是简单的拓扑排序了。题意:n个重量为1~n的球,给定一些编号间的重量比较关系,现在给每个球编号,在符合条件的前提下使得编号小的球重量小。(先保证1号球最轻,其次2号……)分析:拓扑排序,注意根据题的要求,要先保证1号球最轻,如果我们由轻的向重的连边,然后我们依次有小到大每次把重量分给一个入原创 2016-07-08 18:43:34 · 380 阅读 · 0 评论 -
poj 2253 二分/最短路
题意:A青蛙要去B青蛙所在的石头,湖面上共有n个石头,A在0,B在1,A到B可以跳到其它石头上,要求到B的路程中,跳的最远的一次?使这个最大距离最小。分析:虽然在最短路的题目里看到这个题,不过读完题我就想到了二分答案+并查集判联通,二分最大距离,然后把不大于这个距离的边的两点放到一个集合里,最后判断一下A和B是否在同一个集合即可。很快敲完了,交上去WA了,怎么可能WA呢?百思不得其解,原创 2016-07-06 23:12:01 · 305 阅读 · 0 评论 -
poj 1275 差分约束系统
题目:http://poj.org/problem?id=1275 题意: Tehran的一家每天24小时营业的超市,需要一批出纳员来满足它的需要。超市经理雇佣你来帮他解决他的问题——超市在每天的不同时段需要不同数目的出纳员(例如:午夜时只需一小批,而下午则需要很多)来为顾客提供优质服务。他希望雇佣最少数目的出纳员。 经理已经提供你一天的每一小时需要出纳员的最少数量——R(0), R(1)原创 2016-09-08 19:48:22 · 298 阅读 · 0 评论 -
poj 3007 哈希
题目:http://poj.org/problem?id=3007 题意: 给定一个字符串,从任意位置把它切为两半,得到两条子串 定义 子串1为s1,子串2为s2,子串1的反串为s3,子串2的反串为s4 现在从s1 s2 s3 s4中任意取出两个串组合,问有多少种不同的组合方法分析: 发现字符串长度最多为72,刚开始用的string+substr+reverse构造新子串,直原创 2016-09-07 17:55:22 · 269 阅读 · 0 评论 -
poj 3294 不小于 k 个字符串中的最长子串(后缀数组+二分)
题目:http://poj.org/problem?id=3294 题意: 给定 n 个字符串,求出现在大于一半个字符串中的最长子串。分析: 将 n 个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开,求后缀数组。然后二分答案,将后缀分成若干组,判断每组的后缀是否出现在不小于 k 个的原串中。这个做法的时间复杂度为 O(nlogn)。#include<cstdio>#inc原创 2016-09-02 10:35:06 · 369 阅读 · 0 评论 -
poj 3415 :长度不小于 k 的公共子串的个数(后缀数组+单调栈)
题目:http://poj.org/problem?id=3415 题意: 给定两个字符串 A 和 B,求长度不小于 k 的公共子串的个数(可以相同)。 样例 1: A=“xx”,B=“xx”,k=1,长度不小于 k 的公共子串的个数是 5。 样例 2: A=“aababaa”,B=“abaabaa”,k=2,长度不小于 k 的公共子串的个数是22。分析: 基本思路是计算 A 的所有后缀原创 2016-09-02 10:29:26 · 607 阅读 · 0 评论 -
poj 3436 最大流-拆点
题意:有一些机器用来构成一个组装电脑的生产线,每台机器对输入机器的电脑有要求,符合要求的电脑被送入机器后会输出一台规定配件情况的电脑。而且分别告知每台机器在单位时间内处理电脑的台数。将这些机器连成一个生产线,使得单位时间内出产的完整的电脑数量最多,完整的电脑就是具有所有配件的电脑。输出单位时间内的最大出产台数。分析:这个是一个网络流,对流过每个点的流量有限制,这样就需要拆点,把每个结点原创 2016-07-09 17:20:35 · 517 阅读 · 0 评论 -
poj 1094 简单拓扑排序
题意:给定一组字母的大小关系判断他们是否能组成唯一的拓扑序列。是典型的拓扑排序,但输出格式上确有三种形式: 1.该字母序列有序,并依次输出; 2.该序列不能判断是否有序; 3.该序列字母次序之间有矛盾,即有环存在。分析:每次加入一条边,进行一次拓扑排序,判断是否可以唯一确定序列(唯一的话就是每次选点只有一个选择),是否矛盾(即有环,判断入队的数量即可,无环的话每原创 2016-07-08 19:01:06 · 328 阅读 · 0 评论 -
poj3026 bfs+prim
题意:有一个n*m的图,有S,A,#和空格,S可以到达A并且使A变成S,然后这个S又可以去侵染别的A,问A都变成S需要多少步?分析:题目相当于求出S和A构成的最小生成树。首先把S和A找出来,枚举每个S和A,然后bfs求一下单点到其他点的最短距离,然后套prim模板就行。这题有个特别坑的地方就是数字后面可等有多个空格,好坑!!!#include#include#i原创 2016-07-07 15:37:48 · 283 阅读 · 0 评论 -
poj 2442 优先队列/堆+dp
题意:给出m行,每行n个数,每次从一行中选择一个数,这m个数求和。所有的方案数是n^m,问这些方案中和最小的n个?分析:这题有点桶排序和滑动窗口的意思,还是挺不错的一道题。因为要最小的n个和,所以可以用优先队列去维护最小的n个和,这n个和是第i行中的元素和前i行的和相加选择的最优的(这又有点动态规划的思想QAQ)。也就是说,前i行得到了n个最小和,那么这n个最小和可以从第i行里各选择n原创 2016-07-12 10:54:42 · 432 阅读 · 0 评论 -
poj 1442 优先队列
题意:每次插入一个数字,在第u[i]次插入完后可以查询第k大的数字,然后k递增,初始化k=1。总共数字n分析:很容易想到用优先队列去维护已插入的序列有序,然后难处理的就是怎么找到第K大的数字?因为k是递增的,所以每次查询完以后,前k小就不会再出现了,但是可能以后会插入比前k小中某个数还小的,这时候就要想办法把当前插入的数和第k小交换一下。所以可以再利用一个大根堆的优先队列,去保存已原创 2016-07-12 16:48:34 · 269 阅读 · 0 评论 -
poj 2503 简单哈希
题意:输入一个字典,然后查询字典,翻译单词。分析:这题以前做过,是Trie树的入门题,当时也用map水过,现在用hash再水一遍。。。比较好的输入处理: sscanf(str,"%s %s",str1,str2);#include#include#include#includeusing namespace std;const int prime=原创 2016-07-11 21:35:32 · 292 阅读 · 0 评论 -
poj 2002 哈希+几何
题意:给出一些平面上点的坐标,用其中的点做顶点,求其中能组成正方形的个数。分析:这题的做法很容易想到,枚举两个点,然后求出正方形另外两个点的坐标,用哈希判断一下是否存在即可(当然也可以排完序后二分)。思路是简单的,关键是怎么通过正方形的两个点求出另外两点的坐标?可以想到可以枚举正方形的一边或者对角线,其实都可以通过公式得到两点,那么就看怎么求另外两点容易了。我用的是枚举正方原创 2016-07-11 18:19:38 · 432 阅读 · 0 评论 -
poj 1840 简单哈希
题意:给出ai(i=1~5),求a1 * x1^3+ a2 * x2^3+ a3 * x3^3+ a4 * x4^3+ a5 * x5^3=0在-50到50之间的x的解的个数分析:把前三个的和放到hash里,然后枚举后两个的和,查一下hash即可。这题也可以用map去做。#include#include#include#include#include原创 2016-07-11 12:22:37 · 298 阅读 · 0 评论 -
poj3274 hash
题意:n头牛站一排,每个牛有k个属性,每个属性有两种取值:1或0。(1表示拥有该属性,0表示没有)要求找一个牛的最长连续队伍(子段),这个队伍中拥有每个属性的牛的个数相同。分析:这题快要我WA哭了,总是WA,还不是超时,然而我又找不出错误,对着下面的博客对拍代码,终于发现了QAQ。(下面注释)思路:sum[i][j]前i头牛的feature的总数。sum[a][j]-sum原创 2016-07-10 23:42:33 · 309 阅读 · 0 评论 -
poj 1328 雷达覆盖 贪心
题目:Figure A Sample Input of Radar Installations题意:在x轴上某些位置装雷达,问怎么才能使海岛p被信号覆盖,有n个海岛,雷达覆盖范围是d。分析:考虑一个海岛p,对于覆盖它的雷达放的最优的位置是它在圆圈的边缘上,因为这样这个雷达就可以覆盖更多其他的海岛。那么先按x排序,对于当前的一个圈,看看是否下一个海岛是否可以在圈内原创 2016-04-21 12:48:22 · 848 阅读 · 0 评论 -
poj 2513 无向图欧拉路+Trie
题意:给出一些木棍,每个木棍两端有两种颜色,不同的木坤如果首尾颜色相同,那么就可以连接起来,问是否所有的木棍看可以连成一条线?分析:这题跟Uva10129单词那题几乎是一样的,只不过那题是有向图,因为单词的首尾是固定的嘛!而这题是无向图,无向图的话先判断一下是否是连通图,然后再判断一下每个点的度,如果没有奇度点或者奇度点只有两个那么是可以构成无向欧拉图的。把不同颜色当做不同的点,用Tr原创 2016-07-12 19:27:47 · 353 阅读 · 0 评论 -
poj 2418 简单Trie树
题意:给出一些字符串,统计出现的次数,并按字典序输出。分析:裸的Trie树,因为输出按字符串的字典序输出,所以插入的时候,把第一次出现的字符串暂时保存起来。以后排完序在查询输出即可。不过这题我发现了一个很神奇的地方,因为我刚开始保存字母节点的时候开的数组是26,如果出现大写字母或空格可定会报错!但是我下面开了一个a数组,仍然开26大小的节点数组,居然没报错!!而且AC了QAQ。并不原创 2016-07-12 20:32:13 · 457 阅读 · 0 评论 -
poj 3349 简单hash
题意:每个雪花都有六个分支,用六个整数代表,这六个整数是从任意一个分支开始,朝顺时针或逆时针方向遍历得到的。输入多个雪花,判断是否有形状一致的雪花存在。分析:简单的哈希,用取余法保存和相同的雪花,然后在判断雪花的各边即可。简单起见,用vector保存。链表麻烦点。#include#include#include#include#include#include#i原创 2016-07-10 23:48:56 · 342 阅读 · 0 评论 -
poj 3267 dp
题意: 问母串中至少去掉多少个字母才能是刚好由单词表中的一些单词连接而成的。 分析: dp,f[i]表示母串从第i位起始的后缀所对应的最少去掉字母数。 f[i]有两种选择f[i + 1] + 1或者f[i + num] + num - strlen(word[j])。其中num是从第i位开始匹配word[j]所需要的母串从i位起始的后缀的前缀的长度。#include<iostream>#i原创 2016-07-17 18:16:08 · 339 阅读 · 0 评论 -
poj 1062 dijkstra求最短路变形
题目大意是说有N个物品,每个物品都有自己的价格,但同时某些物品也可以由其他的(可能不止一个)替代品,这些替代品的价格比较“优惠”,问怎么样选取可以让你的花费最少来购买到物品1由于有N个物品,我们就可以把它们看作是N个点,从其他点到他的优惠关系视做边,又因为最后总是要找到物品1,然后由于题目是说,这条路劲上不能有两个的等级差超过M,所以我们可以枚举最小等级,将每个点视作最小等级,这样的话就不会掉原创 2016-07-06 19:22:44 · 337 阅读 · 0 评论 -
poj 1276 多重背包模板题
题意:给出总的钱币额V,给出n种币值和数目,问最接近V的的组合?分析:多重背包的模板题,多重背包问题是: 有N种物品和一个容量为V的背包。第i种物品最多有num[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 状态转移为:F[i,v] = max{F[i−1,v−k∗Ci] + k∗Wi |0 ≤ k ≤ Mi}对于原创 2016-07-17 16:44:28 · 1512 阅读 · 0 评论 -
poj 1860 最短路—Bellman-Ford算法
有多种汇币,汇币之间可以交换,这需要手续费,当你用100A币 交换B币时,A到B的汇率是29.75,手续费是0.39,那么你可以得到 (100 - 0.39) * 29.75 = 2963.3975 B币。问s币的金额经过交换最终 得到的s币金额数能否增加 货币的交换是可以重复多次的,所以我们需要找出是否存在 正权回路,且最后得到的s金额是增加的 怎么找正权回路呢?(正权回路:在这一回路原创 2016-07-06 15:12:29 · 491 阅读 · 0 评论 -
poj 3083 dfs+bfs最短路
题目:点击打开链接 题意:给出图(最大40*40),#是障碍物不能走,问下面三种从S到达E的路径长度?1》每次优先选择左手边。2》每次优先选择右手边。3》最短路。分析:最短路简单,裸的bfs。优先选择左边的路径,因为要从左手便开始选择,所以要知道当前位置的朝向,如果现在面朝北,那么现在优先选择方向为西北东南,即,从左手边顺时针旋转。西北东南依次标记为0123,假如当前方向dir原创 2016-07-06 09:22:11 · 312 阅读 · 0 评论 -
poj 2049 Finding Nemo(bfs+优先队列)
题意:Marlin去找困在迷宫中的Nemo,墙壁不可以穿过,但是墙上的门可以穿过,问Marlin最少穿过几扇门可以找到Nemo,无法到达输出-1.分析:这题比较麻烦的地方是怎么判断格子的一条边是墙壁还是门还是什么都没有。为了区别是哪条边,我用一个80000的g数组去判断,给每条边一个ID值去区分。与x轴平行的边是x+y*200,与y轴平行的边是40000+200*x+y,其中x和y是每原创 2016-07-05 22:33:15 · 321 阅读 · 0 评论 -
poj 几道简单的搜索题(二)
题目:poj 3278题意:在[0,100000]上,给定两个整数n和k通过 n+1或n-1 或n*2 这3种操作,使得n==k,输出最少的操作次数分析:bfs入门题,每个状态记录一下位置和步数,然后bfs就好。题目:poj 1426题意:给一个正整数n,找出n的某个倍数m,m可以用01表示。n分析:看完m的数据范围吓傻了QAQ,可是n才200,然后原创 2016-07-13 23:22:53 · 680 阅读 · 0 评论
分享