![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM/ICPC_POJ
just_sort
Acdream.
展开
-
POJ 1637 混合图的欧拉回路 网络流
题目链接:http://poj.org/problem?id=1637题意:就是判断一个混合图是否有欧拉回路解法:其实,难点在于图中的无向边,需要对所有的无向边定向(指定一个方向,使之变为有向边),使整个图变成一个有向欧拉图(或有向半欧拉图)。若存在一个定向满足此条件,则原图是欧拉图(或半欧拉图)否则不是。关键就是如何定向?首先给原图中的每条无向边随便指定一个方向(称为初始定向),将原图改为有向图G原创 2017-04-17 15:14:07 · 483 阅读 · 0 评论 -
POJ 1182 食物链 带权并查集入门
Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是”1 X Y”,表示X和Y是同类。 第二种说法是”2 X Y”,表示X吃Y。 此人对N个动物,用上述两种说法原创 2017-03-02 16:53:12 · 616 阅读 · 0 评论 -
POJ 2068 Nim 博弈DP
题目链接:见这里 解题方法: 博弈树DP,dp[i][j]表示第i个人取,还有j块石头 。 当j为0的时候,没有石头,这时候是胜,为1。 后继中有必败态的为必胜态。这个DP几乎就是NP图的推导。#include <stdio.h> #include <string.h> int dp[20][8200], n, s, a[20]; int dfs(int id, int remain) {原创 2017-03-02 15:31:32 · 376 阅读 · 0 评论 -
POJ - 1704 Georgia and Bob 神TM NIM博弈,脑洞,神分析
题目:见这里 题意:n个位置有东西,然后现在每次要把这些东西向左移动,只能移动到最左边或者被其他东西挡住的位置,谁先无法移动就输,问最后谁赢 解法:不会。只好看网上的解题报告了,看了之后才发现真的妙啊。。。具体是这样转化的。很巧妙的转化为Nim游戏,首先相邻的两个作为1组,如果是奇数,就第一个和0作为1组,然后如果移动每组的前一个棋子,其实是没有影响的,因为后手可以跟他一样,把后面的棋子移动一样原创 2017-03-02 14:54:35 · 512 阅读 · 0 评论 -
POJ2425(树形,无向无环图博弈) SG函数
Description Let’s design a new chess game. There are N positions to hold M chesses in this game. Multiple chesses can be located in the same position. The positions are constituted as a topological gr原创 2017-03-02 13:53:45 · 884 阅读 · 0 评论 -
POJ 2484 A Funny Game 智力,推理
题目链接:见这里 题意:本题题意为,给出N个硬币围成一个圈,然后两个人从这圈硬币中轮流拿1个或毗邻的2个硬币。直到全部拿完为止,最后一个拿的人为胜者。 解题方法: 当N<3时,肯定是最开始先拿的人胜利。因为此时,N==1,N==2,只要拿一次就可以拿完。当N>=3时,肯定是第2个拿的人胜利,因为当N为偶数时,不管第1个人,怎么拿, 第2个人拿与第一个人同样数量的硬币,且与第1人所拿硬币呈中心原创 2017-03-02 13:25:01 · 633 阅读 · 0 评论 -
POJ 1067 取石子游戏 威佐夫博弈
题目链接:见这里 解法:威佐夫博弈(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10).可以看出,a0=b0=0,ak是未在前面出现过的最小自然数,而 bk=ak+k原创 2017-03-02 13:21:53 · 276 阅读 · 0 评论 -
POJ 3270 Cow Sorting 置换,循环节
DescriptionFarmer John’s N (1 ≤ N ≤ 10,000) cows are lined up to be milked in the evening. Each cow has a unique “grumpiness” level in the range 1…100,000. Since grumpy cows are more likely to damage F原创 2017-02-10 12:00:16 · 423 阅读 · 0 评论 -
POJ 3253 Fence Repair(huffman树的应用)
【题意】 有一个农夫要把一个木板钜成几块给定长度的小木板,每次锯都要收取一定费用,这个费用就是当前锯的这个木版的长度 给定各个要求的小木板的长度,及小木板的个数n,求最小费用 提示: 以 3 5 8 5为例: 先从无限长的木板上锯下长度为 21 的木板,花费 21 再从长度为21的木板上锯下长度为5的木板,花费5 再从长度为16的木板上锯下长度为8的木板,花费8 总花原创 2016-07-07 18:00:07 · 436 阅读 · 0 评论 -
模拟退火算法 POJ 2420
【前言】先说一说什么是模拟退火,感觉很多地方都讲得挺神秘的,其实非常简单。 【模拟退火算法】转自点击打开链接 1. 模拟退火算法认识 爬山算法也是一个用来求解最优化问题的算法,每次都向着当前上升最快的方向往上爬,但是初始化不同可能 会得到不同的局部最优值,模拟退火算法就可能跳出这种局部最优解的限制。模拟退火算法是模拟热力学系统 中的退火过程。在退火过程中是原创 2016-06-12 21:02:38 · 2954 阅读 · 0 评论 -
POJ 2104 K-th Number 区间第K大,可持久化线段树
Description You are working for Macrohard company in data structures department. After failing your previous task about key insertion you were asked to write a new data structure that would be able to原创 2017-02-26 10:17:57 · 531 阅读 · 0 评论 -
POJ 2348 欧几德里博弈,博弈好题
题目链接:这里 题意:给两个整数a和b,两个人先后用较大的数减去较小数的整数倍,并且保证相减后不为负数。先把一个数变为0的人获胜。 解法:真心觉得博弈难,可能是自己找必胜状态找得不好,感觉是需要一些智商来刚博弈的。下面的分析来自这位同学 很显然,当大数是小数的整数倍时为必胜态。 从这道题学会一个叫做自由度的东西,感觉能够为博弈推理提供思路。 博弈基本就是一个推理必胜态和必败态的过程。自由度原创 2017-03-11 10:26:43 · 815 阅读 · 0 评论 -
POJ 1740 A New Stone Game 博弈,规律
题目链接:这里 题意:对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分给其它的某些堆。最后谁无子可取即输。 解法:算规律题吧。。来自网上大神的一段分析。首先看两堆:1 1 的状态肯定是先手输~~但是俩数不一样的话就是先手赢了。。 再看三堆:1 1 1的状态肯定是先手赢,1 2 1也是先手赢。。。1 2 2也是先手赢。。总原创 2017-03-11 10:59:28 · 437 阅读 · 0 评论 -
BZOJ 1460: Pku2114 Boatherds 点分治
Description 给你一棵n个点的带权有根树,有p个询问,每次询问树中是否存在一条长度为Len的路径,如果是,输出Yes否输出No. Input 第一行两个整数n, p分别表示点的个数和询问的个数. 接下来n-1行每行三个数x, y, c,表示有一条树边x→y,长度为c. 接下来p行每行一个数Len,表示询问树中是否存在一条长度为Len的路径. Output 输出有p行,Yes或No原创 2017-05-04 16:14:50 · 452 阅读 · 0 评论 -
POJ 3281 Dining 匹配,网络最大流
题目链接: http://poj.org/problem?id=3281题意:解法:#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> using namespace std; const int maxn = 1010; const int maxm = 510010; const int原创 2017-04-17 16:19:58 · 425 阅读 · 0 评论 -
POJ 2391 二分,Floyd, 网络最大流
题目链接:http://poj.org/problem?id=2391题意:有n个田地,给出每个田地上初始的牛的数量和每个田地可以容纳的牛的数量。m条双向的路径,每条路径上可以同时通过的牛没有限制。问牛要怎么走,能在最短时间内使得每块田地都能容纳的下,输出最短时间或-1。解法:先floyd求出任意两点之间的最短距离,然后二分答案,判断是否可以在时间不超过mid的情况下完成移动:建图:每个点拆成两个点原创 2017-04-16 21:45:07 · 655 阅读 · 0 评论 -
POJ 2112 Optimal Milking 二分+二分图多重匹配,网络最大流
题目链接:http://poj.org/problem?id=2112题意: K台挤奶机分布在C头牛间,每台最多同时服务M头牛。给出距离矩阵,求最小化牛的最大路程?解法:一看到最小化最大值(或者最大化最小值),当然是二分搜索了。先将两点间最短路预处理出来,可以简单warshall_floyd搞定。接着构建网络流,从s到牛引一条容量1的边,从挤奶机到t引一条容量M的边,然后对最大路径二分,在二分图匹配原创 2017-04-15 11:27:39 · 505 阅读 · 0 评论 -
POJ 1698 Alice's Chance 二分图多重匹配 网络最大流
题目链接:http://poj.org/problem?id=1698题意:爱丽丝要拍电影,有n部电影,规定爱丽丝每部电影在每个礼拜只有固定的几天可以拍电影,只可以拍前面w个礼拜,并且这部电影要拍d天,问爱丽丝能不能拍完所有的电影第一行代表有多少组数据对于每组数据第一行代表有n部电影接下来2到n+1行,每行代表一个电影,每行9个数,前面7个数,1代表拍,0代表不拍,第8个数代表要拍几天,第9个数代表原创 2017-04-15 10:54:02 · 438 阅读 · 0 评论 -
POJ 2417 baby_step giant_step 小步大步算法 a^x == b(mod n) 求解0<=x<n的值
题目照片:http://poj.org/problem?id=2417题意:求解a^x==b(mod n),==表示同余的意思。解法:大步小步算法裸题,我也不懂这个算法,先存个模板,应该有用。///POJ 2417#include <stdio.h> #include <cmath> #include <string.h> #include <stdlib.h> #include <iostream原创 2017-04-30 19:41:13 · 606 阅读 · 0 评论 -
poj 2406 Power Strings KMP
题目链接:http://poj.org/problem?id=2406题意:找最小循环节的循环次数解法:KMP//POJ 2406#include <stdio.h> #include <string.h> const int maxn = 4000010; char s[maxn]; int fail[maxn];int main() { while(scanf("%s", s+1) !=原创 2017-04-06 10:26:06 · 461 阅读 · 0 评论 -
POJ 3710 Christmas Game 无向图删边 经典的删边游戏 Tarjan缩点
题目链接:这里 题意:有多棵树进行删边博弈,注意这里的”树“可能存在环,形状也许是非常诡异的。 解法:下面来自cxlove神的博客 我们利用The Fusion Principle:任何环内的节点可以融合成一点而不会改变图的sg值。(下面我们称它为融合原则) 融合原则允许我们把任意一个根图简化为一个等效的可以通过冒号原则(即Colon Principle)简化为竹竿的树。 我们会发现,拥有原创 2017-03-11 15:50:45 · 688 阅读 · 0 评论 -
POJ 3480 John Anti-Nim博弈变形
题目链接:这里 题意:有若干堆石子,两个人轮流从其中一堆里面取出若干个(不能不取),若某个人取完后没有石子了,则这个人输。先手的人叫John。 解法: 先手胜当且仅当 (1)所有堆石子数都为1且游戏的SG值为0 ,(2)存在某堆石子数大于1且游戏的SG值不为0 证明: (1)若所有堆石子数都为1且SG值为0,则共有偶数堆石子,故先手胜。 (2) i)只有一堆石子数大于1时,我们原创 2017-03-11 10:01:32 · 542 阅读 · 0 评论 -
POJ 1821 Fence(单调队列优化)
【题意】K个人对N块木板涂色,每个人初始站在一块木板前(不重复),每人最多只能涂包含所站木板的连续l个木板或一个木板也不涂。给出每人最多涂的木块数l,涂一快木板的工钱p,站的木板s。求这群人最多共获得多少工钱。 【分析】dp[i][j]表示前i个人对前j块木板操作的最大收益。 核心状态转移方程:dp[i][j]=max(dp[i][j-1],dp[i-1][k]+P[i].p*(j-k原创 2016-05-05 18:58:17 · 687 阅读 · 0 评论 -
POJ 3279 Fliptile
【题意】一个m*n的01矩阵,每次点击(x,y),那么她的上下左右以及本身就会0变1,1变0,问把矩阵变成全0的,最小需要点击多少步。 【分析】只需要枚举第一行的状态即可,后面的状态都可以根据第一行直接推出来,还要注意这题还有不存在的情况,详见代码! 【AC代码】 #include #include #include #include #include #include us原创 2016-05-10 11:02:54 · 839 阅读 · 0 评论 -
POJ 2728 Desert King
Description David the Great has just become the king of a desert country. To win the respect of his people, he decided to build channels all over his country to bring water to every village. Villag原创 2016-03-22 19:08:51 · 474 阅读 · 1 评论 -
POJ 3667
【题意】 1 a:询问是不是有连续长度为a的空房间,有的话住进最左边 2 a b:将[a,a+b-1]的房间清空 【思路】 记录区间中最长的空房间 【线段树操作】 update:区间替换 query:询问满足条件的最左断点 //Created Author :just_sort //Created Time :2016/3/2 18:49 //Created File原创 2016-03-02 18:50:43 · 421 阅读 · 0 评论 -
POJ 2777 Count Color
【题意】 给定n段,分别编号为1、2、……、n。初始化时都涂色为1,现在规定两中操作: 1)C A B C,给编号为A和B段涂色C 2)P A B,输出编号A到B段的涂色数 现在给定T为颜色的种类数(1——T)和O为操作总数,要求按照相应的操作输出P A B。 【分析如下】 令线段树节点定义为: l,r,value,flag分被表示区间左右端原创 2016-03-01 16:55:32 · 418 阅读 · 0 评论 -
Poj 3253 Fence Repair (贪心加优先队列的应用)
Description Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) planks of wood, each having some integer leng原创 2015-08-08 15:43:29 · 551 阅读 · 0 评论 -
Poj 4227 反正切函数的应用
Description 反正切函数可展开成无穷级数,有如下公式 (其中0 <= x <= 1) 公式(1) 使用反正切函数计算PI是一种常用的方法。例如,最简单的计算PI的方法: PI=4arctan(1)=4(1-1/3+1/5-1/7+1/9-1/11+...) 公式(2) 然而,这种方法的效率很低,但我们可以根据角度和的正切函数公式: tan(a+原创 2015-08-15 11:38:06 · 1319 阅读 · 0 评论 -
Poj 2826 An Easy Problem!
Description Have you heard the fact "The base of every normal number system is 10" ? Of course, I am not talking about number systems like Stern Brockot Number System. This problem has nothing to do原创 2015-08-15 13:31:39 · 959 阅读 · 0 评论 -
Poj 1006 Biorhythms
Description 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现原创 2015-08-15 14:31:34 · 889 阅读 · 0 评论 -
Poj 1061 青蛙的约会
Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的原创 2015-08-15 14:38:15 · 854 阅读 · 0 评论 -
poj 1602 昂贵的聘礼
题目传送门//此题的关键在于等级限制的处理,最好的办法是采用枚举,即假设酋长等级为5,等级限制为2,那么需要枚举等级从3~5,4~6,5~7 //然后就是dij了,至于为什么要用dij,看个人喜好,毕竟这里等级处理要对vis数组进行标记 //处理了等级问题,就可以枚举等级数组,n倍dij跑完本题了,nlogn0ms搞定 //以下为具体代码 #include<cstdio> #include<cstr原创 2015-11-02 20:22:46 · 900 阅读 · 0 评论 -
Poj 3463 Sightseeing
题目传送门本题题意为,给你一个点和边集合,要你建图之后找出最短路和次短路的条数和,并且只有当最短路和次短路相差1才会统计。学长讲解方法之后,几乎照模板写出~ 弱渣一枚,请问我可以不学图论吗~~我选择死亡,代码如下///最短路和次短路#include<stdio.h> #include<string> #include<cstring> #include<algorithm> #include<map原创 2015-11-09 20:16:38 · 555 阅读 · 0 评论 -
HDU 3308 LCIS
【题意】题意很简单,就是给了两个操作,一个是U A B,代表将第A个元素用B代替,还有一个是Q A B,查询[A,B]区间里面的最长上升子序列,即LCIS。(ps:这里需要注意的是LCIS为严格的上升子序列,比如5,5,5,这个序列的LCIS为1,不是为3) 【解题思路】和Hotel类似,在线段树的节点里维护三个信息,一个是节点左边的最长上升子序列,节点右边的最长上升子序列,以及跨越节点左右两边原创 2016-03-02 19:13:55 · 274 阅读 · 0 评论 -
poj 1436
Description There is a number of disjoint vertical line segments in the plane. We say that two segments are horizontally visible if they can be connected by a horizontal line segment that does not原创 2016-03-05 13:13:36 · 408 阅读 · 0 评论 -
POJ 1840 Eqs
题目门 【题意】题意非常简单,问你能找到多少个x,满足a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 。 【解题思路】如果是暴力枚举的话,复杂度高达100^5,明显不符合时限要求,故而考虑先枚举两项的和,然后枚举3项的和,然后统计在这些项中存在多少种相等的情况。说白了,就是简单hash,或者枚举+二分。 【AC代码】我这里写了个hash版本的,原创 2016-03-05 18:36:29 · 339 阅读 · 0 评论 -
POJ 2503 (STL)
题目传送门 【题意】给了一个映射字典,一个单词可以解密成另外一个对应的单词,现在要求查询中的每个单吃能否映射成一个字典里的单词,能的话,输出这个单词,不能的话,就输入“eh”. 【AC代码】 #include #include #include using namespace std; mapMap; string str1,str2; char str[原创 2016-03-08 15:36:24 · 724 阅读 · 0 评论 -
POJ 2002 Squares
题目传送门 【题意】给出n个二维平面上的坐标,求出这n个坐标最多能够构成多少个正方形。 【解题思路】自己完全不会做,只好看网上题解了,现在把Hash和二分的解法展示如下,首先说一说解题的思路, 通过n最大为1000可以推测,应该是n^2左右的效率,所以我们先枚举两个点,然后通过这两个点再求出另外两个点的坐标,在输入的集合中查找是否存在这两个点,如果存在的话就可以构成一个正方形。 但原创 2016-03-08 14:58:42 · 461 阅读 · 0 评论 -
POJ 3640 Conformity(Hash)
Description Frosh commencing their studies at Waterloo have diverse interests, as evidenced by their desire to take various combinations of courses from among those available. University administr原创 2016-03-08 11:24:14 · 996 阅读 · 0 评论