A - Anti-Adjacency

签.

 #include <bits/stdc++.h>
using namespace std; int main()
{
int n, k;
while (scanf("%d%d", &n, &k) != EOF)
{
int remind = (n + ) / ;
puts(k <= remind ? "YES" : "NO");
}
return ;
}

B - Path

签.

#include <bits/stdc++.h>
using namespace std; int x, y, Max;
vector <int> G[]; void DFS(int u, int fa, int deep)
{
Max = max(Max, deep);
for (auto v : G[u]) if (v != fa)
DFS(v, u, deep + );
} int main()
{
while (scanf("%d%d", &x, &y) != EOF)
{
for (int i = ; i <= ; ++i) G[i].clear();
G[x].push_back(y);
G[y].push_back(x);
for (int i = ; i <= ; ++i)
{
scanf("%d%d", &x, &y);
G[x].push_back(y);
G[y].push_back(x);
}
Max = ;
DFS(, , );
puts(Max == ? "YES" : "NO");
}
return ;
}

C - When I hit my pocket...

签.

 #include <bits/stdc++.h>
using namespace std; #define ll long long
int k, a, b; int main()
{
while (scanf("%d%d%d", &k, &a, &b) != EOF)
{
if (a >= (b - ) || k < a) printf("%d\n", k + );
else
{
k -= a - ;
int Loop = k / ;
if (Loop == ) printf("%d\n", a + k % );
else printf("%lld\n", 1ll * b + 1ll * (Loop - ) * (b - a) + k % );
}
}
return ;
}

D - Ears

Upsolved.

题意:

有一个人在一维线段上走

$每次经过i - 0.5  i 是整数, 就在第i个位置放一颗石头$

$并且起点和终点必须是整数点,只能在整数点向$

$这样一条合法的路径可以用一个石头序列来表示$

$现在给出每个位置的石头数量,这个可能是不合法的$

$但是可以在某个位置放置或者移除一块石头$

$求最少的操作次数使得石头序列合法$

思路:

我们考虑一个合法的石头序列肯定是

零碎 + 偶数 + 奇数 + 偶数 + 零碎

这样五部分构成,并且至少有一部分的个数不为$0$

我们考虑$dp[i][j] 表示第i个位置,当前点位于第j个状态$

$转移即可$

 #include <bits/stdc++.h>
using namespace std; #define ll long long
#define N 200010
int n, a[N];
ll f[N][]; int main()
{
while (scanf("%d", &n) != EOF)
{
for (int i = ; i <= n; ++i) scanf("%d", a + i);
memset(f, 0x3f, sizeof f);
for (int i = ; i < ; ++i) f[][i] = ;
// 0 左边零碎
// 1 左边偶数
// 2 奇数
// 3 右边偶数
// 4 右边零碎
for (int i = ; i <= n; ++i)
{
ll Min = (ll)1e18, cost;
cost = a[i];
Min = min(Min, f[i - ][]);
f[i][] = Min + cost; cost = a[i] == ? : (a[i] % );
Min = min(Min, f[i - ][]);
f[i][] = Min + cost; cost = a[i] == ? : (a[i] % == );
Min = min(Min, f[i - ][]);
f[i][] = Min + cost; cost = a[i] == ? : (a[i] % );
Min = min(Min, f[i - ][]);
f[i][] = Min + cost; cost = a[i];
Min = min(Min, f[i - ][]);
f[i][] = Min + cost;
}
ll res = (ll)1e18;
for (int i = ; i < ; ++i)
res = min(res, f[n][i]);
printf("%lld\n", res);
}
return ;
}

F - Pass

Upsolved.

题意:

$有n个人,每个人手中有两个球,球有红蓝两种$

$0代表手中有两个红球$

$1代表手中有一红一蓝$

$2代表手中有两个蓝球$

$每次每个编号为非1的人,如果手中还有球,那就挑一个球给前面的人$

$编号为1的人,如果手中有球,就将球接到结果集中$

$最后结果集为一个长度为2 \cdot n的字符串,r 代表红球, b代表蓝球$

$求结果集的方案数$

思路:

$dp[i][j] 表示到第i位,已经安排了j个红球的方案数$

$那只需要考虑i + 1这一位能不能放红球后者能不能放蓝球,就能确定转移$

$我们考虑第i个人的球至少要放在第i位或者之后$

$因为传递需要一个过程$

$用前缀和维护一下,就可以知道前i位最多放多少红球, 转移即可$

 #include <bits/stdc++.h>
using namespace std; #define ll long long
#define N 4010
const ll MOD = (ll);
int n;
char s[N];
ll f[N][N];
int a[N], b[N]; template <class T>
void add(T &x, T &y) { x += y; if (x >= MOD) x -= MOD; } int main()
{
while (scanf("%s", s + ) != EOF)
{
n = strlen(s + );
for (int i = ; i <= n; ++i) a[i] = a[i - ] + - (s[i] - ''), b[i] = b[i - ] + s[i] - '';
memset(f, , sizeof f);
f[][] = ;
for (int i = ; i <= * n; ++i)
for (int j = ; j <= i; ++j) if (f[i][j])
{
if (a[min(i + , n)] > j) add(f[i + ][j + ], f[i][j]);
if (b[min(i + , n)] > i - j) add(f[i + ][j], f[i][j]);
}
printf("%lld\n", f[ * n][a[n]]);
}
return ;
}

