抽屉原理。

先统计最多有$sum$个船可以放,假设打了$sum-a$枪都没打中$a$个船中的任意一个,那么再打$1$枪必中。

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<ctime>
#include<iostream>
using namespace std;
typedef long long LL;
const double pi=acos(-1.0);
void File()
{
freopen("D:\\in.txt","r",stdin);
freopen("D:\\out.txt","w",stdout);
}
template <class T>
inline void read(T &x)
{
char c = getchar();
x = ;
while(!isdigit(c)) c = getchar();
while(isdigit(c))
{
x = x * + c - '';
c = getchar();
}
} int n,a,b,k;
char s[];
struct X
{
int L;
int cnt;
}t[];
int sz,cnt;
int sum; int main()
{
cin>>n>>a>>b>>k;
cin>>s; for(int i=;s[i];)
{
if(s[i]=='')
{
int j;
for(j=i;s[j];j++)
{
if(s[j]=='') continue;
break;
}
j--; t[sz].L=i;
t[sz].cnt=j-i+;
sz++;
i=j+;
}
else i++;
} for(int i=;i<sz;i++) sum=sum+t[i].cnt/b; int now=; printf("%d\n",sum-a+); for(int i=;i<sz;i++)
{
for(int j=;j<=t[i].cnt/b;j++)
{
printf("%d ",t[i].L+j*b);
now++;
if(now==sum-a+) break;
}
if(now==sum-a+) break;
} return ;
}

最新文章

  1. 精通Perl(第2版)
  2. java Io文件输入输出流 复制文件
  3. C++中的内存管理
  4. 安装elasticsearch及中文IK和近义词配置
  5. 一些IT中的工具介绍【转】
  6. mysql数据库性能优化(包括SQL,表结构,索引,缓存)
  7. 【LeetCode 99】Recover Binary Search Tree
  8. 九度OJ 1352 和为S的两个数字
  9. Chrome浏览器扩展开发系列之五:Page Action类型的Chrome浏览器扩展
  10. POJ 2359 Questions(约瑟夫环——数学解法)
  11. 这段代码,c 1秒,java 9秒,c# 14秒,而python。。。
  12. python学习day14 装饰器(二)&amp;模块
  13. HTML5-全局属性
  14. C#基于wpf编写的串口调试助手
  15. JS 获取链接中的参数
  16. SQL Server使用笔记
  17. .Net Core项目在Docker上运行,内存占用过多导致pods重启的问题
  18. matlab调用规则变量名eval函数
  19. requests请求例子
  20. Android-Java-Thread start run的区别

热门文章

  1. 代码Review发现问题
  2. linux删除乱码
  3. 【PHP】Windows下配置用mail()发送邮件
  4. npm 淘宝镜像安装以及安装报错window_nt 6.1.7601 解决
  5. 图论:Prufer编码-Cayley定理
  6. Centos下Mysql密码忘记解决办法
  7. 自定义View的实现流程
  8. uva10766生成树计数(矩阵树定理)
  9. 【zoj3645】高斯消元求解普通线性方程
  10. 【vijos】P1083 小白逛公园