首页 > 其他分享 >CF1119E Pavel and Triangles 题解

CF1119E Pavel and Triangles 题解

时间:2022-11-27 18:00:45浏览次数:60  
标签:cnt sticks 题解 CF1119E rg Pavel include Triangles

题面

Pavel and Triangles

题面翻译

给定n种木棍,第i+1种有ai​个,长度为2^i,求用这些木棍可以同时拼出多少个三角形(不可重复使用同一根)

输入第一行n,第二行n个整数a0,a1,a2...an−1

n≤3∗105,0≤ai≤109

输出一个整数表示个数

题目描述

Pavel has several sticks with lengths equal to powers of two.

He has $ a_0 $ sticks of length $ 2^0 = 1 $ , $ a_1 $ sticks of length $ 2^1 = 2 $ , ..., $ a_{n-1} $ sticks of length $ 2^{n-1} $ .

Pavel wants to make the maximum possible number of triangles using these sticks. The triangles should have strictly positive area, each stick can be used in at most one triangle.

It is forbidden to break sticks, and each triangle should consist of exactly three sticks.

Find the maximum possible number of triangles.

分析

易知每一个三角形应该都是由两条相同的边搭配另一条任意边
那么每两条相同的边编为 一组
直接统计组数,如果a[i]为奇数,那么多的一条边作为一条任意边即可
统计完后,没有任意边搭配的组,互相组成就可以了

代码

#include <iostream>
#include <cstdio>
#include <cmath>
#define ll long long
#define rg register
using namespace std;
inline int read(){
    rg int x = 0, f = 1;
    rg char c = getchar();
    while (c < '0' || c > '9') {if (c == '-') f = -1; c = getchar();}
    while (c >= '0' && c <= '9') x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
    return x * f;
}
const int N = 3e5 + 1;
int n;
ll ans, cnt;
int a[N];
inline void init(){
    n = read();
    for (int i(1); i <= n; i++) a[i] = read();
}

inline void doit(){
    for (int i(n); i >= 1; i--){
        cnt += a[i] / 2;
        if (a[i] % 2 && cnt > 0) ++ans, --cnt;
    }
    printf("%lld\n", ans + 2 * cnt / 3);
}

int main(){
    init();
    doit();
    return 0;
}

标签:cnt,sticks,题解,CF1119E,rg,Pavel,include,Triangles
From: https://www.cnblogs.com/cancers/p/16930231.html

相关文章

  • P8867 [noip2022]建造军营 题解
    题意:给定一张图,选择一些点和一些边,使得割断任意没有选的边,被选中的点仍连通。对\(10^9+7\)取膜。\(n\leq5\cdot10^5\)这篇题解会略讲缩边,详讲自己推dp状态与......
  • Oracle的会话进程解锁及问题解决方法
    首先用dba权限的用户登陆数据库1、select*fromv$locked_object查出被锁定的对象,其中object_id是对象的ID,session_id是被锁定对象有sessionID;2、selectobject_name......
  • 『题解』Codeforces 1758B XOR = Average
    Description构造一个\(a\)序列,使\(a_1\oplusa_2\oplusa_3\oplus\cdots\oplusa_n=\dfrac{sum(a)}{n}\)。Solution第一眼看到这道题,我想到的是分情况讨论。......
  • 第十三届蓝桥杯省赛与国赛真题题解大汇总(十四届参赛者必备)
    文章前言  大家好,我是执梗。本文汇总了我写的第十三届蓝桥杯所有省赛真题与国赛真题,会针对每道题打出我自己的难度评星⭐️,也会给出每道题的算法标签,帮助大家更有针对性的去......
  • [报错解决](Error Creating bean with name ‘xxx‘)类问题解决思路
    遇到ErrorCreatingbeanwithname’'这类问题的解决思路错误日志关键部分:org.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbeanwi......
  • 题解 [ABC279F] BOX
    这种合并集合的操作使我们想到并查集,因此我们在并查集算法的基础上进行改造来解决问题。这里使用路径压缩实现的并查集。在记录并查集的父亲数组的同时,我们还需要记录两个......
  • 题解 [ABC279E] Cheating Amidakuji
    曾经总结过一类分治套路,没想到竟然派上用场了。这种每个操作依次缺席的问题可以通过分治来解决。设solve(l,r)表示缺席的操作在\([l,r]\)之间时求出它们的答案。设......
  • ES系列二之常见问题解决
    上篇ES系列一之java端API操作结束后本以为就相安无事了,但生产的问题是层出不穷的;下面我就再记录下近几周遇到的问题以及解决方案;一更新ES信息报错报错信息如下:UseElas......
  • 『题解』UVA 240 Variable Radix Huffman Encoding
    题目传送门题意哈夫曼编码是一种最优编码方法。根据已知源字母表中字符出现的频率,将源字母表中字符编码为目标字母表中字符,最优的意思是编码信息的平均长度最小。在该问......
  • 『题解』UVA 210 Concurrency Simulator
    题目传送门按题意使用队列和双端队列模拟。其中就绪队列使用双端队列,阻止队列使用普通队列。p=58printalockunlockend我们观察一下这几个指令,可以发现......