Yahoo Programming Contest 2019的更多相关文章

  1. [AtCoder] Yahoo Programming Contest 2019

    [AtCoder] Yahoo Programming Contest 2019   很遗憾错过了一场 AtCoder .听说这场是涨分场呢,于是特意来补一下题. A - Anti-Adjacency ...

  2. Yahoo Programming Contest 2019 自闭记

    A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...

  3. Yahoo Programming Contest 2019 补题记录(DEF)

    D - Ears 题目链接:D - Ears 大意:你在一个\(0-L\)的数轴上行走,从整数格出发,在整数格结束,可以在整数格转弯.每当你经过坐标为\(i-0.5\)的位置时(\(i\)是整数),在 ...

  4. Yahoo Programming Contest 2019.E.Odd Subrectangles(思路 线性基)

    题目链接 \(Description\) 给定一个\(n\times m\)的\(01\)矩阵.求任意选出\(r\)行.\(c\)列(共\(2^{n+m}\)种方案),使得这\(r\)行\(c\)列的 ...

  5. Yahoo Programming Contest 2019.F.Pass(DP)

    题目链接 惊了这是什么F题...怎么我都能做出来...以后atcoder的比赛也不能走神了万一有个这样的F呢(CF已有多次了= =) \(f[i][j]\)表示Takahashi现在一共有\(i\)个 ...

  6. Yahoo Programming Contest 2019.D.Ears(DP)

    题目链接 菜爆了啊QAQ 记起点为\(S\),终点为\(T\),走过的最靠左的点是\(L\),最靠右的点是\(R\). 那么坐标轴被分成了五段: \(0\sim L-1\):经过\(0\)次: \(L ...

  7. Yahoo Programming Contest 2019 E - Odd Subrectangles

    E - Odd Subrectangles 思路: 对于行方案固定的情况下,假设和为奇数的列为a个,和为偶数的列为b个,a+b = m 那么从奇数里面选奇数个,即C(a, 1) + C(a, 3) + ...

  8. Yahoo Programming Contest 2019 F - Pass

    F - Pass 思路: dp[i][j] 表示到第 i 个球为止放了 j 个蓝球的方案数 第 i 个球来自的位置的最右边是min(i, n) 转移方程看代码 代码: #pragma GCC opti ...

  9. Yahoo Programming Contest 2019 D - Ears

    D - Ears 思路: s:起点           t:终点           l:左端点           r:右端点 以上称为关键点 dp[i][j]表示到位置 i 为止,已经经过前 j ...

  10. 【AtCoder】Yahoo Programming Contest 2019

    A - Anti-Adjacency K <= (N + 1) / 2 #include <bits/stdc++.h> #define fi first #define se se ...

随机推荐

  1. Linux-Oracle

    1.使用Oracle登录,或者其他用户登录,切换到Oracle账户下: 2.登录后在Oracle主目录后使用vi创建.bashrc文件: 3.在文件中输入如下参数: export ORACLE_SID ...

  2. Path类和File类的应用

    今天是我学习C#基础的第13天,可以说马上就要结束这个基础课程,感觉学习的理论性的我不能说全部掌握了,我只想说在思路上面的语法以及用法我应该基本掌握了,感觉效果不错,不得不说,要想在一种语言上面有大的 ...

  3. C++11新特性之0——移动语义、移动构造函数和右值引用

    C++引用现在分为左值引用(能取得其地址)和 右值引用(不能取得其地址).其实很好理解,左值引用中的左值一般指的是出现在等号左边的值(带名称的变量,带*号的指针等一类的数据),程序能对这样的左值进行引 ...

  4. 网络虚拟化技术(一): Linux网络虚拟化

    创建虚拟网络环境 使用命令 $ ip netns add net0 可以创建一个完全隔离的新网络环境,这个环境包括一个独立的网卡空间,路由表,ARP表,ip地址表,iptables,ebtables, ...

  5. bootstrap之输入框组

    向输入域添加前缀和后缀的内容 <div style="padding: 100px 100px 10px;"> <form class="bs-exam ...

  6. Java初学者笔记三:关于字符串和自实现数组常见操作以及异常处理

    一.字符串常见的操作 1.结合我在python中对于字符串常见处理总结出下面三个应该能算是字符串造作的TOP 3 //字符串查找子串,存在返回index,不存在返回-1 等于python的find: ...

  7. vim命令删除后重新安装

    个人原创博客,转载请注明,否则追究法律责任 2017-09-30-09:51:20 1,删除vim命令.模拟错误 [root@localhost ~]# which vim/usr/bin/vim[r ...

  8. shell爬虫简易脚本(线程数可控)

    1.介绍 以机电之家网站为例 经过初步分析,机电之家的数据量较大,并且数据组织规则较为统一,适合以代码方式进行全量爬取. 企业列表URL统一为http://www.jdzj.com/yp_vlist_ ...

  9. 模拟退火算法(run away poj1379)

    http://poj.org/problem?id=1379 Run Away Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: ...

  10. 编译安装基于nginx与lua的高性能web平台-openresty

    1.首先编译安装nginx(不多说) 2.开始安装openresty cd /usr/local/src wget https://openresty.org/download/openresty-1 ...