Bryce1010模板

http://codeforces.com/problemset/problem/1000/B

思路:先用两个数组sumon[]和sumoff[]将亮着的灯和灭的灯累计一下。

然后从左到右扫描插入一个开关,取得到的最大值。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. const int MAXN=1e5+10;
  5. ll sumon[MAXN];
  6. ll sumoff[MAXN];
  7. ll a[MAXN];
  8. int main()
  9. {
  10. ll n,m;
  11. cin>>n>>m;
  12. int i;
  13. for(i=1;i<=n;i++)
  14. {
  15. cin>>a[i];
  16. if(i&1)
  17. {
  18. sumon[i]=sumon[i-2]+a[i]-a[i-1];
  19. sumoff[i]=sumoff[i-1];
  20. //cout<<"on:"<<sumon[i];
  21. }
  22. else
  23. {
  24. sumoff[i]=sumoff[i-2]+a[i]-a[i-1];
  25. sumon[i]=sumon[i-1];
  26. //cout<<"off:"<<sumoff[i];
  27. }
  28. }
  29. //i++;
  30. if(n&1)
  31. {
  32. sumoff[i]=sumoff[i-2]+m-a[i-1];
  33. sumon[i]=sumon[i-1];
  34. //cout<<"i-2"<<sumoff[i-2];
  35. //cout<<"off:"<<sumoff[i];
  36. }
  37. else
  38. {
  39. sumon[i]=sumon[i-2]+m-a[i-1];
  40. sumoff[i]=sumoff[i-1];
  41. //cout<<"on:"<<sumon[i];
  42. }
  43. //cout<<endl;
  44. ll maxlit=-1;
  45. ll lit;
  46. maxlit=sumon[n+1];
  47. for(i=1;i<=n+1;i++)
  48. {
  49. lit=-1;
  50. if(i&1)
  51. {
  52. lit=sumon[i]-1+sumoff[n+1]-sumoff[i-1];
  53. maxlit=max(maxlit,lit);
  54. }
  55. else
  56. {
  57. lit=sumon[i-1]+sumoff[n+1]-sumoff[i-1]-1;
  58. maxlit=max(lit,maxlit);
  59. }
  60. }
  61. cout<<maxlit<<endl;
  62. return 0;
  63. }

Educational Codeforces Round 46 (Rated for Div. 2) B. Light It Up的更多相关文章

  1. Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses

    Bryce1010模板 http://codeforces.com/contest/1000/problem/E 题意: 给一个无向图,求图的最长直径. 思路:对无向图缩点以后,求图的最长直径 #in ...

  2. Educational Codeforces Round 46 (Rated for Div. 2) C. Covered Points Count

    Bryce1010模板 http://codeforces.com/problemset/problem/1000/C 题意:问你从[l,r]区间的被多少条线覆盖,列出所有答案. 思路:类似括号匹配的 ...

  3. Educational Codeforces Round 46 (Rated for Div. 2) A. Codehorses T-shirts

    Bryce1010模板 http://codeforces.com/problemset/problem/1000/A 题意: 问你将一种类型的衣服转换成另一种的最小次数. #include<b ...

  4. Educational Codeforces Round 46 (Rated for Div. 2)

    A - Codehorses T-shirts 思路:有相同抵消,没有相同的对答案+1 #include<bits/stdc++.h> #define LL long long #defi ...

  5. Educational Codeforces Round 46 (Rated for Div. 2) D. Yet Another Problem On a Subsequence

    这个题是dp, dp[i]代表以i开始的符合要求的字符串数 j是我们列举出的i之后一个字符串的开始地址,这里的C是组合数 dp[i] += C(j - i - 1, A[i]] )* dp[j]; # ...

  6. Educational Codeforces Round 46 (Rated for Div. 2) D

    dp[i]表示一定包含第I个点的好的子序列个数,那么最终答案就是求dp[0] + dp[1] + .... + dp[n-1] 最终的子序列被分成了很多块,因此很明显我们枚举第一块,第一块和剩下的再去 ...

  7. Educational Codeforces Round 72 (Rated for Div. 2)-D. Coloring Edges-拓扑排序

    Educational Codeforces Round 72 (Rated for Div. 2)-D. Coloring Edges-拓扑排序 [Problem Description] ​ 给你 ...

  8. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

  9. Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...

随机推荐

  1. 【C语言】统计数字在排序数组中出现的次数

    //数字在排序数组中出现的次数. //统计一个数字在排序数组中出现的次数.比如:排序数组{1,2,3,3,3,3,4,5}和数字3,因为3出现了4次,因此输出4. #include <stdio ...

  2. 跨平台C++:(前言)正确打开C++的方式

    接触C++已经十五年了...但是对于C++而言,我至今是个门外汉,不是谦虚,而是确实不得其门而入. 历程是这样的—— 大学考研要考C++,就自学了.研没考上,C++算是学了,准确的说是C++的语法,以 ...

  3. nodejs什么值得买自动签到自动评论定时任务

    本项目是基于nodejs开发,实现的功能是,什么值得买自动签到,自动评论功能,自动发邮件,支持多人多账号运行 目的是为了,解放双手,轻松获取什么值得买的经验和积分,得到更高的等级,从而突破很会员等级限 ...

  4. CodeForces 24D Broken robot(期望+高斯消元)

    CodeForces 24D Broken robot 大致题意:你有一个n行m列的矩形板,有一个机器人在开始在第i行第j列,它每一步会随机从可以选择的方案里任选一个(向下走一格,向左走一格,向右走一 ...

  5. jquery和CSS3带倒影的3D万花筒旋转动画特效效果演示

    <!DOCTYPE html> <html> <head> <title></title> <meta charset='utf-8' ...

  6. hihoCoder 1582 Territorial Dispute 【凸包】(ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)

    #1582 : Territorial Dispute 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 In 2333, the C++ Empire and the Ja ...

  7. HDU 2746 Cyclic Nacklace

    Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  8. Bootloader与Kernel间参数传递机制 taglist【转】

    本文转载自:http://blog.csdn.net/tommy_wxie/article/details/9187821 Tag list被用来在bootloader和Linux kernel 之间 ...

  9. 哈希表---线性探测再散列(hash)

    //哈希表---线性探测再散列 #include <iostream> #include <string> #include <stdio.h> #include ...

  10. 「LuoguP1145」 约瑟夫(打表

    Description n 个人站成一圈,从某个人开始数数,每次数到 m 的人就被杀掉,然后下一个人重新开始数,直到最后只剩一个人.现在有一圈人, k 个好人站在一起, k 个坏人站在一起.从第一个好 ...