A

直接判存不存在连续的三个包含A,B,C就行

/*Huyyt*/
#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int dir[][] = {{, }, {, }, {, -}, { -, }, {, }, {, -}, { -, -}, { -, }};
const int mod = 1e9 + , gakki = + + + + 1e9;
const int MAXN = 1e5 + , MAXM = 1e5 + , N = 2e5 + ;
const int MAXQ = ;
int sum[];
char f[];
int main()
{
ios_base::sync_with_stdio();
cin.tie(); string a;
cin >> a;
int len=a.size();
for (int i = ; i < a.size(); i++)
{
int l = max(i - , );
int r = min(len - , i + );
if (a[i] == 'A')
{
for (int j = l; j <= r; j++)
{
sum[j] += ;
}
}
else if (a[i] == 'B')
{
for (int j = l; j <= r; j++)
{
sum[j] += ;
}
}
else if (a[i] == 'C')
{
for (int j = l; j <= r; j++)
{
sum[j] += ;
}
}
}
for (int i = ; i < a.size(); i++)
{
if (sum[i] == )
{
cout << "Yes" << endl;
return ;
}
}
cout << "No" << endl;
return ;
}

B

下列情况有答案

1.f[i]!=f[i-p]

2.f[i]=f[i-p]='.'

3.f[i]!='.'&&f[i-p]='.'或者f[i]='.'&&f[i-p]!='.'

不是这几种情况直接输出NO即可 是的话 先构造出一处然后剩下的随便赋值了

/*Huyyt*/
#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int dir[][] = {{, }, {, }, {, -}, { -, }, {, }, {, -}, { -, -}, { -, }};
const int mod = 1e9 + , gakki = + + + + 1e9;
const int MAXN = 1e5 + , MAXM = 1e5 + , N = 2e5 + ;
const int MAXQ = ;
int sum[];
char f[];
int main()
{
ios_base::sync_with_stdio();
cin.tie(); int flag = ;
int n, p;
scanf("%d %d", &n, &p);
scanf("%s", f + );
for (int i = p + ; i <= n; i++)
{
if (f[i] == '.')
{
if (f[i - p] != '.')
{
if (f[i - p] == '')
{
f[i] = '';
}
else
{
f[i] = '';
}
flag = ;
}
else
{
f[i] = '';
f[i - p] = '';
flag = ;
}
}
else
{
if (f[i - p] == '.')
{
if (f[i] == '')
{
f[i - p] = '';
}
else
{
f[i - p] = '';
}
flag = ;
}
else
{
if (f[i] != f[i - p])
{
flag = ;
}
}
}
}
for (int i = ; i <= n; i++)
{
if (f[i] == '.')
{
f[i] = '';
}
}
if (!flag)
{
cout << "No" << endl;
}
else
{
printf("%s\n", f + );
}
}

C

构造题

直接搞个48*50的大块 分成4个12*50的小块

再满足条件地在大块里面扣一个个1*1的小块即可

/*Huyyt*/
#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int dir[][] = {{, }, {, }, {, -}, { -, }, {, }, {, -}, { -, -}, { -, }};
const int mod = 1e9 + , gakki = + + + + 1e9;
const int MAXN = 1e5 + , MAXM = 1e5 + , N = 2e5 + ;
const int MAXQ = ;
int sum[];
char f[][];
int main()
{
ios_base::sync_with_stdio();
cin.tie(); int a, b, c, d;
cin >> a >> b >> c >> d;
cout << << " " << << endl;
for (int i = ; i <= ; i++)
{
for (int j = ; j <= ; j++)
{
if (i <= )
{
f[i][j] = 'A';
}
else if (i <= )
{
f[i][j] = 'B';
}
else if (i <= )
{
f[i][j] = 'C';
}
else
{
f[i][j] = 'D';
}
}
}
a--, b--, c--, d--;
int dx = , dy = ;
for (int i = ; i <= a; i++)
{
if (dy > )
{
dy -= , dx += ;
}
f[dx][dy] = 'A';
dy+=;
}
dx=,dy=;
for (int i = ; i <= b; i++)
{
if (dy > )
{
dy -= , dx += ;
}
f[dx][dy] = 'B';
dy+=;
}
dx=,dy=;
for (int i = ; i <= c; i++)
{
if (dy > )
{
dy -= , dx += ;
}
f[dx][dy] = 'C';
dy+=;
}
dx=,dy=;
for (int i = ; i <= d; i++)
{
if (dy > )
{
dy -= , dx += ;
}
f[dx][dy] = 'D';
dy+=;
}
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
cout<<f[i][j];
}
cout<<endl;
}
}

