Codeforces Round #581(Div. 2)

CF 1204 A. BowWow and the Timetable

题解:发现,$4$的幂次的二进制就是一个$1$后面跟偶数个$0$。

所以暴力判一下就好。

Code:

#include <bits/stdc++.h>

#define N 110 

using namespace std;

char s[N];

int main() {
scanf("%s", s + 1);
int n = strlen(s + 1);
int now = n / 2;
int flag = 0;
for (int i = 2; i <= n; i ++ ) {
if (s[i] == '1') {
flag = 1;
}
}
now += flag;
cout << now << endl ;
return 0;
}

CF 1204 B. Mislove Has Lost an Array

题解:发现题目的要求就是出现的数是前$k$个$2$的幂次,每个都得出现至少一次。

最小值的话,就是满足了$k$等于$l$的情况下,剩下的都等于$1$即为最小值。

最大值的话,就是满足了$k$等于$r$的情况下,剩下的都等于$2^r$即为最大值。

Code:

#include <bits/stdc++.h>

using namespace std;

int bin[21];

int main() {
int n, l, r;
cin >> n >> l >> r;
bin[0] = 1;
for (int i = 1; i <= r; i ++ ) {
bin[i] = bin[i - 1] << 1;
}
int mn, mx;
mn = bin[l] + n - l - 1;
mx = (n - r + 2) * bin[r - 1] - 1;
cout << mn << ' ' << mx << endl ;
return 0;
}

CF 1204 C. Anna, Svyatoslav and Maps

题解:我就是个得看样例才能读懂题意的傻屌中国人......

就是要看一下,能不能拿出来一些点使得,这些点之间的最短路和原图的最短路长度一样。

直接暴力一个一个判就行。

最短路的话求个$floyd$就好。

Code:

#include <bits/stdc++.h>

#define N 110 

using namespace std;

char s[N][N];

int dis[N][N];

int p[1000010 ];

int ans[1000010 ];

int main() {
int n;
cin >> n ;
for (int i = 1; i <= n; i ++ ) {
scanf("%s", s[i] + 1);
}
memset(dis, 0x3f, sizeof dis);
for (int i = 1; i <= n; i ++ ) {
for (int j = 1; j <= n; j ++ ) {
if (s[i][j] == '1') {
dis[i][j] = 1;
}
}
dis[i][i] = 0;
}
for (int k = 1; k <= n; k ++ ) {
for (int i = 1; i <= n; i ++ ) {
for (int j = 1; j <= n; j ++ ) {
dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
}
}
} int m;
cin >> m;
for (int i = 1; i <= m; i ++ ) {
scanf("%d", &p[i]);
}
ans[ ++ ans[0]] = p[1];
int pre = p[1];
for (int i = 2; i <= m; i ++ ) {
if (pre == p[i - 1]) {
continue;
}
if (dis[pre][p[i - 1]] + 1 != dis[pre][p[i]]) {
pre = p[i - 1];
ans[ ++ ans[0]] = pre;
}
}
ans[ ++ ans[0]] = p[m];
cout << ans[0] << endl ;
for (int i = 1; i <= ans[0]; i ++ ) {
printf("%d ", ans[i]);
}
puts("");
return 0;
}

CF 1204 D2. Kirk and a Binary String (hard version)

题解:妈呀神仙题......

就是我们发现什么样的串串是不能动的:

“10”显然。

如果$s$不能动,那么$1s0$不能动。

那么我们把所有的,不能动的串都删掉即可,剩下的就都变成1就好了。

Code:

#include <bits/stdc++.h>

#define N 100010 

using namespace std;

char s[N];

int main() {
scanf("%s", s + 1);
int n = strlen(s + 1);
int tmp = 0;
for (int i = n; i; i -- ) {
if (s[i] == '0') {
tmp ++ ;
}
else if (tmp) {
tmp -- ;
}
else {
s[i] = '0';
}
}
for (int i = 1; i <= n; i ++ ) {
putchar(s[i]);
}
return 0;
}

CF 1204 E. Natasha, Sasha and the Prefix Sums

好题呀

先设$g[x][y]$表示,$x$个数有$y$个是$-1$,构成的所有序列中,$f$值等于$0$的序列个数。

显然当$x>y$时,$g[x][y]=0$。否则就是$C(x + y, y) - C(x + y, y + 1)$。

再设$f[x][y]$表示答案。

转移用$g[x][y]$和组合数就好。

Code:

#include <bits/stdc++.h>

#define N 4010 

using namespace std;

const int mod = 998244853 ;

typedef long long ll;

int qpow(int x, int y) {
int ans = 1;
while (y) {
if (y & 1) {
ans = (ll)ans * x % mod;
}
y >>= 1;
x = (ll)x * x % mod;
}
return ans;
} int f[N][N], g[N][N]; int fac[N], inv[N]; inline int C(int x, int y) {
if (x < y) {
return 0;
}
return (ll)fac[x] * inv[y] % mod * inv[x - y] % mod;
} int main() {
int n, m;
cin >> n >> m ;
fac[0] = 1;
for (int i = 1; i <= n + m; i ++ ) {
fac[i] = (ll)fac[i - 1] * i % mod;
}
inv[n + m] = qpow(fac[n + m], mod - 2);
for (int i = n + m - 1; ~i; i -- ) {
inv[i] = (ll)inv[i + 1] * (i + 1) % mod;
} g[0][0] = 1;
for (int i = 0; i <= n; i ++ ) {
for (int j = i; j <= m; j ++ ) {
if (i) {
g[i][j] = g[i - 1][j];
}
if (j) {
g[i][j] = (g[i][j] + g[i][j - 1]) % mod;
}
}
} for (int i = 1; i <= n; i ++ ) {
for (int j = 0; j <= m; j ++ ) {
f[i][j] = (f[i - 1][j] + C(i + j - 1, j)) % mod;
if (j) {
f[i][j] = (((f[i][j] + f[i][j - 1]) % mod + g[i][j - 1] - C(i + j - 1, j - 1)) % mod + mod) % mod;
}
}
}
cout << f[n][m] << endl ;
return 0;
}

