首页 > 代码库 > 1521 一维战舰
1521 一维战舰
1521 一维战舰
对于n个格子,可放置战舰个数为(n+1)/(a+1),当我们指定一个点时,则减少(right-left)/(a+1)-(x-left)/(a+1)-(right-x)/(a+1)。
每做一次指定点,就做一次减法运算,直至总个数<k或指定m次完毕。
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int MAX=2e5+10; 5 int vis[MAX]; 6 7 int main(){ 8 int n,k,a,m,x; 9 cin>>n>>k>>a>>m;10 int flag=-1;11 int left,right;12 memset(vis,0,sizeof(vis));13 int num=(n+1)/(a+1);14 for(int i=0;i<m;i++){15 cin>>x;16 vis[x]=1;17 for(left=x-1;left>0&&vis[left]==0;left--);18 for(right=x+1;right<=n&&vis[right]==0;right++);19 num-=(right-left)/(a+1)-(x-left)/(a+1)-(right-x)/(a+1);20 if(num<k&&flag==-1){21 flag=i+1;22 break;23 }24 }25 cout<<flag<<endl;26 return 0;27 }
1521 一维战舰
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。