D

题意:

给你n块云(1<=n<=1e5) 每块云的长度是确定的L 月亮在原点 每块云覆盖的区间为[Xi,Xi+L](-1e8<=Xi<=1e8) 初始每块云的速度是1或者-1

现在给你一个Wmax 你可以选择一个速度W(-Wmax<=W<=Wmax)使得有一对云在某一个时间同时覆盖住月亮

问你可以由多少对

解:

http://codeforces.com/blog/entry/59968

把X轴上再加一条Y轴表示时间 这样某一块云运动的轨迹就变成了一个斜着的条

如果两个云有交集的话 在图上就变成有一个公共的小蓝方块

接着我们把W的速度转给月亮 而不是给云 这样云的速度就不变 方便思考和计算

如果一对云可以同时遮到月亮的话 小蓝方块与黄色月亮运动范围是有交集的 即小蓝方块的最高点Y坐标大于下界斜率*当前横坐标

因为1<=W<=Wmax 所以月亮下界的斜率最小为1/Wmax 假设有一个往左的云u 有一个往右的云v 可以算出他们的小蓝块的最高点坐标为((Xu+Xv+L)/2,(Xu-Xv+L)/2)

接下来的要求即是解不等式  把Xu+Xv+L分>=0与<0两种情况讨论即可

/*Huyyt*/
#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int dir[][] = {{, }, {, }, {, -}, { -, }, {, }, {, -}, { -, -}, { -, }};
const int mod = 1e9 + , gakki = + + + + 1e9;
const int MAXN = 1e5 + , MAXM = 1e5 + , N = 2e5 + ;
const int MAXQ = ;
int n, l, w;
int x[MAXN], v[MAXN];
vector<int> pos, neg;
inline int div_floor(ll a, int b)
{
if (b == )
{
if (a > )
{
return INT_MAX;
}
else
{
return INT_MAX * -;
}
}
if (a % b < )
{
a -= (b + a % b);
}
return a / b;
}
int main()
{
scanf("%d %d %d", &n, &l, &w);
for (int i = ; i < n; i++)
{
scanf("%d %d", &x[i], &v[i]);
if (v[i] == )
{
pos.push_back(x[i]);
}
else
{
neg.push_back(x[i]);
}
}
sort(pos.begin(), pos.end()), sort(neg.begin(), neg.end());
ll anser = ;
for (int v : neg)
{
auto barrier = lower_bound(pos.begin(), pos.end(), -v - l);
int ansmax0 = div_floor(1LL * (v + l) * (w + ) - , w - );
int ansmax1 = div_floor(1LL * (v + l) * (w - ) - , w + );
anser += (upper_bound(pos.begin(), barrier, ansmax0) - pos.begin()) + (upper_bound(barrier, pos.end(), min(v, ansmax1)) - barrier);
}
printf("%lld\n", anser);
}

E

待补

