#1074 : 字体设计
描述
你正在协助某人开发某种新的 Linux 下的中文字体。
现在需要给上图里的黄点做「位置锚固」,然而有些黄点的位置可以由「插值(IUP)」确定,这样就可以减少锚固的数量。
例如,在上图中,#46 #49 #52 #53 的位置可以由 #42 和 #57 插值得到, 我就不需要去锚固它们,只需要固定 #42 和 #57 就可以了。 可以给这个字减少至少 12 字节 ……
抽象一下问题,现在给出输入数组 a,
定义 ax 可以被 al 和 ar 插值得到为:
存在 l < x < r
使得 al ≤ ax ≤ ar 或者 al ≥ ax ≥ ar。
求最少的「锚固」元素的数目,使得非锚固元素都可以由其左右最靠近它的锚固元素插值得到。并输出锚固元素的下标。
输入
第一行输入一个数 n,表示数组的大小(1 ≤ n ≤ 105)。 接下来的一行,输入一行 n 个整数 a1, a2, ..., an,表示数组中的元素(1 ≤ ai ≤ 109)。所有 ai 互不相同。
输出
输出的第一行包含一个整数 ans,表示锚固元素的数目。 接下来一行包含 ans 个递增的整数,表示锚固元素的下标。
提示
额外的样例数据:
样例输入 | 样例输出 |
7 1 2 3 10 5 6 4 |
3 1 4 7 |
样例输入
8 3 4 2 1 8 5 7 6
样例输出
7 1 2 4 5 6 7 8 首先左右端点是一定要选的,根据这个性质。所以我们可以用solve(l,r)表示处理[l,r]区间,且已经选了l和r。那么我们求出[l,r]的最小值和最大值的位置,如果其中一个位置不符合要求,肯定要选成锚固元素,递归处理即可。
#include<cstdio> #include<cctype> #include<queue> #include<cmath> #include<cstring> #include<algorithm> #define rep(i,s,t) for(int i=s;i<=t;i++) #define dwn(i,s,t) for(int i=s;i>=t;i--) #define ren for(int i=first[x];i!=-1;i=next[i]) using namespace std; inline int read() {int x=0,f=1;char c=getchar();for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;for(;isdigit(c);c=getchar()) x=x*10+c-'0';return x*f; } const int maxn=100010; int A[maxn],cnt,ans[maxn]; int mx[maxn][20],mn[maxn][20],Log[maxn]; void init(int n) {Log[0]=-1;rep(i,1,n) Log[i]=Log[i>>1]+1;rep(i,1,n) mx[i][0]=mn[i][0]=i;for(int j=1;(1<<j)<=n;j++) for(int i=1;i+(1<<j)-1<=n;i++) {int v1=mx[i][j-1],v2=mx[i+(1<<j-1)][j-1];mx[i][j]=A[v1]>A[v2]?v1:v2;v1=mn[i][j-1],v2=mn[i+(1<<j-1)][j-1];mn[i][j]=A[v1]<A[v2]?v1:v2;} } void query(int l,int r,int& p1,int& p2) {int k=Log[r-l+1];p1=A[mx[l][k]]>A[mx[r-(1<<k)+1][k]]?mx[l][k]:mx[r-(1<<k)+1][k];p2=A[mn[l][k]]<A[mn[r-(1<<k)+1][k]]?mn[l][k]:mn[r-(1<<k)+1][k]; } void solve(int l,int r) {if(l+1>=r) return;int p1,p2;query(l+1,r-1,p1,p2);if(A[p2]<min(A[l],A[r])) ans[++cnt]=p2,solve(l,p2),solve(p2,r);else if(A[p1]>max(A[l],A[r])) ans[++cnt]=p1,solve(l,p1),solve(p1,r); } int main() {int n=read();rep(i,1,n) A[i]=read();init(n);ans[++cnt]=1;ans[++cnt]=n;solve(1,n);printf("%d\n",cnt);sort(ans+1,ans+cnt+1);printf("%d",ans[1]);rep(i,2,cnt) printf(" %d",ans[i]);return 0; }
View Code
转载于:https://www.cnblogs.com/wzj-is-a-juruo/p/4802709.html
#1074 : 字体设计相关推荐
- 零基础ui设计培训一定要知道字体设计规则
作为一名UI设计师,最最重要的就是字体设计这方面,很多UI设计工作中,字体是必不可缺的,下面小编就为大家详细的介绍一下零基础ui设计培训一定要知道字体设计规则. 零基础ui设计培训一定要知道字体设计规 ...
- 【UI设计培训】字体设计-偏旁部首变形
UI设计培训中字体设计也是非常重要的一节课,字体在UI设计岗位中可以说用到的频率是非常高的,是设计师必须学会并且要有娴熟运用的一项必备技能,在进行汉字设计的时候,可以把汉字拆分成几个偏旁部首的形式进行 ...
- 原始样式增加标题_好看又实用! 10个标题字体设计技巧
很多新手设计师刚做海报设计的时候,经常直接使用字库的字体,觉得字体设计很难,所以很少自己去设计字体,其实字体设计有很多种形式,今天我们分享10种常见适用于标题的字体设计技巧,好看又实用,足够让你设计出 ...
- Illustrator+FontLab 进行字体设计教程
2019独角兽企业重金招聘Python工程师标准>>> Illustrator 提供了强悍的绘图工具以及丰富的笔刷,让你简单高效的绘制字体形状.但当你在 Illustrator 中完 ...
- X4扭曲字体或图形 coreldraw_20种字体设计与创意方法(超全,超实用)
是不是曾经为字体设计而烦恼?福利来了~ 字体均由人工设计.我们常用的各类字体是由各个字体设计师设计,即绘制或构建而成.这些设计师通常默默无闻地劳动,但其作品却被我们每天使用.就像各种书法字体一样,一个 ...
- 如何给字体添加底色indesign_“美哉汉字”2020字体设计专家工作坊预告+报名
中文标点如何处理? 什么是标点挤压? 段落处理的规则是什么? 中文的网格如何形成? 这个周末让我们一起聆听...... ▼ "美哉汉字"2020字体设计专家工作坊于12月06日在上 ...
- 矩形法_字体设计 | 新手必学,超简单的矩形造字法!!
点击蓝字关注,创智助你长姿势 作为一个刚刚踏入设计界的"萌新"来说,字体设计可能是除了版式设计之外最简单的功课了,那么今天教学内容就是最简单的字体设计:矩形造字法. 矩形造字法是以 ...
- 字体设计灵感|浓墨重彩!代表“墨”字设计案例
做中国风海报字体不好看? 如今越来越多国潮崛起, 中国风设计也越来越受到关注 而将传统中国风字体运用到现代平面设计中 不仅可以丰富设计的视觉效果 增加设计的文化韵味,还能体现设计的民族性. 集设网 w ...
- 字体设计灵感合集|字体决定了设计
字体设计合集 这是集设网收集的一系列美丽的,鼓舞人心的字体和字体集合. 惊艳的海报字体,装饰脚本和一切之间! 为你的下一个设计项目找到完美的字体,不妨先到集设网 www.ijishe.com 看看收集 ...
最新文章
- python多线程同步与互斥_Python之多线程:线程互斥与线程同步
- 【树莓派】首发树莓派4原型机接口参数曝光
- PHP获取表单值--同时获取下拉框的Value和Text值
- 给asp.net mvc小白扫盲用的
- 我的BERT!改改字典,让BERT安全提速不掉分(已开源)
- 【Docker】Docker容器和主机如何互相拷贝传输文件
- 安装过mysql和p_MAC下安装与配置MySQL
- linux网络子系统分析(三)—— INET连接建立API分析之bind listen
- 华硕aura完全卸载_这把键盘,或是顶级光轴键盘!华硕TUF GAMING K7光轴机械键盘...
- 数据分析在银行业应用之欺诈检测
- Excel--Vlookup与match、index函数
- Vue下拉列表el-select二级联动效果
- 学生认证免费领取——使用阿里云服务器的Ubuntu版本,并进行图形化
- Threejs实现模拟河流,水面水流,水管水流,海面
- AnyDesk 未连接到服务器。请检查您的互联网连接
- CentOS7.2(单网卡iptables)做DNAT访问弹性IP地址端口转发到后端无公网IP的服务器不同端口
- todo清单项目开发,todo清单不止是简单的勾选,还能做更多事情
- 内核调试番外篇 - KDB的介绍与简单使用
- 概率论与数理统计 —— 概率论的基本概念
- Oracle clean out.,Oracle(block clean out)的块清除
热门文章
- Delphi 的消息机制浅探三
- wpf 绘制rectangle 代码
- 通过timer控件和窗体的opacity属性,轻松实现窗体的淡入淡出
- 5.5.4 函数内部属性
- windows powershell
- (转)linux基本变量学习:位置变量$0 、$1 shift轮替、本地变量、环境变量、特殊变量...
- 当谈论设备指纹时,我们到底在说什么?(转)
- 汇编语言:实验一 查看CPU和内存,用汇编指令和机器指令编程
- 利用svn自动同步更新到网站服务器 -- 网摘
- 设计模式05-建造者模式