摘要:
题目大意: 有两条平行线,给出n条分别连接两条平行线上整点的线段 保证不会有重边且不会与两条以上边交于一个点的情况 思路: 画图可以得知,当且仅当两条线段在两条平行线上端点的大小关系相反时,才会相交 因此我们可以使用树状数组 按照第二条平行线上的位置升序排序 然后倒着查询之前有(即在它右边)几个比它 阅读全文
摘要:
题目大意: 折叠的定义如下: 1. 一个字符串可以看成它自身的折叠。2. X(S)是X(X>1)个S连接在一起的串的折叠。记作X(S)=SSSS…S(X个S)。 3. 如果A=A’, B=B’,则AB=A’B’ 例如,因为3(A) = AAA, 2(B) = BB,所以3(A)C2(B)=AAACB 阅读全文
摘要:
题目大意: 有n个点,一个人要从最左边的点走到最右边的点再走回来,除了起点每个点都只能走一次,求最短路径长度 思路: 首先可以看做是两个人一起走且路径无任何重合 设dp(i,j) 表示两个人走了前i个点,一个人在点i,另一个在点j 特殊的状态为j=i-1时,此时j可以一步跳到i+1,特殊考虑 1 # 阅读全文
摘要:
题目大意: 有一个01矩阵,可以交换任意两行或两列,问是否能把所有1放在一个对角线上 思路: 首先可以知道,若两个1在一行或一列内,则不论怎么换,他们还在一行或一列内 因此我们的目标是找到n个1,使得他们的行列都不同 此时我们可以用到二分图匹配 把行作为左边的点,列作为右边的点 对于每个一,连接i 阅读全文
摘要:
题目大意: 一个网格图,路径样式如下 求最小割 思路: 数据太大,不能直接最小割,而这个图是个平面图(显而易见) 于是我们可以对偶图 所谓对偶图,就是把平面图的每个块看做是一个点,如图: 然后spfa跑一遍最短路就好了 1 #include<iostream> 2 #include<cstdio> 阅读全文
摘要:
第一次224真是辣鸡 改完顺利AK T1: 括号匹配很裸,用一个栈完事 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<cstdlib> 6 #include<c 阅读全文
摘要:
题目大意: 一个矩阵,求两条不相交的路径使两条路径上所有点权值和最大,两条路径起点都为左上,终点为右下 思路: 三维dp 表示两条路分别走到那两个点了,其中可以枚举路径长度,两个横坐标优化为3维 然后每个dp都可以从每个点的左边或上边转移过来 zz题 没有1a真是耻辱,原因是枚举横坐标的时候只考虑了 阅读全文
摘要:
题目大意: 两个字符串 每次可以从任意一个字符串的开始选一个加入新的字符串 定义一个字符串的价值为其各字符跨度之和,定义一个字符串内某字符跨度为该字符最后一次出现的下标与第一次出现的下标之差 求新字符串的最小价值 思路: dp dp数组表示第一个字符串选走了前i个,第二个选走了前j个的最小价值 每个 阅读全文
摘要:
题目大意: 你在ktv唱歌,有一个时限,但是在时限到时,若一首歌没唱完可以继续唱,已知有n首歌可以唱,已知他们的时长每个都不超过3分钟 不能重复唱一首歌。还有一首678秒的歌,歌之间可以无缝衔接 思路: 典型的背包问题 求这n首歌能达到不超过t-1的时间 t-1是因为要留出1秒来开始那个巨长的歌 1 阅读全文
摘要:
题目大意: 一个数列a,找到一个尽量长的连续子序列 ax 到 ay,使得该系列中没有相同的元素,求数列长度 思路: 滑动窗口 每次判断窗口内是否有重复即可 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include 阅读全文