Codeforces 989 P循环节01构造 ABCD连通块构造 思维对云遮月参考系坐标轴转换的更多相关文章

  1. P1141 01迷宫 dfs连通块

    题目描述 有一个仅由数字000与111组成的n×nn \times nn×n格迷宫.若你位于一格0上,那么你可以移动到相邻444格中的某一格111上,同样若你位于一格1上,那么你可以移动到相邻444格 ...

  2. P1141 01迷宫(连通块模板)

    题目描述 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上. 你的任务是:对于给定的迷宫, ...

  3. Codeforces Round #222 (Div. 1) Maze —— dfs(连通块)

    题目链接:http://codeforces.com/problemset/problem/377/A 题解: 有tot个空格(输入时统计),把其中k个空格变为wall,问怎么变才能使得剩下的空格依然 ...

  4. Codeforces 920E-Connected Components? (set,补图,连通块)

    Connected Components? CodeForces - 920E You are given an undirected graph consisting of n vertices a ...

  5. Codeforces 982 树边两端点计数偶数连通块 鲨鱼活动最小K最大location 扩展欧几里得方块内光线反射

    A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_bac ...

  6. Codeforces Round #117 (Div. 2) D.Common Divisors(KMP最小循环节)

    http://codeforces.com/problemset/problem/182/D 题意:如果把字符串a重复m次可以得到字符串b,那么我们称字符串a为字符串b的一个因子,现在给定两个字符串S ...

  7. codeforces 825F F. String Compression dp+kmp找字符串的最小循环节

    /** 题目:F. String Compression 链接:http://codeforces.com/problemset/problem/825/F 题意:压缩字符串后求最小长度. 思路: d ...

  8. Common Divisors CodeForces - 182D || kmp最小循环节

    Common Divisors CodeForces - 182D 思路:用kmp求next数组的方法求出两个字符串的最小循环节长度(http://blog.csdn.net/acraz/articl ...

  9. Codeforces Round #383 (Div. 2) A,B,C,D 循环节,标记,暴力,并查集+分组背包

    A. Arpa’s hard exam and Mehrdad’s naive cheat time limit per test 1 second memory limit per test 256 ...

随机推荐

  1. 二、Java对返回参数进行处理(JSONObject,getJSONArray等)

    一.根据返回参数格式获取其中的值 1.得到ResponseEntity<String> responseEntity对象 import org.springframework.http.R ...

  2. Molecular Dynamics

    First]前处理 Second]运行MD Third]后处理 一.获得结构文件-来自实验数据或者某些化学软件工具 1]第一步: 获取并处理pdb文件 从Protein Data Bank下载小肽的p ...

  3. hibernate必须的包下载以及各个包的作用

    hibernate必须的包(点击下载) 对应的入门级代码例子(点击下载) hibernate3.jar  hibernate核心包 commons-collections-2.1.1.jar  集合包 ...

  4. 浏览器端-W3School-JavaScript:Location 对象

    ylbtech-浏览器端-W3School-JavaScript:Location 对象 1.返回顶部 1. Location 对象 Location 对象 Location 对象包含有关当前 URL ...

  5. ListView 中图片错位的问题是如何产生的?

    图片错位问题的本质源于我们的 listview 使用了缓存 convertView,假设一种场景,一个 listview 一屏显示九个item,那么在拉出第十个 item 的时候,事实上该 item ...

  6. while循环嵌套

    <1>while嵌套的格式 while 条件1: 条件1满足时,做的事情1 条件1满足时,做的事情2 条件1满足时,做的事情3 ...(省略)... while 条件2: 条件2满足时,做 ...

  7. [mysql]设置创建时间,更新时间未生效

    问题描述: 新增一条case,create_time没有自动生成创建时间,值为空 原因 : create_time字段类型是DateTime(错误)而不是TIMESTAMP(正确)  解决办法: 把c ...

  8. Python Module_sys/random

    目录 目录 前言 软件环境 Python标准库初识 Python常用的标准库模块 dir 函数使用方法 sys操作系统功能模块 sysstdinsysstdoutsysstderr标准IOError流 ...

  9. Pytorch笔记 (1) 初始神经网络

    一.人工神经元 上方人工神经元中: 输入 * 权重 ——>  相当于 人神经元中  树突的功能 各输入 相加 ,再做非线性变化f ——>  相当于胞体的功能 将非线性变化的结果输出 ——& ...

  10. 修改了Mysql密码后连接不到服务且无报错信息解决方法以及修改密码方法

    安装MYSQL后更改了root的密码后用 net start mysql 启动时出现:无法启动,无报错信息 使用以下命令:1.管理员方式cmd进入mysql安装目录的bin目录下2.执行命令:mysq ...