[ 题解 ] [ 逆推 ] A. Taming the Herd
Posted kaidora
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ 题解 ] [ 逆推 ] A. Taming the Herd相关的知识,希望对你有一定的参考价值。
http://codeforces.com/group/NVaJtLaLjS/contest/238204/problem/A
题意:
农夫的牛冲破了牛棚,当天农夫在牛棚弄了个计数器,这个计数器记录了牛棚最后一次被撞是几天前。
如果某天牛冲破了牛棚,那么当天计数器为0,第二天为1。
可是农夫发现他的数据损坏了,丢失的数据以-1表示。农夫确信计数器第一天是0。
现在问:按照这些数据,牛最少冲撞牛棚几次?最多几次?
如果发现数据错误(比如3,2)输出-1。
示例:
Input:
4 -1 -1 -1 1
Output:
2 3
如果我们知道某天的数据是5,那么可以肯定推出昨日的数据是4:
如果昨日的数据是-1,覆盖;如果不是4,那么可以输出-1结束了。
是4的话,继续往前推,一直到0为止。这样可以刷出全部已知数据。
其中,第一天必定是0,这个是要稍微照顾下的。
刷完可能还有未知数据-1。假设牛在这些天都没有冲撞牛棚,那么0的数量就是最小答案;
假如牛天天冲撞牛棚,那么加上-1的数量就是最大答案了。
1 #include <stdio.h> 2 3 int Log[102]={0}; 4 5 int main() 6 { 7 int N; 8 short fail=0; 9 scanf("%d",&N); 10 for(int n=1;n<=N;n++) 11 { 12 scanf("%d",&Log[n]); 13 if(n==1) 14 { 15 if(Log[1]==0)continue; 16 if(Log[1]==-1)Log[1]=0;continue; 17 18 fail=1; 19 } 20 if(Log[n]>0) 21 for(int i=n-1;i>0;i--) 22 { 23 if(Log[i]==-1) 24 Log[i]=Log[i+1]-1; 25 26 if(Log[i]!=Log[i+1]-1)fail=1; 27 if(Log[i]==0)break; 28 } 29 } 30 if(fail){ puts("-1"); return 0;} 31 32 int Zero=0,Nega=0; 33 for(int n=1;n<=N;n++) 34 { 35 if(Log[n]==0)Zero++; 36 if(Log[n]==-1)Nega++; 37 } 38 printf("%d %d ",Zero,Zero+Nega); 39 return 0; 40 }
!-- @page>!-- @page>
以上是关于[ 题解 ] [ 逆推 ] A. Taming the Herd的主要内容,如果未能解决你的问题,请参考以下文章
[题解]Mail.Ru Cup 2018 Round 1 - A. Elevator or Stairs?
Codeforces Round #650 (Div. 3) A. Short Substrings
ImportError: cannot import name ‘VectorQuantizer2‘ from ‘taming.modules.vqvae.quantize‘
ImportError: cannot import name ‘VectorQuantizer2‘ from ‘taming.modules.vqvae.quantize‘