962D

利用Cesium引擎实现大疆智图B3DM三维模型的高效加载与可视化 本文详细介绍了如何利用Cesium引擎高效加载与可视化大疆智图B3DM三维模型。通过性能优化实战和典型应用场景分析,帮助开发者掌握模型预处理、渲染参数调优及高级功能实现技巧,提升大规模倾斜摄影数据的网页端展示效率。 阅读详情

You are given an array of positive integers. While there are at least two equal elements, we will perform the following operation. We choose the smallest value xx that occurs in the array 22 or more times. Take the first two occurrences of xx in this array (the two leftmost occurrences). Remove the left of these two occurrences, and the right one is replaced by the sum of this two values (that is, 2⋅x2⋅x).

Determine how the array will look after described operations are performed.

For example, consider the given array looks like [3,4,1,2,2,1,1][3,4,1,2,2,1,1]. It will be changed in the following way: [3,4,1,2,2,1,1] → [3,4,2,2,2,1] → [3,4,4,2,1] → [3,8,2,1][3,4,1,2,2,1,1] → [3,4,2,2,2,1] → [3,4,4,2,1] → [3,8,2,1].

If the given array is look like [1,1,3,1,1][1,1,3,1,1] it will be changed in the following way: [1,1,3,1,1] → [2,3,1,1] → [2,3,2] → [3,4].

大致意思就是所有出现次数超过1的元素都只保留第二次出现的,并进行累加,持续进行这个操作,直到所有元素都只出现一次。

开始的时候想用数组的,遍历其中,如果没有重复的就考虑下一个,这样对于某一个i要操作n次,对于所有元素要操作O(n^2),

后来发现,每次要求和,结果可能会变大,所以之前不考虑到元素又要重新去检查,这样复杂度会再次上升,不好。

最后AC方法是用优先队列,队列中存放的是有序二元对(value,index),然后队列的排序方式是value升序,value相同时index

升序,算法操作是,取队首元素,如果和下一个队中元素value相等,意味着在第二个索引处出现了同样的值,我们就要去重了。

#include<iostream>  
#include<stdio.h>  
#include<queue>  
using namespace std;  
//使用优先队列,其中元素类型为pa  
//优先队列的排序根据是value  
//这样的话value小的一定会排在前面  
//每次比较第一个和第二个是否相等  
//如果不相等直接出队  
//如果相等在数组中标记已被删除,然后队列中下一个元素value翻倍  
//只要队列不空,循环此操作  
struct pa  
{  
    long long value;  
    int index;  
  
    bool operator <(const pa& u) const  
    {  
        if(value==u.value)  
            return index > u.index;             //万一两者value相等,要让索引小的删除  
        return value > u.value;  
    }  
};  
//初始化工作  
const int maxn=150000+5;  
//如果元素被删除就改成-1  
long long array[maxn]={0};  
int ans=0;  
  
priority_queue<struct pa> b;  
void delete_same()        
{  
    struct pa u=b.top();         
    b.pop();  
    if(b.empty())  
        return;           
    if(b.top().value==u.value)  
    {  
        //下一个值和他一样,说明有重复  
        struct pa v;  
        v.value=u.value*2;  
        v.index=b.top().index;  
        b.pop();  
        b.push(v);  
        //还得把这个index的值改成-1  
        array[u.index]=-1;  
        array[v.index]*=2;  
        //cout<<u.value<<" has been emerged with "<<u.index<<"and "<<v.index<<endl;  
        ans++;  
    }  
    //如果不相等那就直接出队  
}  
int main()  
{  
    int n;             
    while(scanf("%d",&n)!=EOF){  
    ans=0;  
    for(int i=0;i<n;i++)  
    {  
        scanf("%d",&array[i]);  
        pa newm;  
        newm.value=(long long)array[i];  
        newm.index=i;  
        //cout<<array[i]<<" "<<i<<" is being pushed in"<<endl;  
        b.push(newm);  
    }  
    while(!b.empty())  
    {  
        delete_same();  
    }  
    cout<<n-ans<<endl;  
    for(int i=0;i<n;i++)  
    {  
        if(array[i]>0)  
            cout<<array[i]<<" ";  
    }  
    printf("\n");  
    }  
    return 0;     
}  

安卓7.0+抓包难题:雷电模拟器9.0+Charles系统证书安装全攻略 HTTPS协议通过SSL/TLS加密保障网络通信安全,其核心机制依赖于证书信任链。在Android系统中,自7.0版本起,谷歌收紧了证书信任策略,默认仅信任系统预置的CA证书,这直接导致了传统抓包方法失效。理解这一原理对于移动开发、测试及安全研究至关重要,它揭示了应用层安全策略与系统底层机制的关联。通过将用户证书安装至系统信任区,可以突破此限制,实现HTTPS流量的解密与分析。这一技术在App调试、接口测试、安全审计等场景中具有广泛的应用价值。本文以雷电模拟器9.0和Charles抓包工具为例,详细演示了如 阅读详情

相关推荐

卫星测试科普(三):卫星载荷的核心测试设备探秘

