Codeforces 1028E. Restore Array
题目直通车:http://codeforces.com/problemset/problem/1028/E
解法:设原数组为ar[],求ar中的最大值的下标ins,依次向前遍历一遍,每一个答案值都为前一个答案值+余值(ar[i]),这样可以达到题意的要求
输出为NO的情况就是所有ar元素相等且不为0
麻烦的地方在于0值得特判,代码中有说明
#include<iostream> #include<cstdio> #include<cmath> #include<queue> #include<vector> #include<string.h> #include<cstring> #include<algorithm> #include<set> #include<map> #include<fstream> #include<cstdlib> #include<ctime> #include<list> #include<climits> #include<bitset> using namespace std; #define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define fopen freopen("input.in", "r", stdin);freopen("output.in", "w", stdout); #define left asfdasdasdfasdfsdfasfsdfasfdas1 #define tan asfdasdasdfasdfasfdfasfsdfasfdas typedef long long ll; typedef unsigned int un; const int desll[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; const ll mod=1e9+7; const int maxn=4e5+7; const int maxm=1e6+7; const double eps=1e-4; int m,n; int ar[maxn]; ll ansl[maxn]; int main() { scanf("%d",&n); for(int i=0;i<n;i++)scanf("%d",&ar[i]); int ins=0,mx=0; for(int i=0;i<n;i++){ if(mx<ar[i]){ mx=ar[i]; ins=i; } } int l=0,r=n-1; while(l<n && ar[l]==mx)l++; while(r>=0 && ar[r]==mx)r--; if(l==n){ if(ar[0]>0){ printf("NO\n"); return 0; } } if(l>0 && r<n-1){ ins=r+1; } int i=ins; ins=0; ansl[i]=ar[i]; if(mx==0 && l==n)ansl[i]=1; while(++ins<n){ int j; if(i==0)j=n-1; else j=i-1; ansl[j]=ansl[i]+ar[j]; if(ar[j]==0 && ansl[j]==mx)ansl[j]*=2;//特殊处理0 i=j; } if((ar[i]==0 && ansl[i]==ansl[(i+1)%n]) || ansl[i]%ansl[(i+1)%n]==ar[i]){//前一部分特殊处理0 printf("YES\n"); for(int i=0;i<n;i++){ printf("%I64d%c",ansl[i],i!=n-1?' ':'\n'); } } else printf("NO\n"); return 0; }
标签:
ACM
, Codeforces
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 上周热点回顾(1.20-1.26)