洛谷题目传送门 神仙思维题. 对于两个字符串的匹配问题,似乎之前蒟蒻写的HAOI2010最长公共子序列题解中提到的建网格图模型是一种套路? 给一个稍微强一点的样例(把字母换成了ABC) AABCB BACBA 它所对应的网格图如下(横轴代表\(s\),纵轴代表\(t\),显示的点表示可达状态) 我们首先可以大致确定,所有的可达状态在一个不规则图形的界内 (红色线条).第\(i\)行(或列)的界是\([l_i,r_i]\),而且类似two pointers,\(l_i\)和\(r_i\)都随\(i…
洛谷题目传送门 神仙思维题还是要写点东西才好. 建立数学模型 这种很抽象的东西没有式子描述一下显然是下不了手的. 因为任何位置都以\(k\)为周期,所以我们只用关心一个周期,也就是以下数都在膜\(k\)意义下. 设\(a_i\)表示\(i\)号区间长度: 对于上行列车(\(0\rightarrow n\))设\(p_0\)表示出发时刻,\(p_i(i\ge1)\)表示在\(i\)站停靠时间: 对于下行列车(\(0\leftarrow n\))设\(-q_0\)表示到站时刻,\(q_i(i\ge1…
题目:给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数. 解法:匈牙利算法.(以前我总是不记得......)实质上应该有贪心的思想,每次都尽量匹配,找到能和自己匹配的也尽量让它们匹配.若对方已有匹配的对象,就让那个对象尽量调整来使自己这对能凑起来.而要注意,每次问过的对象就不要再问了,也就是不要让它的对象总是换来换去...... #include<cstdio> #include<cstdlib> #include<cstring> #include&…
P1637 三元上升子序列 48通过 225提交 题目提供者该用户不存在 标签云端 难度提高+/省选- 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 为什么超时啊 a的数据比较大啊,真的能用… 题目描述 Erwin最近对一种叫"thair"的东西巨感兴趣... 在含有n个整数的序列a1,a2......an中, 三个数被称作"thair"当且仅当i<j<k且ai<aj<ak 求一个序列中"thair"…
题面请查看:https://www.luogu.org/problem/P1739 思路: 见到括号就搜索,搜到与它配对的括号为止,搜不到就输出NO 代码: #include <bits/stdc++.h> using namespace std; int main() { string aa; getline(cin,aa,'@'); if(aa.size()==0) { cout<<"NO"<<endl; return 0; } int r =…
题面 官方题解 模拟赛题解 题解概述: 定义符号A~B表示序列A是序列B的子序列,A!~B反之. 设操作序列为I,则有A~I,B!~I,C~I,D!~I. 可得出条件①B!~C且D!~A,所以我们只要讨论满足这个条件的情况. 分情况讨论: c1=c2,则可以进行操作c1,得到的状态仍满足条件①: c1!=c2,且B'!~C,此时可以进行操作c1: c1!=c2,且D'!~A,此时可以进行操作c2: c1!=c2,且D'~A,B'~C,此时无法进行操作,此情况无解: 我们还发现第4种情况下,B=.…
题意 题目链接 Sol 神仙题Orz Orz zbq爆搜70.. 考虑"与"和"或"的性质 \(0 \& 0 = 0, 1 \& 0 = 0\) \(0 \mid 1 = 1, 1 \mid 1 = 1\) 也就是说某一个数\(\& 0\)之后不管之前是什么,现在的值变为\(0\) 某一个数\(\mid 1\)之后不管之前的是什么,现在的值变为\(1\) 继续考虑 \(0 \& 1 = 0, 1 \& 1 = 1\) \(0…
题目描述 图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个 正整数. 每位借书的读者手中有一个需求码,这个需求码也是一个正整数.如果一本书的图 书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的. 小 D 刚刚当上图书馆的管理员,她知道图书馆里所有书的图书编码,她请你帮她写 一个程序,对于每一位读者,求出他所需要的书中图书编码最小的那本书,如果没有他 需要的书,请输出-1. 输入输出格式 输入格式: 输入文件的第一行,包含两个正整数 n 和 q,以一个空格分开,…
题目:戳这里 题目大意: 给你一个数列,问能否通过两个栈的push与pop把它输出成一个升序序列(每个数只能入队并出队一次) 不能的话输出0,能的话输出操作方法 主要思路: 1.判断是否可以成功输出升序序列(二分图部分) 2.能输出的话就模拟出操作方法(贪心部分) 二分图(这里只提定义,其他应用方法可见别的题解): 把一个图的所有点分成两部分,满足每一部分内部没有连边,也就是说所有的边都在这两部分之间产生. 二分图的判定: 染色法:从一个点出发,遍历临接点,把这个点直接相连的点们标记成与该点不同…
题意:有\(n\)个点,对这些点进行\(m\)次染色,第\(i\)次染色会把区间\((i*p+q)\ mod\ N+1\)和\((i*q+p)\ mod\ N+1\)之间的点染成颜色\(i\),问最后这\(n\)个点的颜色. 题解:我们可以反着从第\(m\)次开始染,因为后面的会把前面点的颜色覆盖,所以倒着来的话,下一次染的时候就可以不用考虑已经染过的区间了,那么我们怎么维护染过的区间呢?我们可以把这些区间看成是一些连通块,所以可以用并查集来对区间进行维护,让区间内的所有点均指向它的右端点,具体…