C. Ayoub and Lost Array cf dp】的更多相关文章

C. Ayoub and Lost Array time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Ayoub had an array aa of integers of size nn and this array had two interesting properties: All the integers in the a…
传送门:http://codeforces.com/contest/1105/problem/C C. Ayoub and Lost Array time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Ayoub had an array aa of integers of size nn and this array had two…
<题目链接> 题目大意: 有一个长度为 n 的数列的未知数列,数列的每一个数的值都在区间 [l,r]  的范围内.现在问你能够构成多少个这样的数组,使得数组内的所有数的和能够被 3 整除. 解题分析: 类似于这种数据量大的计数问题,要不就是数学推公式,要不就是dp. 根据所有数之和能被3整除的性质,我们将所有数用%3的余数表示,推出状态转移方程:$$ dp[i][j+k]=dp[i-1][j]*num[k]  $$ $dp[i][j]$表示:前$i$项之和余$j$的方案数. 这篇博客讲解的比较…
(又是被队友带着上分的一场--) 题目链接:http://codeforces.com/contest/1105/problem/C 题目大意:给你n,l,r.每一个数都是在l,r范围之内,然后问你这n个数形成的序列能够被3整除. 具体思路:我们先计算出l,r区间内整除3之后是0的个数,是1的个数,是2的个数,然后我们从第一位循环到第n位,第i位之前余数是0的情况等于前一位余数是1的情况*(l到r区间内余数是2的情况)+前一位余数是0的情况*(l到r区间内余数是0的情况)+前一位余数是2的情况*…
time limit per test: 1 second memory limit per test: 256 megabytes input: standard input output: standard output Ayoub had an array aaa of integers of size nnn and this array had two interesting properties: All the integers in the array were between…
CF1105C Ayoub and Lost Array 题意:一个整数数组,满足: 1. 长度为n 2. 所有元素都在[l, r]范围内 3. 所有元素的和能被3整除给出n, l, r (1 ≤ n ≤ 2*10^5,1 ≤ l ≤ r ≤ 10^9)请找出符合条件的数组的个数,答案对 10^9 + 7取模 首先我们要处理出[l, r]中对3取模得结果分别为0,1,2的数的个数,在一个合乎要求的数组中,结果为1和2的数的个数必然一样,由此就可以很方便地得到所有可能的组合的个数.但新的问题来了,…
一.题面 链接 二.分析 关于这题,两个点. 第一个点,是需要能够分析出$[L,R]$区间的3的余数的个数. 首先,可以得到,$[L,R]$区间内共有$(R-L+1)$个数. 设定余数为0,1,2的为一组,那么1,2,0和2,0,1也是一组.那么可以肯定能得到$(R-L+1)/3$组. 那么还余下了$(R-L+1)%3$个数.这里就需要考虑从$L$开始往右移$(R-L+1)%3$个数,分析这几个数的余数即可.因为这几个数后的数肯定是能分成3个一组的. 第二个点,用DP的思维去求解. 区间内的数能…
D. Array GCD 题目连接: http://codeforces.com/contest/624/problem/D Description You are given array ai of length n. You may consecutively apply two operations to this array: remove some subsegment (continuous subsequence) of length m < n and pay for it m·…
I. Beautiful Array 2017- BUPT Collegiate Programming Contest - sync 时间限制 1000 ms 内存限制 65536 KB 题目描述 We call an array "beautiful array of level L", when all its adjacent number pairs have common factor greater than or equal to L. Obviously, a &qu…
题目链接: Bomber Man wants to bomb an Array. Time Limit: 4000/2000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 382    Accepted Submission(s): 114 Problem Description Given an array and some positions where to plant…
wyq说刚入门oi 或是遇到瓶颈的时候就刷DP吧,虽然觉得这么刷CF题有点浪费,但是还是挺爽的,按照solved排序做的,前面的题都挺水的(忘记记录了混蛋),就不写了,从5C开始写解题 CF5 C. Longest Regular Bracket Sequence:题目大意,给一个括号序列,让你求最长的合法扩号子串,以及最长子串出现的次数 思路:开个栈乱搞,当遇到右括号的时候这右括号开始最长的长度应该是到左括号的长度加上左括号左边一个字符的最长长度…
CF115DBeautiful Array 题目大意:给一个有n个元素的a数组,可以选择其中一个区间的所有数都乘上x,也可以不选,求最大子序列和. 如果没有前面的操作,就是只求最大子序列和,我们都知道就一个贪心的思路,当目前序列的和<0了,我们就当它为0,因为它对后面的序列只有负的贡献,完全不会使和增大,只会使和减少.所以我们从左往右,和从右往左,分别处理出没有乘x的最大子序列和maxl和maxr,这样的话,如果我们在区间[l,r]内乘x,那么相应的答案就是(sum[r]-sum[l-1])*x…
前言 从后往前刷 update 新增 \(\text{\color{red}{Mark}}\) 标记功能,有一定难度的题标记为 \(\text{\color{red}{红}}\) 色. 题单 (刷过的题就会登记在上面) 2B The least round way 只有 \(2^a*5^b\) 尾随'\(0\)'的个数为 \(\text{min}(a,b)\),dp一遍就好了 4D Mysterious Present 5C Longest Regular Bracket Sequence [C…
Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some math tasks to practice. There is one of them: Yuta has an array A of length n,and the ith element of A is equal to the sum of all dig…
]Edward has an array A with N integers. He defines the beauty of an array as the summation of all distinct integers in the array. Now Edward wants to know the summation of the beauty of all contiguous subarray of the array A. Input There are multiple…
题意:bc 77 div1 1003(中文题面) 分析:先不考虑将结果乘以 1e6. 设 dp[i] 为从前 i 个格子的状态可以获得的最大破坏指数. 那么我们可以枚举每个炸弹,该炸弹向左延伸的距离和向又延伸的距离. 设第 i 个炸弹破坏区间为 [l, r], 则 dp[r] = dp[l - 1] + log2(r - l + 1).答案就是 dp[n - 1].不要忘记最后要向下取整. 注:我对官方题解稍作解释,dp[i]代表前i个格子可以获得的最大破坏指数 但是更新的时候,需要注意,假设有…
题目链接:pid=5280">传送门 题意: 给定一个长度为n的序列,和一个改动的值p,必须从原序列中选一个位置改动成p, 求改动后的区间和的最大值. 分析: 枚举位置+最大区间和. 复杂度O(n^2); 代码例如以下: #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; typedef long…
题目:https://codeforces.com/contest/1155/problem/D 题意:给你n,x,一个n个数的序列,你可以选择一段区间,区间的数都乘以x,然后求出最大字段和 思路: x正数的时候我们就是求出最大字段和然后乘以x即可 x为负数时,我们可以把一段负数乘以x,然后再与之前的正数连接,求出最大字段和,我们想一下 首先并不是直接求出最小字段和就可以的,给出一组样例 10 -1 0 -10 -10 -10 40 -10 -10 20 0 0 答案应该是80,而像上面的做法是…
链接 [https://codeforces.com/contest/1105/problem/C] 题意 给你n,表示数组长度,元素的值是l到r,问有多少种方案使得所有元素和整除3 分析 思维dp,看代码吧 代码 #include<bits/stdc++.h> using namespace std; #define ll long long const ll mod=1e9+7; const int N=2e5+10; ll dp[N][3];//dp[i][j]表示l,r这个区间内i个数…
题意:N,K,L,以及给定长度为N的序列,表示其对应的颜色,-1表示还没有涂色,现在让你去涂色,使得最后没有大于等于L的连续的同色的情况. 思路:我们用dp[i][j]表示第i个位置颜色为j的合法方案数,用sum[i]表示dp[i][1]+dp[i][2]+...dp[i][k]. 那么a[i]==j或者-1时,dp[i][j]=sum[i-1]-x.然后我们考虑到可能有不合法的情况x,当且仅当前面有长度为L的序列颜色为j或者-1时,其数量为sum[i-L]-sum[i-L][j],减去后面这个…
Say you have an array for which the ith element is the price of a given stock on day i. If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit. 思路:注…
Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram. Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3]. The largest…
题意:给出一个数列,可以进行一种操作将某一个前缀除去他们的gcd,有一个函数f(x),f(1) = 0 , f(x) = f(x/p)+1,f(x) = f(x/p)-1(p是坏素数), 求 sum(f[a[i]]) 的最大值. 析:因为f(1) = 0,否则如果是好素数,那么就加一,如果是坏素数就减一,很明显每个数 f(a[i]) 的值就是好素数的数目,送去坏素数的数目, 然后求总的和,这样可以预处理出所有的 gcd,好素数的个数,坏素数的个数,然后dp[i] 表示 sum(f(a[i]))…
链接:https://codeforces.com/contest/1105/problem/C 题意: 给n,l,r. 一个n长的数组每个位置可以填区间l-r的值. 有多少种填法,使得数组每个位置相加的和是3的倍数 思路: 赛后看代码都看不懂的题. dp, 从1个数组扩展到n个数组, dp[i][j]是加上第i个数组后,分别余0,1,2的个数. 余0则是,i-1余0*自己余0+(i-1余1*自己余2)+(i-1余2*自己余1) 剩下同理 代码: #include <bits/stdc++.h>…
题目链接:http://codeforces.com/contest/361/problem/D 题意:最多可以修改K次数字,每次修改一个数字变成任意值,C=max(a[i+1]-a[i]):求操作之后最小的C. 题解:由于n和k比较小其实可以考虑一下区间dp,但是如果区间dp要求的话估计是要3维的显然会炸掉. 于是可以考虑一下二分一下结果c的值,为什么要考虑二分呢?主要是由于c的值与修改的次数是成正比的 显然改的越多c值肯定越少,所以可以二分.然后就是如何判断是否满足条件了,这里要用到dp,设…
D. Beautiful Array You are given an array aa consisting of nn integers. Beauty of array is the maximum sum of some consecutive subarray of this array (this subarray may be empty). For example, the beauty of the array [10, -5, 10, -4, 1] is 15, and th…
题意: 长为 n,由 l ~ r 中的数组成,其和模 3 为 0 的数组数目. 思路: dp[ i ][ j ] 为长为 i,模 3 为 j 的数组数目. #include <bits/stdc++.h> using namespace std; const int M=220000; const int mod=1e9+7; long long dp[M][3]; int main() { int n,l,r;cin>>n>>l>>r; for(int i…
题面: 传送门 题目描述: 题意很简单:1.数组中的所有整数都在区间[l, r],2.所有元素之和能被3整除.现在知道这个数组的大小,l和r,问:按照题目的要求组成的数组一共有多少种可能.   题目分析: 这道题应该是一道常见的用dp来解决计数的问题. 1.如果忽略所有元素之和能被3整除,那么,按照正常的想法答案肯定是:(r-l+1)n.但是题目多了所有元素之和能被3整除,看似难度大了很多.其实,我们可以分析一下:忽略所有元素之和能被3整除,答案是怎样想出来的:每一个"位"上都有(r-…
题目大意就是给长度为 n 一个数列,有 n 每次删除,每一次删除第 i 个位置上的数,求每一次删除后剩余不连续数列的最大区间和. 输入样例 4 1 3 2 5 3 4 1 2 输出样例 5 4 3 0 第二行是原来的数列,第三行是删除第 i 个数. 这道题的正解是用并查集来做.要将删除的顺序存下来,并倒序操作,这样就相当于每一次加上第 i 数.然后判断加上的数的左右两边是否有数,有就合并,并尝试用合并的新的区间和更新答案.对了,答案也要存下来,再倒序输出,才是真正的答案. #include<cs…
简单DP i.May I ask you for a dance(体舞课软广植入) 这题的状态转移方程为:dp[i][j]=max(dp[i-1][j-1]+a[i][j],dp[i][j-1]);(i<=j) 方法1:预处理:将i==j的情况提取出来,因为当i==j的时候,序列顺序是固定的,只能从1选到i(感谢zzdl) 方法2:将i>=j的情况全部赋值为-inf,这样在选取的时候就能够保证i>=j不会被选取 方法3:好感度可能为负值,范围为-100~100:因为dp初始化为0,所以可…