import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); char[] arrC = sc.next().toCharArray(); Stack<Character> sk = new Stack<>(); for (int i
简化题意 其实这道题就是求最长上升序列(连续上升一)。 思路 一边输入一边判断,只要两数之间差一就把长度加一,否则和前面的序列长度比较,看看哪个序列最长。注意有两个坑点。 坑点一 如果输入的序列本身就是最长上升子序列,就还要在循环结束后再判断一次。 坑点二 最后一个数有可能是一
思路 只需要不断取字典序最大的字符就可以了。 如何找字典序最大的字符:倒着查找,只要字符比后面所有的字符的字典序大或相等就做个记号,最后正着输出。 代码 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<string> using na
C. Set or Decrease 题意:给出一组数,可以对每个数进行以下操作:1) 将它-1. 2)将它变成数组中另一个数。给出k,问至少作多少次操作能使数组和小于等于k。 解:首先贪心地想,要么把最小的数变得更小,然后令其他数等于它,要么每个减1。再想想每个减一没有让它变成最小数合算。现在题里有
day3:四道检测题,花了大半天时间。 T1 子集和问题 问题描述 子集和问题的一个实例为<S,c>。其中S={x1,x2,…,xn}是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得S1中所有元素的和为c 找不到原题了 #include <bits/stdc++.h> using namespace std; i
AC代码 #include<bits/stdc++.h> using namespace std; int main() { //freopen("city.in", "r", stdin); //freopen("city.out", "w", stdout); int xyuan,yyuan,maxx,maxy,num,b; char a; cin>>maxx>>maxy
一、Qt中多个源文件调用同一个参数或变量 eg:调用main.cpp中的参数x:①在main.cpp的main函数外定义x,并extern int y = x,即可完成 二、setText的文本转换 setText只能输出字符串,所以在使用时需要将文本转换为字符串。 eg: 1、强制转换 int x = 10; label -> setText(QString::nu
http://ybt.ssoier.cn:8088/problem_show.php?pid=1259 /* 【例3】求最长不下降序列03_AC 1259:【例9.3】求最长不下降序列 http://ybt.ssoier.cn:8088/problem_show.php?pid=1259 */ #include<bits/stdc++.h> using namespace std; const int maxn=1005; int a[maxn],i,j,k,maxx
地图上有 N 个目标,用整数 Xi,Yi表示目标在地图上的位置,每个目标都有一个价值 Wi。 注意:不同目标可能在同一位置。 现在有一种新型的激光炸弹,可以摧毁一个包含 R×R个位置的正方形内的所有目标。 激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必
题意:给定一个字符串,求区间[l,r]内有多少回文子串。 解:回文杀我。区间dp++ 首先这玩意不能像前缀和一样[l,r]=[1,r]-[1,l-1]。 那就直接设dp[i][j]为[i,j]中回文子串的数量。 考虑拿小的拼大的。如果两端不等, dp[i][j]=dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]; 如果相等在此基础上加一
POJ崩了……不知道什么时候才能好,爷想交题啊…… 以下代码没交过,但dp能过样例应该就是对了吧.jpg POJ-1260 Pearls 题意:按顺序给出一些珍珠,后给出的一定比先给出的贵。每买一种珍珠除了购买数量的价钱,还必须付十颗珍珠的价钱。现给出要买珍珠的数量和价格,低级珍珠可以用高级珍
新学的差分约数系统,大概用来解决长成这样的问题: 如果不等号是小于,就换成小于等于。大于同理。 令所有x为结点,常数为边权连图: 符号为小于等于时,两点间最短路为两点差的最大值。 符号为大于等于时,两点间最长路为两点的差最小值。 注意如果不连通,则建一个源点,让它们强行联通。 题意:给
Input 输入数据包含多个测试实例,每个测试实例占一行,每行的开始是一个整数n(3<=n<=100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2... xn, yn),为了简化问题,这里的所有坐标都用整数表示。 输入数据中所有的整数都在32位整数范围内,n=
题意:青蛙想从一个点跳到另一个点,中途可以经过其他点。求起点到终点间所有路径中相邻两点最大距离的最小值。 解:所有最短路算法都可以,这里练了一下Floyd。将两点间最短路改成走到这一点上长度最小的最大值(好绕哦)。先计算出有直接边的距离,然后枚举每个点进行松弛,由于过程中要求最大
传送门 题意:给定起始拥有货币种类为s,拥有数量为v。现有n种不同货币,m种货币转换。货币转换为双向,但两种转换汇率r和手续费c不同。询问是否能够换一圈,最后s的数目增长。(问能否钱从天上来 解:由于要求换一圈货币种类仍为s,所以要求有环。由于不能亏,所以要求是正环。spfa找环即可。 注:sp
E. Robot on the Board 1 题目大意:给你一个字符串,由"UDLR"组成,"UDLR"表示方向。你有一个n*m的方格,请你找到一个起点,使得这个起点按照给定的字符串进行移动,在走出棋盘(或者执行所有步数)前执行最多的步数。 解题思路:先将起点定在(1,1),当你要走出棋盘的时候,看看能不能通过平移棋盘解决
题目 力扣 思路一 哈希表 精确覆盖需要满足【面积相等】和【边缘点出现一次,其余点出现2或4次】的条件。 pair表示点,哈希表存储点的数目,area存储矩形面积,四个int型数据存储最小/最大的x/y坐标。 在循环中,需要计算面积,更新边缘点极值,增加点的数目。 最后根据条件来判断面积、点出
题解: 因为只能前面大的和小的换,只要换的时候把大的数都往前放,例如 8 6 9 3 1 要把8换到1的位置,不能直接换,要先8,6交换;8 ,3交换;最后8,1交换;变成 6 3 9 1 8 ;这样6 3 1这3个比8小的数的相对位置就没变,对接下来的操作就没有影响; 代码: #include<bits/stdc++.h> using namespace
typedef pair<int, int> Point; class Solution { public: bool isRectangleCover(vector<vector<int>>& rectangles) { long area = 0; int minX = rectangles[0][0], minY = rectangles[0][1], maxX = rectangles[0][2], maxY =
给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形。这个矩形的左下顶点是 (xi, yi) ,右上顶点是 (ai, bi) 。 如果所有矩形一起精确覆盖了某个矩形区域,则返回 true ;否则,返回 false 。 https://leetcode-cn.com/problems/perfect-rec
题目大意计算方块与方块之间的积水面积。 拿到题目很多人都会想到从左到右挨个判断,虽然与能做,但这样不仅时间复杂度高,而且中间的情况也不好处理。 我们简单分析一下题目给的例子:我们可以转换一下思维,不从左到右分析,而从上到下分析, 第一层:我们找到左右第一次有方块的地方,假设
title: 清帝之惑之顺治 date: 2021-11-07 19:22:27 tags: ACM Problem 顺治喜欢滑雪,这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待太监们来载你。顺治想知道载一个区域中最长的滑坡。 区域由一个二维数
CF1156E Special Segments of Permutation 一般有在序列上进行与最大值相关的操作都是单调栈或者笛卡尔树来操作,但其实分治做法也是可以做的 至于分治做法为啥不会成为主流,可能是因为大多数这种序列题用单调栈或者笛卡尔树可以\(O(n)\)做, 而分治只能是满的\(O(nlog(n))\),少数部分
1603B - Moderate Modular Mode 题目:有两个偶数x,y,求n使得n%x=y%n。 题解: 1.当x>y时,(x+y)%x=y,y%(x+y)=y。 2.当x<=y时,y - ((y % x) / 2)表示 x小于y的最大倍数maxx,加上(y-maxx)/2。 例如:x=4,y=10 maxx=8,y-maxx/2=1; 因为(y-maxx)/2<x;y - ((y % x) / 2)%x=(y-maxx)/2 因为y和y - ((y % x) /
力扣 5 longest-palindromic-substring 最长回文子串 题目 给你一个字符串 s,找到 s 中最长的回文子串。 最长回文子串 题解 dp[i][j] 代表从第i个位置到第j个位置是否为回文。 转移方程为:dp[i][j] = dp[i+1][j-1]&&(s[i]==s[j]) 意思就是要判断当前的串是否回文,如果知道去掉