Codeforces
文章平均质量分 72
saucyJack
外科
展开
-
Codeforces Round #343 (Div. 2) C. Famil Door and Brackets(DP)
比赛期间有想到是dp,但是并没有写出状态转移方程..只好去看了一下网上的题解 dp[i][j]表示前缀为i个字符且左括号数-右括号数j的最优解。 则当j==0时,dp[i][j]+=dp[i-1][j+1]; 当j>=0时,dp[i][j]+=dp[i-1][j+1]+dp[i-1][j-1]; 先计算出字符串s的平衡度S,然后枚举p串的平衡度。 p串从左向右看,q串从右向左看。 当p原创 2016-03-02 15:04:25 · 198 阅读 · 0 评论 -
Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) ABCD
传送门:http://codeforces.com/contest/673 A: #include using namespace std; typedef __int64 ll; const int INF=0x3f3f3f3f; const int maxn=200005; int T,n,m; int a[maxn]; int main(){ while(~scanf("原创 2016-05-08 15:06:21 · 360 阅读 · 0 评论 -
Yandex.Algorithm 2011 Round 2 D. Powerful array(莫队算法)
题意:给出一个由n个正整数形成的数组,t次询问,每次询问一个区间[l,r]内所有ks^2*s的和,ks为数s在区间内出现的次数。 莫队算法讲解传送门:莫队算法详解 个人觉得这个pdf讲得还是比较容易懂的,内附模版,修改一下add和remove酒很容易可以过这道题了。 另外,需要注明的是,用__int64开数组会爆内存,用longlong才可以,表示很无语。 #include #inclu原创 2016-04-26 16:11:13 · 329 阅读 · 0 评论 -
Codeforces Round #340 (Div. 2)E - XOR and Favorite Number(Mo's algorithm)
题目链接:http://codeforces.com/contest/617/problem/E 题意:有一个大小为n的数组,m次询问,查询区间[l,r]中点对(i,j)满足l 思路:利用xor的性质,很容易得到sum[i-1]=sum[j]^k,所以cnt[sum[i-1]]=cnt[sum[j]^k],我们只需要纪录sum[j]^k的数量即可。不过对于左边界,要注意先进行cnt--,因为一原创 2016-04-26 21:17:18 · 235 阅读 · 0 评论 -
Codeforces Round #350 (Div. 2) ABCDE
传送门:http://codeforces.com/contest/670 A(写的很啰嗦...): #include using namespace std; typedef long long ll; const int INF=0x3f3f3f3f; const int maxn=1000005; int T,n,m; int main(){ while(~scanf("原创 2016-05-06 19:59:45 · 583 阅读 · 0 评论 -
Codeforces Round #353 (Div. 2) ABCD
传送门:http://codeforces.com/contest/675 A: #include #include #include #include #include #include using namespace std; const int INF=0x3f3f3f3f; const int maxn=30; int T,n; int a,b,c; int m原创 2016-05-17 23:30:25 · 211 阅读 · 0 评论 -
Codeforces Round #352 (Div. 2) ABCD
传送门:http://codeforces.com/contest/672 A: 数据太小,直接打表过... #include using namespace std; typedef __int64 ll; const int INF=0x3f3f3f3f; const int maxn=10005; int T,n,m; string str="123456789101112原创 2016-05-12 13:52:14 · 385 阅读 · 0 评论 -
Codeforces Round #339 (Div. 2)C. Peter and Snow Blower(简单几何)
题意:给出一个圆心,圆心连接一根线,线的另一端是一个多边形,现在将多边形绕着圆心旋转一圈,求扫过的面积。 思路:离圆心最远的点必然是某一个顶点,但是离圆心最近的距离不一定在顶点上,可能是某一边上的某一点。 根据该三角形是否为钝角三角形判断,如果是,则选取两个顶点到圆心最近的距离作为最小距离,否则计算该三角形的高作为最小距离。 计算方式可以根据海伦公式求出面积,然后利用三角形面积公式H=2*s原创 2016-03-08 23:08:08 · 284 阅读 · 0 评论 -
Codeforces Round #338 (Div. 2)B. Longtail Hedgehog(DP)
题意:有n个点,连接点画出刺猬的尾巴和刺,尾巴是由多个严格递增的点组成的线段,从该尾巴上选取一点,该点所连接的其余线段视为刺猬的刺,现在给出m条线段,每条线段连接两个不同的点,求出尾巴长度x刺的长度的最大值。即求某点的长度x深度的最大值。 dp[i]表示到i点最长的长度值len,记录i点的深度d,所求即为max(len x d); 扫描与i相连的且小于i的所有点即可; 状态转移方程即原创 2016-03-09 15:05:12 · 456 阅读 · 0 评论 -
Codeforces Round #340 (Div. 2)C. Watering Flowers(暴力)
题意:在笛卡尔坐标系中给出n个点和两个圆心坐标,以两个点为圆心画圆,要求所画的圆能够覆盖坐标系内所有的点,求r1^2+r2^2的最小值; 思路:先计算出所有点到第一个圆心的距离,然后以此为半径,直接枚举。需要注意的是范围大于int #include #include #include #include #include using namespace std; typedef lon原创 2016-03-07 09:02:46 · 244 阅读 · 0 评论 -
Codeforces Round #341 (Div. 2)C. Wet Shark and Flowers(数学期望)
题意:输入n,p,给出n个区间【l,r】,从每个区间各取一个数,如果相邻两个数的乘积为p的倍数,则每个sharks可以得到1000费用看,求最终的数学期望。 首先计算每个区间选出的数为p的倍数的概率(因为p是质数,所以如果两个数的乘积为p的倍数,则两个数中至少有一个数为p的倍数) 然后计算相邻区间至少有一个数为p的倍数的概率,最后乘以2000即为所求数学期望。 #include #i原创 2016-03-05 13:31:06 · 241 阅读 · 0 评论 -
Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake(线段树+dp)
官方题解: 首先,我们计算每个蛋糕的体积: vi=π∗hi∗r2i 现在,考虑序列 v1,v2,v3,…,vn :问题的答案是这个序列中递增子序列的最大和。我们怎么样解决它? 首先去掉小数,我们可以定义一个新的数组 a1,a2,a3,…,an,ai=vi/π=hi∗r2i 们考虑 dpi是以 ai结束的序列和的最大值且 dpi=max(ai,maxj 这个问题的答案就是: π∗m原创 2016-03-02 22:56:52 · 359 阅读 · 0 评论