总的说来,卫星芯片与元器件,部组件与单机,整机与子系统,系统与整星的设计、定型、制造、验证、总装、发射、在轨等环节都离不开各种测试场景,对于这些卫星测试场景而言,“射频三大件”与高速数字示波器是构成强大测试系统的基础。卫星通信信号生成:覆盖Ka、Q等波段,具备扫频、脉冲、数字调制、噪声信号、雷达信号、数据链信号、OFDM 等多种信号库,用于测试和验证卫星电子设备的电气性能、频率响应、抗干扰能力等。卫星的通信需要高效、快速地传输大量数据,高速信号的质量至关重要,如果卫星信号不佳,卫星就会出现故障或者隐患。

spwbjss的博客 2317

Codeforces 962D Merge Equals

You are given an array of positive integers. While there are at least two equal elements, we will perform the following operation. We choose the smallest value x that occurs in the array 2 or more tim...

包子不卖包子 1092

矩阵LED和矩阵按键

先说矩阵LED,如图: 下面以行几、列几的表达方法说明 三极管可以当做开关使用 由图可知,如果想让一个LED亮,那么它对应的行和列的三极管都要导通。如果这个矩阵每次只亮一个LED,那么正常写程序没问题。 如果我们想让LED1和LED6亮,其他灯不亮,则需要开启行1、行2、列1、列2,随之带来的问题就是LED2和LED5也会跟着亮起来。 解决方法类似于扫描,因为单片机运行速度很快,可以在很短的时间内开关数次而肉眼看不到。所以我们可以每次只亮一列(排)灯,亮单位时间后关掉同时开启另外一列(排),如此四次一循环

qq_46615634的博客 5789

ACM刷题之codeforces————Merge Equals

Merge Equalstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given an array of positive integers. While there are at least two equal elemen...

小时的枫的博客 632

ArcGIS-裁剪遥感影像及dem图像

6、选择【工具箱】-【数据管理工具】-【栅格】-【裁剪】。在【输入栅格】里选择要裁剪的dem,在【输出范围】里选择刚创建的裁剪范围。选择一个输出路径,其他参数保存默认。2、起一个名称,要素类型选择【面】。点击【编辑】选择与要裁剪的dem一致的地理坐标系。1、创建需要裁剪区域的面层shp,右击选择【新建】-【shapefile】3、点击编辑器,选择开始编辑。4、选择【裁剪范围】,点击确定。5、画出想要裁剪的范围并保存。

siwenaiyou的博客 1万+

数据结构——滑动窗口

入:下标为 i 的元素进入窗口,更新相关统计量。如果 i < k−1 则重复第一步更新:更新答案。一般是更新最大值 / 最小值出:下标为 i−k+1 的元素离开窗口,更新相关统计量✔1. 定长子串中元音的最大数目✔2. 找到一个数字的 K 美丽值✔4. 子数组的最大平均数 |方法一:前缀和方法二:滑动窗口7. 得到 K 个黑块的最少涂色次数8. 爱生气的书店老板9. 几乎唯一子数组的最大和10. 长度为 K 子数组中的最大和11. 可获得的最大点数12. 最少交换次数来组合所有的1 ||

qq_68915288的博客 762

CF D. Merge Equals

time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given an array of positive integers. While there are at least two equal el...

cgtllp1的博客 339

无刷直流电机矢量控制(四):基于滑模观测器的无传感器控制

无刷直流电机矢量控制,采用转速、电流双环控制,电流环dq解耦,d轴采用id=0控制,q轴采用转速外环。采用滑模观测器(SMO),根据电压电流信息进行电机位置角度动态估算,模型可直接运行,转速和角度跟踪精度较高。 本文整理了该方法的基本原理,介绍了在MATLAB/Simulink中的建模和仿真过程,最后附上完整的模型文件。 一、基本原理 滑模观测器(下文简称SMO)是基于滑模变结构控制方法的一种状态观测器。其针对无刷直流电机转子位置估算的实现过程如下。 假设采用矢量控...

Forster-C的博客 6865

Codeforces 962D(优先队列)

题目链接:点击打开链接题目描述:D. Merge Equalstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given an array of positive integers. While there are at lea...

Chen.Jr的博客 606

GAN网络(论文阅读):Generative Adversarial Nets

当判别器效果比较好时,D(G(z))值为0,则log(1-D(G(z)))值为0,当判别器效果不好,会输出一个大于0 的数,则log(1-D(G(z)))值就为一个负数,在极端情况下,会得到负无穷大,此时判别失误。在价值函数的第二项中存在问题,在早期G比较弱的时,生成的数据和真实数据相差很大,D就容易训练的比较好,很容易区分,就会导致log(1-D(G(z)))变成0 ,这样很难求梯度来优化G,所以更新G时,将优化函数改为log(D(G(z)))。最终使G赢,即G生成的数据D判别不出来。

m0_54248968的博客 2292

机械臂速成小指南(七):从旋转矩阵到齐次变换——机械臂位姿的数学表达

