[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 ...
随机推荐
- visio2013密钥
66DNF-28W69-W4PPV-W3VYT-TJDBQ http://www.xiazaizhijia.com/rjjc/133264.html
- HTML--留
1.html图像 <p> 这是个图像<img src=“\路径\” alt=“图像不显示不出来时代替图片” width=“1” height=“1” > </p ...
- 参加2018之江杯全球人工智能大赛
:视频识别&问答
学习了一段时间的AI,用天池大赛来检验一下自己的学习成果. 题目:参赛者需对给定的短视频进行内容识别和分析,并回答每一个视频对应的问题.细节请到阿里天池搜索. 两种思路 1 将视频截成一帧一帧的图片, ...
- Visual C++ 图像处理类库CxImage源代码
说明:VC++ 图像处理类库CxImage源代码,CxImage是一个可以用于MFC 的C++类,可以打开,保存,显示,转换各种格式的图像文件,比如BMP, JPEG, GIF, PNG, TIFF, ...
- ThreadPoolExecutor源码解析
LZ目前正在做一个批量生成报表的系统,需要定时批量生成多张报表,便考虑使用线程池来完成.JDK自带的Executors工具类只提供创建固定线程和可伸展但无上限的两个静态方法,并不能满足LZ想自定制线程 ...
- LeetCode -- Product of Array Except Self My Submissions Question
Question: Given an array of n integers where n > 1, nums, return an array output such that output ...
- 洛谷 P3765 总统选举 解题报告
P3765 总统选举 题目背景 黑恶势力的反攻计划被小C成功摧毁,黑恶势力只好投降.秋之国的人民解放了,举国欢庆.此时,原秋之国总统因没能守护好国土,申请辞职,并请秋之国人民的大救星小C钦定下一任.作 ...
- echarts异步加载
echarts体积很大,在移动端使用异步加载是一种提高渲染速度的方法,结合webpack的做法如下: require.ensure([], function(require){ const echar ...
- Postfix+Sasl+Courier-authlib+Dovecot+MySQL+extmail 邮件系统部署
# yum remove postfix ##删除系统自带postfix# userdel postfix# groupdel postdrop# groupadd -g 2525 postfix# ...
- 使用rssh创建一个安全的文件服务器
使用rssh创建一个安全的文件服务器 目前有这样一个需求,公司需要一台linux服务器作为文件服务器,但是基于安全性考虑,我不想使用ftp或者samba,但又必须允许用户上传文件.怎么办呢? 因为是l ...