[COCI2015]ZGODAN
题目大意:
给你一个数$n(n\leq10^1000)$,定义一个数是“美丽数”当且仅当这个数各个数位上的数奇偶性不同。
求最接近$n$的“美丽数”,若有多个,则依次输出。
思路:
贪心+高精度。
首先找出$n$的第一个不符合要求的数位,从这一位开始贪心。
后面几位要么是'8''9'交替(小于$n$的最大的“美丽数”),要么是'0''1'交替(大于$n$的最小的“美丽数”)。
然后高精度减法减一下,比较哪个更接近即可。
#include<cstdio>
#include<cstring>
const int LEN=;
char s[LEN],a[LEN],b[LEN],c[LEN],d[LEN],tmp[LEN];
int len;
inline void treat(char s[]) {
for(register int i=;i<len;i++) {
s[i]^='';
}
}
int main() {
gets(s);
len=strlen(s);
treat(s);
a[]=b[]=s[];
for(register int i=;i<len;i++) {
if((s[i-]&)^(s[i]&)) {
a[i]=b[i]=s[i];
} else {
if(s[i]!=) {
a[i]=s[i]-;
for(register int j=i+;j<len;j++) {
a[j]=a[j-]&?:;
}
}
if(s[i]!=) {
b[i]=s[i]+;
for(register int j=i+;j<len;j++) {
b[j]=b[j-]&?:;
}
}
if(s[i]==) {
treat(b);
puts(b);
return ;
}
if(s[i]==) {
treat(a);
puts(a);
return ;
}
for(register int j=len-;j>=i;j--) {
tmp[j]=s[j];
}
for(register int j=len-;j>=i;j--) {
if((signed char)tmp[j]<) {
tmp[j]+=;
tmp[j-]--;
}
c[j]+=tmp[j]-a[j];
if((signed char)c[j]<) {
c[j]+=;
tmp[j-]--;
}
}
for(register int j=len-;j>=i;j--) {
tmp[j]=b[j];
}
for(register int j=len-;j>=i;j--) {
if((signed char)tmp[j]<) {
tmp[j]+=;
tmp[j-]--;
}
d[j]+=tmp[j]-s[j];
if((signed char)d[j]<) {
d[j]+=;
tmp[j-]--;
}
}
treat(a);
treat(b);
for(register int j=i;j<len;j++) {
if(c[j]<d[j]) {
puts(a);
return ;
}
if(c[j]>d[j]) {
puts(b);
return ;
}
}
printf("%s %s\n",a,b);
return ;
}
}
return ;
}
[COCI2015]ZGODAN的更多相关文章
- BZOJ 3881: [Coci2015]Divljak [AC自动机 树链的并]
3881: [Coci2015]Divljak 题意:添加新文本串,询问某个模式串在多少种文本串里出现过 模式串建AC自动机,考虑添加一个文本串,走到的节点记录下来求树链的并 方法是按dfs序排序去重 ...
- BZOJ3810: [Coci2015]Stanovi
3810: [Coci2015]Stanovi Description Input 输入一行,三个整数,n, m, k Output 输出一个数,表示最小不满意度. Sample Input ...
- [COCI2015]COCI
[COCI2015]COCI 题目大意: 有\(n(n\le5\times10^5)\)个人比赛,比赛总共进行\(3\)轮,每一轮得分为\([0,650]\)内的整数.现在已经得知每个人前两轮的成绩. ...
- [Coci2015]Kamp
Description 一颗树n个点,n-1条边,经过每条边都要花费一定的时间,任意两个点都是联通的. 有K个人(分布在K个不同的点)要集中到一个点举行聚会. 聚会结束后需要一辆车从举行聚会的这点出发 ...
- BZOJ 3881: [Coci2015]Divljak
3881: [Coci2015]Divljak Time Limit: 20 Sec Memory Limit: 768 MBSubmit: 553 Solved: 176[Submit][Sta ...
- 【BZOJ3881】[Coci2015]Divljak fail树+树链的并
[BZOJ3881][Coci2015]Divljak Description Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的. 接下来会发生q个操作,操 ...
- 【BZOJ3743】[Coci2015]Kamp 树形DP
[BZOJ3743][Coci2015]Kamp Description 一颗树n个点,n-1条边,经过每条边都要花费一定的时间,任意两个点都是联通的. 有K个人(分布在K个不同的点)要集中到一个点举 ...
- 【BZOJ3745】[Coci2015]Norma cdq分治
[BZOJ3745][Coci2015]Norma Description Input 第1行,一个整数N: 第2~n+1行,每行一个整数表示序列a. Output 输出答案对10^9取模后的结果. ...
- bzoj3743 [Coci2015]Kamp 常州模拟赛d6t2
3743: [Coci2015]Kamp Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 484 Solved: 229[Submit][Status ...
随机推荐
- 一个初学者的辛酸路程-依旧Django
回顾: 1.Django的请求声明周期? 请求过来,先到URL,URL这里写了一大堆路由关系映射,如果匹配成功,执行对应的函数,或者执行类里面对应的方法,FBV和CBV,本质上返回的内容都是字符串 ...
- ASP.NET Core ---异常处理
一.局部异常处理: 在Action里面catch 二.全局异常处理: 1.默认的异常处理配置: 默认配置在StartUp文件的Configure中注册错误处理,显示开发者错误页面: public vo ...
- Day3 UI:7种常用控件、4种基本布局
Android常用控件 TextView <TextView android:id="@+id/text_view" android:layout_width="m ...
- ExtJs学习之MessAgeBox的使用
1.Ext.MessageBox.alert() 调用格式: alert( String title, String msg, [Function fn], [Object scope] ) 参数说明 ...
- php设计模式 工厂模式和单例
1.单例模式//让该类在外界无法造对象//让外界可以造一个对象,做一个静态方法返回对象//在类里面通过让静态变量控制返回对象只能是一个. class cat{ public $name; privat ...
- asp.net连接SQL server,SQLLite,Oracle,Access数据库
asp.net中连接数据库有两种方式为appSettings和connectionStrings connectionStrings比较常用,所以只讲一下connectionStrings方式的连接 ...
- 【计算机网络基础】用 telnet 检查 VPS 的某个端口是否处于监听状态
命令 telnet x.x.x.x p 其中 x.x.x.x 代表 VPS 的 IP 地址,p 代表要检查的端口号. 起因是我的 ss 不好使了.IP 没被封,查了一下,可能是 ssserver 的端 ...
- bzoj 3160 万径人踪灭 FFT
万径人踪灭 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1936 Solved: 1076[Submit][Status][Discuss] De ...
- H-1-B签证简介
H 1-B签证简介 H 1-B签证是美国雇主为外籍高级技术人员申请的一种工作签证,有效期为3年,可在到期后再延长6年.每年新的配额是6.5万人,另外还有2万个名额是留给在美国获得高级学位(硕士以上学位 ...
- Java并发笔记(一)
1. lock (todo) 2. 写时复制容器 CopyOnWrite容器即写时复制的容器.通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个 ...