[2016-04-17][Gym][100947][C][Rotate It !!]

  • 时间:2016-04-17 16:35:01 星期日

  • 题目编号:[2016-04-17][Gym][100947][C][Rotate It !!]

  • 题目大意:给定一列数字,从第一个开始取,每隔一个数字取一个数字,有一个操作就是把第一个数字放在最后,可以无限次操作,问最大的取值是多少

  • 分析:

    • 可以看成一个环,每个环,可以从每个环开始取,问最大的取值是多少
    • 数字是偶数个,很简单,直接就是求奇数位置和偶数位置之和的最大值
    • 数字是奇数个,
    • 分析可以知道,一定有相邻的两个数字在选中的序列中,那么只需要枚举相邻两个序列,计算最大值即可
      • 比如样例 1 5 3 2 4
      • 刚开始 1 4 相连,然后是 15,一次类推,
      • 如果只是看样例的格式,即1 5 3 2 4 来看,设相邻两个数字是i,j,
      • 假设i在奇数位置,那么答案就变成i前面奇数位置之和 加上j后面偶数位置之和
      • 偶数同理
  • 遇到的问题:

  1. #include<cstdio>
  2. #include<algorithm>
  3. using namespace std;
  4. const int maxn = 1E4 + 10;
  5. long long a[maxn],b[maxn];
  6. int main(){
  7. int t;
  8. scanf("%d",&t);
  9. while(t--){
  10. int n,tmp;
  11. long long s[2] = {0};
  12. scanf("%d",&n);
  13. if(!(n&1)){
  14. for(int i = 0; i < n ; ++i){
  15. scanf("%d",&tmp);
  16. s[i&1] += tmp;
  17. }
  18. printf("%I64d\n",max(s[0],s[1]));
  19. }else {
  20. a[0] = b[0] = 0;
  21. for(int i = 1 ; i <= n; ++i){
  22. scanf("%d",&tmp);
  23. if(i & 1){
  24. a[i] = a[i - 1] + tmp;
  25. b[i] = b[i - 1];
  26. }else {
  27. a[i] = a[i - 1];
  28. b[i] = b[i - 1] + tmp;
  29. }
  30. }
  31. long long ans = -1E4 * 1E9;
  32. for(int i = 0 ; i < n ; ++i){
  33. if(i & 1){
  34. ans = max(ans , a[i] + b[n] - b[i]);
  35. }
  36. else{
  37. ans = max(ans , b[i] + a[n] - a[i]);
  38. }
  39. }
  40. printf("%I64d\n",ans);
  41. }
  42. }
  43. return 0;
  44. }

来自为知笔记(Wiz)

时间: 2024-10-01 17:12:59

[2016-04-17][Gym][100947][C][Rotate It !!]的相关文章

分布式技术一周技术动态 2016.04.17

分布式系统实践 1. 架构的本质是管理复杂性,微服务本身也是架构演化的结果  http://mp.weixin.qq.com/s?__biz=MzA5Nzc4OTA1Mw==&mid=411129391&idx=1&sn=ebf06fb5cc4a5f57f86341ba4114cab8&scene=0#wechat_redirect 要点: 这篇文章介绍了携程, netflix和SoundCloud等知名互联网公司的微服务架构实践, 总结了微服务架构的演化本质上是管理架构复

ACM-南京理工大学第八届程序设计竞赛-网络赛(2016.04.17)

A.偷吃糖果Time Limit: 1000Ms Memory Limit: 65536KB Description小鱼喜欢吃糖果.他有两盒糖果,两盒糖果分别仅由小写字母组成的字符串s和字符串t构成.其中'a'到'z'表示具体的某种糖果类别.他原本打算送给他喜欢的女生,但是要送给女孩子的话两盒糖果不能有差别(即字符串s和t完全相同).所以,他决定偷吃几块,他吃糖果的策略是每次选出一盒糖果中两个连续的同种类别的糖果,然后吃掉其中一块.该策略可以使用多次.例如一盒糖果是'rrrjj',他可以把这盒糖

2016/04/17

package com.wode; import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Random; import javax.activation.FileDataSource;/*** *  * @author Administrator *Random类     Math使用方法  以及反射机制 */publ

[2016-04-17][Gym][100947][I][What a Mess]

时间:2016-04-18 17:36:12 星期一 题目编号:[2016-04-17][Gym][100947][I][What a Mess] 题目大意:给定n个数字,问成整除关系的 (ai,aj)(ai,aj)有多少对? 分析: 题目n范围是 1~1E6,不能用o(n2)o(n2)方法暴力搞 使用筛法,把每个数字的倍数都筛选一遍,然后每个数字都可以知道前面有多少个自己的约数,从1~maxai扫一遍,计算相应的组合数 还有自己和自己组合的情况 遇到的问题: 每个数字可能出现多次, 更新约数个

[2016-04-17][Gym][100947][F][black-white]

时间:2016-04-17 17:06:43 星期日 题目编号:[2016-04-17][Gym][100947][F][black-white] 题目大意:在一行格子中,有一个白棋和一个黑旗,每次移动一个,给出一个状态,白棋先移动,问最后胜利的人是水 分析: 只要白棋和黑棋始终保持奇数的间隔(即轮到白棋走的时候,黑白间隔奇数个),最后黑棋一定会被逼到角落,然后间隔不断减小(减小之和还是奇数间隔),最后黑棋败 #include<cstdio> using namespace std; int

[野狐行][2016/04/11][群直播系列2][那些年让我们郁闷不已的游戏保护]

最近应广大朋友的建议,增加群内直播系列,主要内容包括不仅限于“辅助行业探讨,内幕揭秘,行业八卦”.每周周末,群内直播系列:1.2016/04/02 第一期下载地址: http://pan.baidu.com/s/1bpnwPeZ 2.2016/04/11 第二期下载地址: http://pan.baidu.com/s/1nvs22xj

KaOS 2016.04 发布,桌面 Linux 发行版

KaOS 2016.04 发布了,KaOS是一份桌面Linux发行,其特色在于最新版本的KDE桌面环境及其他流行的使用Qt工具包的软件程序.它最初基于Arch Linux,但从2013年四月起,开发者们开始创建他们自己的软件包,现在这些软件包可以从KaOS自己的软件仓库里获得.KaOS采用滚动发布开发模 式,并且只面向64位计算机系统. 该版本主要是为了纪念KaOS三周年而发布的,支持Qt 5.6,桌面得到较大的更新, QtWebengine被qupzilla替代作为默认的浏览器,不在需要手动更

分布交互式CosiMate 8.1 2016.04多学科协同仿真计算平台

分布交互式CosiMate 8.1 2016.04多学科协同仿真计算平台 电磁人体天线模型管理分析工具EMCoS Studio 2017 优化工具Keysight 89600 VSA WLA 22.21 5G物联网雷达信号设计 CosiMate技术提供了一种解决方案来克服模拟集成的大规模动态系统的难度.在实际的大型Simulink模型上测量到2到11的潜在加速度.通过传统的分割技术(将全阶模型分解成几个较小的部分)并在单台或多台计算机上进行模拟,实现了模拟时间的显着减少.QQ:16264558

java 时间格式化(2016.04.12 12:32:55)

输入的时间格式如:2016.04.12 12:32:55所示: 想要获取一定格式的日期,时间的方法 1 String startString = "2016.04.25 12:25:44" 2 SimpleDateFormat sf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 3 SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:s