Codeforces Round #581(Div. 2)的更多相关文章

  1. Codeforces Round #334(div.2)(新增不用二分代码) B

    B. More Cowbell time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  2. Codeforces Round #334(div.2) A

    A. Uncowed Forces time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  3. codeforces Round #389(Div.2)C Santa Claus and Robot(思维题)

    题目链接:http://codeforces.com/contest/752/problem/C 题意:给出一系列机器人的行动方向(机器人会走任意一条最短路径),问最少标记几个点能让机器人按这个 路径 ...

  4. Codeforces Round #626 (Div. 2) B. Count Subrectangles

    题目连接:https://codeforces.com/contest/1323/problem/B 题意:给一个大小为n的a数组,一个大小为m的b数组,c数组是二维数组c[i][j]=a[i]*b[ ...

  5. Codeforces Round #342 (Div 2) 解题报告

    除夕夜之有生之年CF第一场 下午从奶奶家回到姥姥家,一看还有些时间,先吃点水果陪姥姥姥爷聊了会儿,再一看表,5:20....woc已经开场20分钟了...于是抓紧时间乱搞.. **A. Guest F ...

  6. Codeforces Round 1153(div. 2)

    这场奇差.ABCD四题.179名. 但是E在现场有213个人做出. 描述一下我在35分钟做完D后的心路历程. 首先看到这道E,第一下想到的是把所有的横向和竖向的整列(行)求出相连的个数. 然后想如何能 ...

  7. Codeforces Round #345 (Div 2)

    最后两题是orzCJK学长帮忙代打的,不过总算是到蓝名了(上次睡迟了,只剩半个小时,结果作大死点开题目看,结果rating掉了100多),还有论代码风格的重要性!!!(没写空格被学长各种D) A题 题 ...

  8. Codeforces Round #622(Div 2)C2. Skyscrapers (hard version)

    题目链接 : C2. Skyscrapers (hard version) 题目描述 : 与上一道题类似,只是数据范围变大, 5e5, 如果用我们原来的方法,铁定是超时的. 考察点 : 单调栈,贪心, ...

  9. Codeforces Round #556(Div.1)

    A 容易发现i,i+1至少有一个数出现,于是可以让尽量多的2和奇数出现 #include<bits/stdc++.h> using namespace std; int n,s1,s2; ...

随机推荐

  1. React组件式编程Demo-用户的增删改查

    1.项目结构 项目是基于webpack4, 参考 创建基本的webpack4.x项目 2.页面效果 初始化效果

  2. 2018CCPC桂林站G Greatest Common Divisor

    题目描述 There is an array of length n, containing only positive numbers.Now you can add all numbers by ...

  3. 初学c++动态联编

    先看一下什么是C++联编? 我觉得通俗的讲,用对象来访问类的成员函数就是静态联编. 那什么是动态联编: 一般是通过虚函数实现动态联编. 看一个动态联编的例子: 我比较懒,所以直接粘贴了MOOC视频的图 ...

  4. Linux常用目录及目录作用说明

    Linux目录结构 /:根目录 /boot:存放系统启动相关文件 /etc:存放系统配置文件 /dev:存放系统设备文件(如/dev/sda) /run:存放系统运行相关文件 /bin:存放系统命令 ...

  5. jquery转换js

    刚离职,一直忙于弄简历,整理面试题.今天得空吧前几天学习复习的jq基础知识整理一下,长时间不用还真的忘记了.所有在深入学习中也不要忘记复习之前的知识.做巩固,老话说的好打好根基才能盖好房.基础知识过后 ...

  6. Sublime Text 3中配置Python3的开发环境

    在Tools-->Build System-->New Build System 之后弹出如下界面: 将其内容修改为 代码: { "cmd": ["D:/so ...

  7. 可插拔式后台管理系统(Django)

    1.实现效果 研究了下django admin的功能,自己实现了一个简单的可插拔式后台管理系统,方便自定义特殊的功能,而且作为一个独立单独的django app,可以整体拷贝到其他项目中作为后台数据管 ...

  8. linux下的开源NFC协议栈

    1. 协议栈名称 neardal 2. 源码 https://github.com/connectivity/neardal.git 3. 由谁维护? intel 4. 基于neardal的nfc协议 ...

  9. 开机自动挂载ISO文件

    开机自动挂载ISO文件 Table of Contents 1. 概述 1.1. 通过fstab 1.2. 通过rc.local 1 概述 开机自动挂载ISO 文件有两种途径 .一种是通过配置fsta ...

  10. 语法错误 : 缺少“;”(在“<”的前面)

    该错误有可能是由错误所指行“<”附近的某个类型忘记#include <>所造成的