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