自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 poj 3905 perfect election

  一场选举中,每个选民有两条意见(或关系),判断是否存在一个选举方案不违背所有选民的意见。   2-SAT问题,具体的做法:每个选民的两个意见a,b之间为或关系,因此可以推出(!a,b)或者(!b,a),这样就可以使用有向线段连接!a到b,!b到a。将所有的意见用有向图表示后,使用tarjan算法求强连通子树,最后判断同一个子树中是否存在违背的意见。   代码块加上了自己的理解,注释。 #include <iostream> #include <cstring> #include

2020-05-27 18:26:45 124

转载 二分法边界问题

二分法中最痛苦的问题:确定边界条件。 下面从一个最简单的例子说起: LeetCode 704. 二分查找 class Solution: def search(self, nums: List[int], target: int) -> int: left, right = 0, len(nums) # 确定左右边界 while left < right: # 终止条件 mid = left + (right-left)//2 #

2020-05-25 23:25:15 666

原创 poj 3903 stock exchange

  求给定序列中长度最大的递增子序列   题目中给定的序列长度为10的5次幂,若假设数组dp[i]存储序列中以第i个数字结尾的最大递增子序列长度,此时算法的复杂度为n的2次幂,会引起超时。(一般情况下限制1s内,不能超过10的8次幂)   仍然使用动态规划解决这个问题,假设数组dp[i]存储的是所有递增子序列长度为i的序列中,末尾数字最小的序列的末尾数字。意思是,dp数组中同样长度的递增子序列末尾数字大的会被末尾数字小的取代,因为末尾数字越小,在后继的序列中优势更大。这样数组dp中维护的便是一个递增的序列,

2020-05-25 22:57:04 142

原创 poj 3904 求四元互质集合

  从给定的集合中求互质四元组的个数。   解题思路:先求解非互质四元组的个数,在总体四元组个数减去这个数目。求非互质四元组即求公因数大于1的四元组数目,因此,使用公因数d把集合中的元素划分成不同的子集,每个子集中的四元组一定是非互质的。还有一点需要考虑的是,不同子集中可能蕴含相同的非互质四元组。可以使用容斥原理解决这个问题,具体的方法是对公因数d进行质因数分解,若d可以分解成奇数个质数,就在非互质四元组总数中加上公因数d对应的非互质四元组,若为偶数则减去。 #include<iostream>

2020-05-24 21:38:44 176

原创 poj 1026 加密问题

如何改变文本的样式   题目大意是,给定一串密匙,求源码经过密匙加密k次后的内容。加密的规则是:源码第i个字母调换到密匙中ai指定的位置。同时,源码长度小于等于密匙长度,当源码长度小于密匙长度时,在源码后使用空格填充保证二者长度相等。   最开始使用的直接模拟加密过程的方法,会超时。明显要考虑加密过程中加密的内容周期问题,于是直接求了整个源码字符串的周期,这样也会超时。实际上,密匙长度在题目中限制为最大200,直接求整个字符串的周期,这个值也可能很大。参考了其它同学的思路,分开求每个字符的周期,然后对每个字

2020-05-19 16:02:26 136

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除