- YYImage 播放动图原理分析
劉胡來
一、通常使用动图有以下几种方式GIFGIF是一种位图。位图的大致原理是:图片由许多的像素组成,每一个像素都被指定了一种颜色,这些像素综合起来就构成了图片。GIF采用的是Lempel-Zev-Welch(LZW)压缩算法,最高支持256种颜色。由于这种特性,GIF比较适用于色彩较少的图片,比如卡通造型、公司标志等等。如果碰到需要用真彩色的场合,那么GIF的表现力就有限了。GIF通常会自带一个调色板,
- 美摄SDK调试
马维启
workspace'VideoEditor.xcworkspace'target'VideoEditor'dopod'YYModel'pod'YYWebImage'pod'YYImage/WebP'endtarget'NvShortVideoCore'doPodsforNvShortVideoproject'NvShortVideoCore/NvShortVideoCore.xcodeproj'p
- YYImage源码浅析
好有魔力
简介YYImage是与UIImage完全兼容的子类,YYImage扩展了UIImage使其支持WebP,GIF,APNG图片数据的解码.它也支持NSCoding协议来进行归解档.YYImage的接口@interfaceYYImage:UIImage//使用图片名称加载图片,此方法不会缓存图片+(nullableYYImage*)imageNamed:(NSString*)name;//使用图片路径
- iOS 14 YYAnimatedImageView加载图片失败处理
马拉萨的春天
基础知识点新知识点ioscocoamacos
升级到iOS14,之前使用的YYimage框架全部不能正常显示图片,当然动态图正常显示,静态图无法显示;原因是:14.0系统调用了下面方法,YYAnimatedImageView没有正确处理-(void)displayLayer:(CALayer)layer;1可以用以下方式处理:方式一:更改YYimage源码,在YYAnimationImageView.m中-(void)displayLayer
- iOS 自定义高性能加载gif
Neal_f
一·实现的各种方式1.将GIF图片分解成多张PNG图片,使用UIImageView播放(内存消耗过大)2.使用YYImage中的YYAnimatedImageView播放,推荐,内存优化的挺好,是个高性能的框架。这里就不详细说明YYAnimatedImageView的实现方式了。其核心思想就是解压gif成图片数组,利用CADisplaylink进行按帧动画显示二·自己实现播放gif,学习内部细节1
- iOS有名第三方库源码解析(收集集合)
Dxc_iOS
收集一些源码解析,供日后研读:1.iOS开发之Masonry框架源码解析2.MJRefresh源码解析3.YYModel源码剖析4.揭秘YYModel的魔法5.YYCache源码剖析6.YYImage源码剖析7.YYImage设计思路,实现细节剖析8.YYWebImage源码剖析9.YYAsyncLayer源码剖析深入解读SDWebImage系列:深入解读SDWebImage(一)深入理解SDWe
- SDwebImage YYImage lottie 加载gif 动画,性能比较,gif加载框架选型分析
开了那么
最近项目改版,要加载好几个gif的动画,刚开始尝试使用了SDwebImage来加载显示,可以正常显示,但加载多个gif的时候会被闪退,查找原因是内存爆增引起的。后来有尝试使用YYkit框架,来加载gif动画,YYKit加载gif的时候不会引起内存问题,但是CPU的使用率会很高,最后我使用的是lottie动画,加载会比较友善,不会存在内存和CPU的问题,接下来我们依次来分析一下相关的代码1、SDwe
- iOS 第三方库的原理解析
lukyy
前言:GitHub我们常用的第三方框架(开源库)AFNetworking、AlamofireSDWebImage、SDWebImageSwiftUISDCycleScrollViewYYKit(YYWebImage、YYImage、YYText、YYModel、YYCache、YYCategories、YYAsyncLayer)MJExtension、KakaJSONMJRefreshMJAppT
- iOS 中gif图的显示
无神
一、前言iOS开发中,大部分时候我们显示一张静态图就可以了,但是有的时候为了UI表现更生动,我就有可能需要展示gif图来达到效果了。网上找了一下,显示gif图的框架找到了两个。SDWebImageYYImageGifDemo.gif二、显示本地gif图SDWebImage和YYImage的显示本地图片代码。//loadloaclegifimage-(void)loadLocaleGifImage{
- 解决显示多个gif图时,cpu使用过高导致手机温度上升或者内存占用过高问题
微_涼
显示gif图通常使用的方式如下:1.使用UIImageView;2,使用sdwebImage;3,使用YYImage;4,使用webview;但是显示方式无非两种:1:先一次性把gif图解析成多个图片,然后轮流播放这些图片,比如使用UIImageView和sdwebImage;这种方式因为要保存解析后的图片,所以占用内存比较高;2,播放到哪一张图片时,去gif图中解析对应的这张照片,用完就释放,不
- iOS14下使用YBImageBrowser图片浏览器黑屏问题
CoderZb
解决办法打开cocoapod管理的插件文件Podfile文件,将pod'YYImage'修改成pod'YYImage',:git=>'https://github.com/QiuYeHong90/YYImage.git',然后保存成功后行执行podinstall--verbose--no-repo-update`安装该插件即可
- iOS14 YYImage 无法正常显示图片
爱勤海之旅
笔记iosYYImage
升级到iOS14,之前使用的YYimage框架全部不能正常显示图片原因是:14.0系统调用了下面方法,YYAnimatedImageView没有正确处理-(void)displayLayer:(CALayer)layer;可以用以下方式处理:方式一:更改YYimage源码,在YYAnimationImageView.m中-(void)displayLayer:(CALayer*)layer{if(
- iOS14 YBImageBrowser图片显示黑屏问题【修改YYImage】
微步毂纹生
打开图片黑屏问题全部是14系统,经过排查是YBImageBrowser库的问题没有适配14系统出现原因:iOS14系统调用方法-(void)displayLayer:(CALayer*)layer,YYAnimatedImageView没有正确处理。解决:重写YYImage-YYAnimatedImageView.m的中的displayLayer方法大概在529行-(void)displayLay
- iOS14下YBImageBrowser显示图片黑屏
HF_K
问题更新iOS14后发现原来使用的YBImageBrowser浏览图片出现黑屏,使用YYImage显示图片也出现了相同的黑屏问题。黑屏问题原因⚠️:iOS14系统调用方法-(void)displayLayer:(CALayer*)layer,YYAnimatedImageView没有正确处理。解决方式一-(void)displayLayer:(CALayer*)layer{UIImage*curr
- iOS动态图加载笔记
数字d
使用场景,直播中送礼物的效果,点击了发送礼物之后,需要展示动态图gif当前的实现方案是从服务端接口获取到gif图的url,然后开始展示,展示完成之后,对图片进行移除podfile中pod'YYKit'核心代码#import"YYKit.h"YYImage*image=[[YYImagealloc]initWithData:[NSDatadataWithContentsOfURL:[NSURLURL
- 修复iOS 14 YYAnimatedImageView加载图片失败
Anchoriter
方法一:直接修改源码,但是如果是pod管理的YYImage的话,pod更新会覆盖。因该库已不再更新,可考虑直接拉取源码并修改。也可fork到自己的仓库并修改,pod地址指向自己的仓库。YYAnimatedImageView.m中修改下方代码-(void)displayLayer:(CALayer*)layer{if(_curFrame){layer.contents=(__bridgeid)_cu
- YYImage之YYSpriteSheetImage
MaZengyi
SpriteSheetImage从一张大图片上面提取多个小图片来组成一个动画,将多个小图片集成到大图片的好处是可以节省多张图片占据的容量,优化安装包大小。YYSpriteSheetImage初始化方法只有一个-(nullableinstancetype)initWithSpriteSheetImage:(UIImage*)imagecontentRects:(NSArray*)contentRec
- 20年目睹之怪bug
携一两本单色书来
release情况下资源加载不出来的问题上个版本上线后突然发现了一个问题,GIF加载动画不出来了?!切换到release环境下,100%的复现的bug定位到问题在YYImage*image=[YYImageimageNamed:@"qfloading.gif"];里path=[[NSBundlemainBundle]pathForResource:scaledNameofType:e];这里pat
- YYKit源码分析(1)——YYImage图片处理
无悔zero
YYImage是由@ibireme开发的一款功能强大的iOS图像框架(该项目是YYKit组件之一),它支持当前市场主流的静/动态图像编/解码与动态图像的动画播放显示,其主要功能如下:动画类型:WebP,APNG,GIF。静态图像:WebP,PNG,GIF,JPEG,JP2,TIFF,BMP,ICO,ICNS。支持以下类型图片的渐进式/逐行扫描/隔行扫描解码:PNG,GIF,JPEG,BMP。支持多
- YYImage解析
奚山遇白
YYImageYYImage是由@ibireme开发的一款功能强大的iOS图像框架(该项目是YYKit组件之一),它支持当前市场主流的静/动态图像编/解码与动态图像的动画播放显示,其主要功能如下:动画类型:WebP,APNG,GIF。静态图像:WebP,PNG,GIF,JPEG,JP2,TIFF,BMP,ICO,ICNS。支持以下类型图片的渐进式/逐行扫描/隔行扫描解码:PNG,GIF,JPEG,
- IOS框架:YYImage源码解析
时光啊混蛋_97boy
原创:知识点总结性文章创作不易,请珍惜,之后会持续更新,不断完善个人比较喜欢做笔记和写总结,毕竟好记性不如烂笔头哈哈,这些文章记录了我的IOS成长历程,希望能与大家一起进步温馨提示:由于不支持目录跳转,大家可通过command+F输入目录标题后迅速寻找到你所需要的内容目录一、YYImage的简介1、主要功能2、架构分析二、YYImage使用示例1、YYImage的使用2、YYFrameImage的
- iOS 14适配,项目中遇到的那些坑
踩坑小分队
iOS14更新后的适配,在项目中遇到的一些问题,持续更新中~除了这个链接下面,还遇到了一些其他的问题https://www.jianshu.com/p/1803bd950b90说明:当前的这些问题,使用中的SDAnimatedImageView加载网络图片,会造成加载失败1.2、使用YYImage的最新库中的YYAnimatedImageView加载网络图片,会造成加载失败可能这两个库没有在项目中
- WebP加载:SDImageWebPCoder和YYImage对比
zhong_JF
什么是WebP?WebP,是一种同时提供了有损压缩与无损压缩的图片文件格式,是Google新推出的影像技术,它可让网页图档有效进行压缩,同时又不影响图片格式兼容与实际清晰度,进而让整体网页下载速度加快。WebP无损压缩的图片可以比同样大小的PNG小26%;WebP有损压缩的图片可以比同样大小的JPEG小25-34%;WebP支持无损的透明图层通道,代价只需增加22%的字节存储空间;WebP有损透明
- IOS YYKit学习之YYWebImage
透支未来
YYWebImage是一个异步图片加载框架(YYKit组件之一).其设计目的是试图替代SDWebImage、PINRemoteImage、FLAnimatedImage等开源框架,它支持这些开源框架的大部分功能,同时增加了大量新特性、并且有不小的性能提升。它底层用YYCache实现了内存和磁盘缓存,用YYImage实现了WebP/APNG/GIF动图的解码和播放。你可以查看这些项目以获得更多信息。
- 使用SDWebImage和YYImage下载高分辨率图,导致内存暴增的解决办法
weixin_34226706
最近,收到朋友求助,说是有个控制器,一进去就crash,而且手机非常的烫,用instrument跑了跑,发现内存暴增几百兆;如图:Snip20160725_5.png图中可以看出,内存暴增的罪魁祸首是YYImage,再进一步定位问题,如图:Snip20160725_6.png现在已经可以很清楚的知道,具体是哪些代码导致内存飙升的,这个方法“YYCGImageCreateDecodeCopy”,主要
- YYImage源码剖析与学习
weixin_33757911
运维ui
源码剖析学习系列:(不断更新)1、FBKVOController源码剖析与学习2、MJRefresh源码剖析与学习3、YYImage源码剖析与学习前言:要看懂YYImage框架,最好先了解热身部分(具体的自行百度),如果懒得看,直接跨过该部分,等到下面部分有疑问,再回过头看这部分的知识,也是可以。热身部分移动端图片格式调研1、ImageI/OImageI/O学习笔记ImageI/O官方文档GIF图
- YYImage渲染流程+源码分析
weixin_30872337
#图片加载流程####先来了解几个概念像素图像的基本元素。举个例子:将一张图片放到PS中尽可能的放大,那么我们可以看到一个个的小格子,其中每个小格子就是一个像素点,每个像素点有且仅有一个颜色。像素由四种不同的向量组成,即我们熟悉的RGBA(red,green,blue,alpha)。位图位图就是一个像素数组,数组中的每个像素都代表图片中的一个点。我们经常用到的JPEG和PNG图片就是位图。(压缩过
- YYWebImage工作原理介绍-----下载单张图片
上天眷顾我
iOS开发
YYWebImage简介YYWebImage是由ibireme开发的YYkit其中的一个库,专门处理图像。github传送门:YYWebImage。他的出现是为了替代SDWebImage、PINRemoteImage、FLAnimatedImage等开源框架。在YYImage出来之前,我们的图片下载和动态图片展示需要SD和FL两个库去处理。现在YYImage的出现使得统一图像库成为可能。这篇文章会
- YYImage设计思路
Philm_iOS
Object-C
在移动端App中,图片通常占据着重要的视觉空间,作为iOS开发来讲,所有的App都有精心设计的AppIcon陈列在SpringBoard中,打开任意一款主流App都少不了琳琅满目的图片搭配。YYImage是一款功能强大的iOS图像框架(该项目是YYKit组件之一),支持目前市场上所有主流的图片格式的显示与编/解码,并且提供高效的动态内存缓存管理,以保证高性能低内存的动画播放。本文引用代码均为YYI
- YYWebImage
ObjectivePLA_WK
YYWebImage是一个异步图片加载框架(YYKit组件之一).其设计目的是试图替代SDWebImage、PINRemoteImage、FLAnimatedImage等开源框架,它支持这些开源框架的大部分功能,同时增加了大量新特性、并且有不小的性能提升。它底层用YYCache实现了内存和磁盘缓存,用YYImage实现了WebP/APNG/GIF动图的解码和播放。你可以查看这些项目以获得更多信息。
- JAVA基础
灵静志远
位运算加载Date字符串池覆盖
一、类的初始化顺序
1 (静态变量,静态代码块)-->(变量,初始化块)--> 构造器
同一括号里的,根据它们在程序中的顺序来决定。上面所述是同一类中。如果是继承的情况,那就在父类到子类交替初始化。
二、String
1 String a = "abc";
JAVA虚拟机首先在字符串池中查找是否已经存在了值为"abc"的对象,根
- keepalived实现redis主从高可用
bylijinnan
redis
方案说明
两台机器(称为A和B),以统一的VIP对外提供服务
1.正常情况下,A和B都启动,B会把A的数据同步过来(B is slave of A)
2.当A挂了后,VIP漂移到B;B的keepalived 通知redis 执行:slaveof no one,由B提供服务
3.当A起来后,VIP不切换,仍在B上面;而A的keepalived 通知redis 执行slaveof B,开始
- java文件操作大全
0624chenhong
java
最近在博客园看到一篇比较全面的文件操作文章,转过来留着。
http://www.cnblogs.com/zhuocheng/archive/2011/12/12/2285290.html
转自http://blog.sina.com.cn/s/blog_4a9f789a0100ik3p.html
一.获得控制台用户输入的信息
&nbs
- android学习任务
不懂事的小屁孩
工作
任务
完成情况 搞清楚带箭头的pupupwindows和不带的使用 已完成 熟练使用pupupwindows和alertdialog,并搞清楚两者的区别 已完成 熟练使用android的线程handler,并敲示例代码 进行中 了解游戏2048的流程,并完成其代码工作 进行中-差几个actionbar 研究一下android的动画效果,写一个实例 已完成 复习fragem
- zoom.js
换个号韩国红果果
oom
它的基于bootstrap 的
https://raw.github.com/twbs/bootstrap/master/js/transition.js transition.js模块引用顺序
<link rel="stylesheet" href="style/zoom.css">
<script src=&q
- 详解Oracle云操作系统Solaris 11.2
蓝儿唯美
Solaris
当Oracle发布Solaris 11时,它将自己的操作系统称为第一个面向云的操作系统。Oracle在发布Solaris 11.2时继续它以云为中心的基调。但是,这些说法没有告诉我们为什么Solaris是配得上云的。幸好,我们不需要等太久。Solaris11.2有4个重要的技术可以在一个有效的云实现中发挥重要作用:OpenStack、内核域、统一存档(UA)和弹性虚拟交换(EVS)。
- spring学习——springmvc(一)
a-john
springMVC
Spring MVC基于模型-视图-控制器(Model-View-Controller,MVC)实现,能够帮助我们构建像Spring框架那样灵活和松耦合的Web应用程序。
1,跟踪Spring MVC的请求
请求的第一站是Spring的DispatcherServlet。与大多数基于Java的Web框架一样,Spring MVC所有的请求都会通过一个前端控制器Servlet。前
- hdu4342 History repeat itself-------多校联合五
aijuans
数论
水题就不多说什么了。
#include<iostream>#include<cstdlib>#include<stdio.h>#define ll __int64using namespace std;int main(){ int t; ll n; scanf("%d",&t); while(t--)
- EJB和javabean的区别
asia007
beanejb
EJB不是一般的JavaBean,EJB是企业级JavaBean,EJB一共分为3种,实体Bean,消息Bean,会话Bean,书写EJB是需要遵循一定的规范的,具体规范你可以参考相关的资料.另外,要运行EJB,你需要相应的EJB容器,比如Weblogic,Jboss等,而JavaBean不需要,只需要安装Tomcat就可以了
1.EJB用于服务端应用开发, 而JavaBeans
- Struts的action和Result总结
百合不是茶
strutsAction配置Result配置
一:Action的配置详解:
下面是一个Struts中一个空的Struts.xml的配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
&quo
- 如何带好自已的团队
bijian1013
项目管理团队管理团队
在网上看到博客"
怎么才能让团队成员好好干活"的评论,觉得写的比较好。 原文如下: 我做团队管理有几年了吧,我和你分享一下我认为带好团队的几点:
1.诚信
对团队内成员,无论是技术研究、交流、问题探讨,要尽可能的保持一种诚信的态度,用心去做好,你的团队会感觉得到。 2.努力提
- Java代码混淆工具
sunjing
ProGuard
Open Source Obfuscators
ProGuard
http://java-source.net/open-source/obfuscators/proguardProGuard is a free Java class file shrinker and obfuscator. It can detect and remove unused classes, fields, m
- 【Redis三】基于Redis sentinel的自动failover主从复制
bit1129
redis
在第二篇中使用2.8.17搭建了主从复制,但是它存在Master单点问题,为了解决这个问题,Redis从2.6开始引入sentinel,用于监控和管理Redis的主从复制环境,进行自动failover,即Master挂了后,sentinel自动从从服务器选出一个Master使主从复制集群仍然可以工作,如果Master醒来再次加入集群,只能以从服务器的形式工作。
什么是Sentine
- 使用代理实现Hibernate Dao层自动事务
白糖_
DAOspringAOP框架Hibernate
都说spring利用AOP实现自动事务处理机制非常好,但在只有hibernate这个框架情况下,我们开启session、管理事务就往往很麻烦。
public void save(Object obj){
Session session = this.getSession();
Transaction tran = session.beginTransaction();
try
- maven3实战读书笔记
braveCS
maven3
Maven简介
是什么?
Is a software project management and comprehension tool.项目管理工具
是基于POM概念(工程对象模型)
[设计重复、编码重复、文档重复、构建重复,maven最大化消除了构建的重复]
[与XP:简单、交流与反馈;测试驱动开发、十分钟构建、持续集成、富有信息的工作区]
功能:
- 编程之美-子数组的最大乘积
bylijinnan
编程之美
public class MaxProduct {
/**
* 编程之美 子数组的最大乘积
* 题目: 给定一个长度为N的整数数组,只允许使用乘法,不能用除法,计算任意N-1个数的组合中乘积中最大的一组,并写出算法的时间复杂度。
* 以下程序对应书上两种方法,求得“乘积中最大的一组”的乘积——都是有溢出的可能的。
* 但按题目的意思,是要求得这个子数组,而不
- 读书笔记-2
chengxuyuancsdn
读书笔记
1、反射
2、oracle年-月-日 时-分-秒
3、oracle创建有参、无参函数
4、oracle行转列
5、Struts2拦截器
6、Filter过滤器(web.xml)
1、反射
(1)检查类的结构
在java.lang.reflect包里有3个类Field,Method,Constructor分别用于描述类的域、方法和构造器。
2、oracle年月日时分秒
s
- [求学与房地产]慎重选择IT培训学校
comsci
it
关于培训学校的教学和教师的问题,我们就不讨论了,我主要关心的是这个问题
培训学校的教学楼和宿舍的环境和稳定性问题
我们大家都知道,房子是一个比较昂贵的东西,特别是那种能够当教室的房子...
&nb
- RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
daizj
oraclermanfilespersetPARALLELISM
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系 转
PARALLELISM ---
我们还可以通过parallelism参数来指定同时"自动"创建多少个通道:
RMAN > configure device type disk parallelism 3 ;
表示启动三个通道,可以加快备份恢复的速度。
- 简单排序:冒泡排序
dieslrae
冒泡排序
public void bubbleSort(int[] array){
for(int i=1;i<array.length;i++){
for(int k=0;k<array.length-i;k++){
if(array[k] > array[k+1]){
- 初二上学期难记单词三
dcj3sjt126com
sciet
concert 音乐会
tonight 今晚
famous 有名的;著名的
song 歌曲
thousand 千
accident 事故;灾难
careless 粗心的,大意的
break 折断;断裂;破碎
heart 心(脏)
happen 偶尔发生,碰巧
tourist 旅游者;观光者
science (自然)科学
marry 结婚
subject 题目;
- I.安装Memcahce 1. 安装依赖包libevent Memcache需要安装libevent,所以安装前可能需要执行 Shell代码 收藏代码
dcj3sjt126com
redis
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
前面3步应该没有问题,主要的问题是执行make的时候,出现了异常。
异常一:
make[2]: cc: Command not found
异常原因:没有安装g
- 并发容器
shuizhaosi888
并发容器
通过并发容器来改善同步容器的性能,同步容器将所有对容器状态的访问都串行化,来实现线程安全,这种方式严重降低并发性,当多个线程访问时,吞吐量严重降低。
并发容器ConcurrentHashMap
替代同步基于散列的Map,通过Lock控制。
&nb
- Spring Security(12)——Remember-Me功能
234390216
Spring SecurityRemember Me记住我
Remember-Me功能
目录
1.1 概述
1.2 基于简单加密token的方法
1.3 基于持久化token的方法
1.4 Remember-Me相关接口和实现
- 位运算
焦志广
位运算
一、位运算符C语言提供了六种位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
例如:9&am
- nodejs 数据库连接 mongodb mysql
liguangsong
mongodbmysqlnode数据库连接
1.mysql 连接
package.json中dependencies加入
"mysql":"~2.7.0"
执行 npm install
在config 下创建文件 database.js
- java动态编译
olive6615
javaHotSpotjvm动态编译
在HotSpot虚拟机中,有两个技术是至关重要的,即动态编译(Dynamic compilation)和Profiling。
HotSpot是如何动态编译Javad的bytecode呢?Java bytecode是以解释方式被load到虚拟机的。HotSpot里有一个运行监视器,即Profile Monitor,专门监视
- Storm0.9.5的集群部署配置优化
roadrunners
优化storm.yaml
nimbus结点配置(storm.yaml)信息:
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional inf
- 101个MySQL 的调节和优化的提示
tomcat_oracle
mysql
1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多。 2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读取的,它的速度很慢。 3. 使用电池供电的RAM(注:RAM即随机存储器)。 4. 使用高级的RAID(注:Redundant Arrays of Inexpensive Disks,即磁盘阵列
- zoj 3829 Known Notation(贪心)
阿尔萨斯
ZOJ
题目链接:zoj 3829 Known Notation
题目大意:给定一个不完整的后缀表达式,要求有2种不同操作,用尽量少的操作使得表达式完整。
解题思路:贪心,数字的个数要要保证比∗的个数多1,不够的话优先补在开头是最优的。然后遍历一遍字符串,碰到数字+1,碰到∗-1,保证数字的个数大于等1,如果不够减的话,可以和最后面的一个数字交换位置(用栈维护十分方便),因为添加和交换代价都是1