HDU6581 Vacation (HDU2019多校第一场1004) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6581 题意: 给你n+1辆汽车,每辆汽车有汽车的长度L,汽车距离终点的距离S,汽车的最大速度V 汽车与汽车之间距离为0时,速度大的汽车的速度会等于速度小的汽车的速度 求离终点最远的那辆车的车头到达终点的时间 注意,当汽车驶过终点线后会继续行驶,相遇,对后面的车也会造成影响 题解: 这里谈一下O(n)的写法 首先,当我们的最后一辆车…
Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4869    Accepted Submission(s): 1659 Problem Description Chiaki has an array of n positive integers. You are told some facts about…
题目链接 传送门 题意 有\(n+1\)辆车要过红绿灯,告诉你车的长度.与红绿灯的起点(题目假设红绿灯始终为绿).车的最大速度,问你第\(0\)辆车(距离最远)车头到达红绿灯起点的时间是多少(每辆车最多和前面的车无缝衔接). 思路 比赛的时候没啥思路,后来仔细一想,其实对于第\(0\)辆车的最终状态只有两种状态: 前面的车都不影响它的时间(也就是一直都不会与前面的车衔接),此时时间为\(\frac{s_0}{v_0}\): 与前面的车无缝衔接,那么由于第\(0\)辆车的车头会在数轴\(0\)这个…
题意:有n+1辆车,每辆车都有一定的长度,速度和距离终点的距离,第1-n辆车在前面依次排列,第0辆车在最后面.不允许超车,一旦后车追上前车,后车就减速,求第0辆车最快什么时候能到达终点? 思路:对于每一辆车,假想它被后面的所有车追上,连成一个长串,这一长串以该车的速度行驶,这一长串的尾巴通过终点的时间. 但是实际上不是所有的车都能连成这样一个长串并以自己的速度前进,可能太快了导致后面的车追不上它,也可能太快了导致速度被前车限制,因此对于每一辆车求出理想状态下连成的长串花费时间,其最大值为解. 时…
题意:给你一个字符串,问是否存在一个长度为m的子序列,子序列中对应字符的数目必须在一个范围内,问是否存在这样的字符串?如果存在,输出字典序最小的那个. 思路:贪心,先构造一个序列自动机,序列自动机指向在它后面离它最近的某个字符的位置.对于当前位置,从a开始枚举字符,如果答案串的下个位置填这个字符可以,就立马填上这个字符,最后看一下贪心构造的字符串长度是不是m就可以了. 代码: #include <bits/stdc++.h> using namespace std; const int max…
2019牛客多校第一场 I Points Division(动态规划+线段树) 传送门:https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点有两个属性a,b 需要将点划分为两堆,划分依据是对于在A划分中的任意点a和在B划分中的任意点b满足 不存在当a.x>b.x时,a.y<b.y 的情况 在A划分中的点可以给出其a属性的贡献,在B划分中的点可以给出其b属性的贡献 求最大贡献和 题解: 根据题意,我们可以得出结论,我们需要找的是一根折线,…
牛客多校第一场 B Inergratiion 传送门:https://ac.nowcoder.com/acm/contest/881/B 题意: 给你一个 [求值为多少 题解: 根据线代的知识 我们可以将分母裂项,然后根据 \(\int_{0}^{\infty} \frac{1}{1+x^2}dx=\frac{\pi}{2}-->\int_{0}^{\infty} \frac{1}{1+\frac{x}{a_i}^2}d\frac{x}{a_i}=\frac{\pi}{2}\) 可以推得 我们的…
2019年牛客多校第一场B题 Integration 题意 给出一个公式,求值 思路 明显的化简公式题,公式是分母连乘形式,这个时候要想到拆分,那如何拆分母呢,自然是裂项,此时有很多项裂项,我们不妨从小数据尝试,经过搬砖搬到3-4个连乘式相消的时候,就可以发现规律了!(耐心耐心耐心,草稿纸书写规范) 公式化简过程见(懒狗是这样):https://blog.csdn.net/dillonh/article/details/96445321 #include<bits/stdc++.h> #def…
2019HDU多校第一场1001 BLANK (DP) 题意:构造一个长度为n(n<=10)的序列,其中的值域为{0,1,2,3}存在m个限制条件,表示为 l r x意义为[L,R]区间里最多能有x个不同的数字,计算序列构造方案数 思路 1.首先考虑最暴力的做法,直接dfs暴力构造,碰到区间的右端点就开始判断当前构造是否满足,如果不满足就回溯,很显然,复杂度爆炸O(4^n) 2.考虑怎么优化暴力算法,从(n<=100)不难猜出这是一个dp,考虑这种字符串构造形式的dp,肯定是一位一位有序构造,…
Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1411    Accepted Submission(s): 439 Problem Description Chiaki has an array of n positive integers. You are told some facts about…
抱着可能杭电的多校1比牛客的多校1更恐怖的想法 看到三道签到题 幸福的都快哭出来了好吗 1001  Maximum Multiple(hdoj 6298) 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6298 签到题 但是有考了一定的思维 清北大佬两分钟写出来真的让人望尘莫及啊…… 题意是给定一个n 可以由三个正整数相加得到 同时这三个正整数又是要被n可以整除 求这三个整数相乘的最大值 如果没有 则输出-1 既然题目没有要求三个正整数不能相等 则可以…
第一场多校就打的这么惨,只能说自己太菜了,还需继续努力啊- 题目链接: GYM链接:https://codeforces.com/gym/101933 CSU链接:http://acm.csu.edu.cn:20080/csuoj/contest/problemset?cid=2178 A题: 题意: 有n只青蛙掉到了井里,然后可以靠叠罗汉和向上跳逃离水井,每只青蛙有三个属性分别为跳高值,体重(承重能力),身高,问最多能有多少只青蛙能够逃离水井. 思路: 因为每只青蛙的承重能力是有限的,因此我们…
HDU6578链接 题意 有一串字符串,仅由 {0,1,2,3}\{0, 1, 2, 3\}{0,1,2,3} 组成,长度为 nnn,同时满足 mmm 个条件.每个条件由三个整数组成:l.r.xl.r.xl.r.x 表示在这个字符串的 [l,r][l, r][l,r] 这个区间内,有且仅有 xxx 个不同的字符,求问可能的组合有多少种(mod 998244353) 分析题意 因为前几天刚刚写了牛客暑期多校第二场,其中有一道题:ABBA(我的题解)感觉有点接近,所以第一想法就是dp了.但是这道题的…
给你一段长度为n的区间,然后在给你m个小区间,要求这m个小区间里的每个人都不能重复,请你输出字典序最小的方案. 我们可以开一个suf数组,表示我到我后面的不出现重复数字的区间至少需要到达的位置.所以对于给出的每一个l,r,suf[l] = max(suf[l], r): 处理好suf数组,在开一个容器,用来表示我现在可以用的数字集合 然后用L变量表示我上一个到达的位置,R变量表示我现在到达的位置. 然后对头扫到尾,如果我现在已经到达的位置比目前 i 的约束条件的位置来的大,说明这个 i 地方我已…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4864 解题报告:有n台机器用来完成m个任务,每个任务有一个难度值和一个需要完成的时间,每台机器有一个可以工作的最长时间和一个可以完成的任务的难度的最大值, 一台机器能完成一个任务的条件是这台机器的最长工作时间和能完成任务的难度值必须都大于等于这个任务,而且一台机器最多完成一个任务,假设一个任务的时间为t,难度值为x,那么完成这个任务可以赚到的钱 money = 500 * t + 2 * x; 现在…
Bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6301 队友AC的,没怎么看 #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<cmath> #include<queue> #include<functional> using namespac…
题目描述 Two arrays u and v each with m distinct elements are called equivalent if and only if RMQ(u,l,r)=RMQ(v,l,r) for all 1≤l≤r≤m1≤l≤r≤m where RMQ(w,l,r) denotes the index of the minimum element among wl,wl+1,-,wr. Since the array contains distinct el…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5294   题意:给你n个墓室,m条路径,一个人在1号墓室(起点),另一个人在n号墓室(终点),起点的那个人只有通过最短路径才能追上终点的那个人,而终点的那个人能切断任意路径. 第一问——终点那人要使起点那人不能追上的情况下可以切的最少的路径数,输出最少的路径数 第二问——起点那人能追上终点那人的情况下,终点那人能切断的最多的路径数,输出最多的路径数 思路:要使起点那人无法追上,只要使他的最短路径不存…
题目链接 题意 : 给你两个表格,第一个表格是三种天气下出现四种湿度的可能性.第二个表格是,昨天出现的三种天气下,今天出现三种天气的可能性.然后给你这几天的湿度,告诉你第一天出现三种天气的可能性,让你求出最可能出现的天气序列 . 思路 : 定义第 i 天叶子湿度为hum[i].第 i 天,天气为 j 的最大概率为dp[i][j].wealea[i][j]表示天气为 i 叶子为j的概率,weawea[i][j]表示今天天气为 i 明天天气为j的概率,st[i]表示第一天天气为i的概率.pre[i]…
题目链接 题意 :小女孩注册了两个比赛的帐号,初始分值都为0,每做一次比赛如果排名在前两百名,rating涨50,否则降100,告诉你她每次比赛在前两百名的概率p,如果她每次做题都用两个账号中分数低的那个去做,问她最终有一个账号达到1000分需要做的比赛的次数的期望值. 思路 :可以直接用公式推出来用DP做,也可以列出210个方程组用高斯消元去做. (1)DP1:离散化.因为50,100,1000都是50的倍数,所以就看作1,2,20.这样做起来比较方便. 定义dp[i]为从 i 分数到达i+1…
1001 思路:打表可以发现只有3|n 和 4|n 的情况有解,判一下就好啦. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define pii pair<int, int> #define y1 skldjfskldjg #define y2 skldfjsklejg using namespace std; ; ; co…
Maximum Multiple Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3241    Accepted Submission(s): 1344 Problem Description Given an integer n, Chiaki would like to find three positive integers x,…
一.题意 随机给你一堆牌(标准扑克牌),之后让你按照: 第一优先规则:所有相同花色的在一起 第二优先规则:所有相同花色的必须按照升序或者降序排列 问,你最少要拿出多少张牌插入到其他的地方以维持这个状况? 二.做法 考虑,4种花色,因而排列有A44(24种): 考虑升降续组合,为2^4=16种 因而所有合法最终状态共有24*16种状态,因而可以进行枚举. 对于变化次数有,n-LCS(i); 故,枚举取最大即可. 最大时间复杂度为:52*52+14*16*52*log52; (因为最大卡牌数量为52…
Equivalent Prefixes 传送门 解题思路 先用单调栈求出两个序列中每一个数左边第一个小于自己的数的下标, 存入a[], b[].然后按照1~n的顺序循环,比较 a[i]和b[i]是否相等,如果不相等则退出循环,此时最后一个相等的就是答案. 假设前1 ~ n-1已经满足了条件,此时判断1 ~ n是否可行,就是判断l~n是否都成立,如果a[n] < b[n], 那么当l=b[n]时,序列1的RMQ为b[n],序列2的为n,明显不成立,a[n] > b[n]同理.当a[n]等于b[n…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题目大意:长度为\(n\)的数组要求分别填入\(\{0,1,2,3\}\)四个数中的任意一个,有\(m\)个限制条件:区间\([l,r]\)中出现的数字种数恰好为\(x\),求方案数 题解:f[i][j][k][cur]表示四个数最后出现的位置经过排序后为\(i,j,k,cur\)的方案数,暴力转移即可,其中最后一维需要滚动数组节省空间 对于限制条件可以用vector存下来,每次循环对右端点为…
题意: 有个打字机,在当前字符串后新加一个字花费p,把当前字符串的一个连续子串拷贝到当前字符串的末尾花费q,给定一个字符串,求用打字机打出这个字符串的最小花费. 题解: 容易想到用dp 记dp[i]为打出前i个字符的最小花费,对于每个i,令 A=dp[i-1]+p B=dp[j]+q 其中j为最小的,使得s[j+1~i]是s[1~j]的连续子串的值 其实就是,把这个字符串咔嚓切一刀,看后面的部分是不是前面部分的子串,如果不是,就把切的地方向后挪,前面的部分是原串,后面的部分是模式串. dp[i]…
题意: 有一个n*m的矩阵,左右可以随便走,但只能在每一行的中点往下走,每走一格花费时间1. 现在这个矩阵里放了k瓶牛奶,第i个牛奶喝下去需要ti时间 起点是(1,1) 对于每个i∈[1,k],问喝掉k瓶牛奶花费的最小时间 题解: 首先离散化行. 记第 i 行的牛奶数为 ci,则对于第 i 行,求出在行内向左/右走喝 1,2,...,ci 包牛奶并 且回到/不回到行中点的最短时间,然后合并背包求出在第 i 行内喝 1,2,...,ci 包牛奶并且 回到/不回到行中点的最短时间,然后和在前 i−1…
A.Equivalent Prefixes 传送门 题意:给你两个数组,求从第一个元素开始到第p个元素 满足任意区间值最小的元素下标相同的 p的最大值. 题解:我们可以从左往右记录到i为止每个区间的最小值有哪些,因为每个值都是不一样的,对于当前的 i 如果1~i中每个区间最小值数量相同那么下标肯定也会相同,否则记录的值的数量就会不同,我们可以用单调栈记录目前为止每个区间的“最小值”的下标,栈里面元素数量不同时肯定不满足条件. 代码: #include <bits/stdc++.h> #defi…
Equivalent Prefixes 单调栈(笛卡尔树) 题意: 给出两个数组u,v,每个数组都有n个不同的元素,RMQ(u,l,r)表示u数组中[l,r]区间里面的最小值标号是多少,求一个最大的m,使得两个数组中[1,m]任一区间的最小值标号都相同 分析 想到最小值标号并且是在一维数组中,就要很自然地想到单调栈,同时笛卡尔树和单调栈密不可分,所以衍生了两种解法. 解法1:单调栈 从左到右扫,如果左边界相同,则继续往左扫,直到找到最大值. 证明reference:https://www.cnb…
题目链接 题意 : m张牌,可以翻n次,每次翻xi张牌,问最后能得到多少种形态. 思路 :0定义为反面,1定义为正面,(一开始都是反), 对于每次翻牌操作,我们定义两个边界lb,rb,代表每次中1最少时最少的个数,rb代表1最多时的个数.一张牌翻两次和两张牌翻一次 得到的奇偶性相同,所以结果中lb和最多的rb的奇偶性相同.如果找到了lb和rb,那么,介于这两个数之间且与这两个数奇偶性相同的数均可取到,然后在这个区间内求组合数相加(若lb=3,rb=7,则3,5,7这些情况都能取到,也就是说最后的…