
解析:
显然可以发现,翻转数量为奇数是不影响结果,所以需要反转偶数个连续数字。
考虑贪心,我们每次反转相邻的两个数字,并且累计贡献,如果贡献为0则清空继续累计,并且每次取贡献最大值即可。
- #include
- using namespace std;
- #define int long long
- const int N=2e5+5;
- int t,n,a[N];
- signed main(){
- scanf("%lld",&t);
- while(t--){
- scanf("%lld",&n);
- int sum=0;
- for(int i=1;i<=n;i++){
- scanf("%lld",&a[i]);
- if(i%2) sum+=a[i];
- }
- int p=0,q=0,res=0;
- for(int i=1;i<=n;i++){
- if(i%2&&i
- if(p<0) p=0;
- p+=a[i+1],p-=a[i];
- }
- else if(i%2==0&&i
- if(q<0) q=0;
- q+=a[i],q-=a[i+1];
- }
- res=max(res,max(p,q));
- }
- printf("%lld\n\n",sum+res);
- }
- return 0;
- }
-
相关阅读:
基于MATLAB的数字图像处理(指纹增强)
判断两个DataFrame和array的列(Series)是否相同
关于爬虫中的hook(defineProperty,hook cookies, hook载荷数据,hookXHR)
2.0SpringMVC中报文信息转换器HttpMessageConverter
Vue3+Ts+Vite项目(第十五篇)——tailwindcss安装及使用详解,css原子化如何实现
ES6 拓展(下)
深度学习值过拟合和欠拟合
LeetCode116. Populating Next Right Pointers in Each Node
python的format函数的用法及实例
2023年11月25日小学生古诗文大会复选(复赛)答题操作手册
-
原文地址:https://blog.csdn.net/JungleZRD/article/details/133957334