本文详细介绍了机械臂位姿描述的数学基础,包括旋转矩阵、欧拉角和齐次变换等核心概念。通过解析旋转矩阵的几何意义和合成方法,以及欧拉角的直观描述,帮助读者理解机械臂位姿的数学表达。文章还探讨了齐次变换在工程实践中的应用,并提供了数值稳定性、坐标系约定和计算效率等实用建议。

cuda7parallel的博客 835

Leetcode解题笔记(Array)

源码见github https://github.com/Kelvinmao/Leetcode/tree/master/Array 2016-08-08更新154.Find Minimum in Rotated Sorted Array IIFollow up for “Find Minimum in Rotated Sorted Array”: What if duplicates are al

kelvinmao的博客 7544

halcon第二讲:焊点提取

本文要完成的任务是将下图中焊点提取出来,对应于halcon例程Blob分析中的ball.hdev。 dev_open_window (0, 0, 512, 512, 'black', WindowHandle) read_image (Image, 'die_03.png') disp_continue_message (WindowHandle, 'black', 'true') sto...

qq_24946843的博客 7175

cf962D

题目链接网站:http://codeforces.com/problemset/problem/962/DD. Merge Equalstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given an array of posi...

Amo丶 765

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

CF962D Merge Equals

链接: http://codeforces.com/problemset/problem/962/D 题意:给出一个整数序列。选择其中最小且出现两次及以上的数,把左边第一个加到左边第二个上, 再去掉左边第一个,不断重复上述过程,直到序列中的每个数都是唯一的,输出最后的序列。 分析:“每次选择最前面两个最小的数合并”<=>“每次选择最前面两个数合并” ...

weixin_33979745的博客 182

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

CF962D Merge Equals 题解

又是一篇无聊的题解...

Yuananshan的博客 220

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Codeforces 962D - Merge Equals

链接: http://codeforces.com/problemset/problem/962/D 题意: 给出一个整数序列。选择其中最小且出现两次(或以上)的数,把最左边的两个从序列中移除,然后把它们的和放到它们的后面第一位。不断重复上述过程,直到序列中的每个数都是唯一的。输出最后的序列。 分析: 如果在数a的前面有一个可以跟a合并的数b,则b一定是唯一的。否则,b要先跟...

weixin_30394333的博客 116

cf962:D.Fun(三元)

注意顺序问题(例如 ( 1,1,21,1,2 ) 和 ( 1,2,11,2,1 ) 被视为不同), 𝑎a , 𝑏b , 𝑐c 必须严格大于 00。输出一个整数 - 𝑎𝑏+𝑎𝑐+𝑏𝑐≤𝑛ab+ac+bc≤n 和 𝑎+𝑏+𝑐≤𝑥a+b+c≤x 的正整数三元组( 𝑎,𝑏,𝑐a,b,c )的个数。每个测试用例包含两个整数 𝑛n 和 𝑥x ( 1≤𝑛,𝑥≤1061≤n,x≤106 )。给定两个整数 𝑛n 和 𝑥x ,求 𝑎𝑏+𝑎𝑐+𝑏𝑐≤𝑛ab+ac+bc≤n 和 𝑎+𝑏+𝑐≤𝑥a+b+c≤x 的。

2301_80718054的博客 567

[map|priority_q] Merge Equals CodeForces - 962D

http://codeforces.com/problemset/problem/962/D 维护一个数列 不出现重复数字 如果出现把valx2 放到重复出现位置 安输入顺序 7 3 4 1 2 2 1 1 4 3 8 2 1 按样例理解 [3,4,1,2,2,1,1] [3,4,1,2,2,1,1] → [3,4,2,2,2,1] → [3,4,4,2,1] → [3,8,2...

蒟蒻的最后的倔强 441

Codeforces Round 962 (Div. 3) A-D

题意很简单,要想不会爆掉,就要优化时间复杂度,给的范围为1e6,所以a的最大也就1e3,直接枚举a和b,去找c即可。一说区间查询,第一时间想到前缀和,此题便是字符的前缀和。直接每隔k行,k列输出就可以。

2301_81058663的博客 365

CF962D Merge Equals

CF962D Merge Equals 题解

BJ_JURUO_gyz的博客 146

Codeforces Round 962 (Div. 3) Problem D

Codeforces Round 962 (Div. 3) Problem D

2401_86351320的博客 383

codeforces 962 D. Merge Equals

D. Merge Equals time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given an array of positive integers. While there are a...

bjfu170203101的博客 231

codeforces 962D Merge Equals

题目链接:http://codeforces.com/contest/962/problem/D 题意:输入n,接下来输入n个数ai。每次从左往右,如果某个数字出现次数>=2,记出现次数>=2中最小的数为x,把前面那个x消除,后面的x变成2x。然后一直执行这个操作,直到无法执行,输出最后保留下来的数字,顺序和操作中的不变。 分析:一看到每次消掉最小的x,然后把下标大的x变成2x,就...

weixin_34336292的博客 139

codeforces 962 D. Merge Equals

D. Merge Equalstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given an array of positive integers. While there are at least two equal ele...

howell 273
上一篇: Students in Railway Carriage,
下一篇: 946A split
「已注销」
博客等级 码龄9年 6粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值