AtCoder Beginner Contest 147
#include <bits/stdc++.h>
int main() {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
a += b + c;
if (a >= )
puts("bust");
else
puts("win");
return ;
}
#include <bits/stdc++.h>
int main() {
static char s[];
scanf("%s", s);
int n = strlen(s);
int ans = ;
for (int i = ; i < n / ; i++) {
if (s[i] != s[n - - i]) ans++;
}
printf("%d\n", ans);
return ;
}
暴力枚举每种组合即可
#include <bits/stdc++.h>
#define pii pair<int, int> const int N = ;
int n, A[N];
std::vector<std::pii> vec[N];
bool is[N]; int get(int x) {
int ans = ;
while (x) {
ans++;
x &= (x - );
}
return ans;
} bool check() {
for (int i = ; i < n; i++) if (is[i]) {
for (int j = ; j <= A[i]; j++) {
if (vec[i][j].second == && !is[vec[i][j].first]) return false;
if (vec[i][j].second == && is[vec[i][j].first]) return false;
}
}
return true;
} int main() {
scanf("%d", &n);
for (int i = ; i < n; i++) {
scanf("%d", A + i);
vec[i].resize(A[i] + );
for (int j = ; j <= A[i]; j++) {
scanf("%d%d", &vec[i][j].first, &vec[i][j].second);
vec[i][j].first--;
}
}
int ans = ;
for (int i = ; i < ( << n); i++) {
for (int j = ; j < n; j++) {
if (i >> j & ) is[j] = ;
else is[j] = ;
}
if (check()) ans = std::max(ans, get(i));
}
printf("%d\n", ans);
}
按位做即可
#include <bits/stdc++.h>
#define ll long long const int MOD = 1e9 + ;
const int N = 3e5 + ;
int cnt[][];
ll A[N]; int main() {
int n;
scanf("%d", &n);
int ans = ;
for (int i = ; i <= n; i++) {
scanf("%lld", A + i);
for (int j = ; j <= ; j++) {
int id = A[i] >> j & ;
id ^= ;
(ans += (1LL << j) % MOD * cnt[j][id] % MOD) %= MOD;
cnt[j][A[i] >> j & ]++;
}
}
printf("%d\n", ans);
return ;
}
$dp[i][j][k]$ 表示走到 $(i,j)$ 位置,能否出现差为 $k - 6400$ 的走法。
然后就背包,可以用 bitset 优化
#include <bits/stdc++.h> const int N = ;
const int M = ;
int n, m, A[N][N], B[N][N];
std::bitset<M * + > dp[N][N]; int main() {
scanf("%d%d", &n, &m);
for (int i = ; i <= n; i++)
for (int j = ; j <= m; j++)
scanf("%d", A[i] + j);
for (int i = ; i <= n; i++)
for (int j = ; j <= m; j++)
scanf("%d", B[i] + j);
dp[][].set(M);
dp[][].set(M);
for (int i = ; i <= n; i++)
for (int j = ; j <= m; j++) {
int d = std::abs(A[i][j] - B[i][j]);
dp[i][j] |= (dp[i - ][j] << d) | (dp[i - ][j] >> d);
dp[i][j] |= (dp[i][j - ] << d) | (dp[i][j - ] >> d);
}
int ans = 1e9;
for (int i = ; i <= * M; i++)
if (dp[n][m].test(i))
ans = std::min(ans, std::abs(i - M));
printf("%d\n", ans);
return ;
}
即求能组成多少种 $S$。
当 $D=0$ 时,如果 $X=0$,那么 $S$ 只有一种取值 $0$,否则就有 $n+1$ 种取值,$0, X, 2X, \cdots, nX$。
若 $D<0$,可以把 $X$ 和 $D$ 都乘上 $-1$,这样就只需要考虑 $D>0$ 的情况。
当 $S$ 中有 $k$ 个元素时,$S = kX + I * D$
$0 + 1 + \cdots + (k - 1) \leq I \leq (n - k) + \cdots + (n - 1)$。
相当于一条线段,然后再把这条线段左右端点都加上 $kX / D$ 的值,就变成了一个三元组 $(kX \mod D, l, r)$
对于相同的 $kX \mod D$,线段 $l, r$ 的并集就是答案了。
排序之后扫一遍就行了。
AtCoder Beginner Contest 147的更多相关文章
- AtCoder Beginner Contest 147 E. Balanced Path
思路: dp,使用了bitset优化. 实现: #include <bits/stdc++.h> using namespace std; ; const int INF = 0x3f3f ...
- AtCoder Beginner Contest 100 2018/06/16
A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...
- AtCoder Beginner Contest 052
没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...
- AtCoder Beginner Contest 053 ABCD题
A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...
- AtCoder Beginner Contest 136
AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...
- AtCoder Beginner Contest 137 F
AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...
- AtCoder Beginner Contest 076
A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...
- AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】
AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...
- AtCoder Beginner Contest 064 D - Insertion
AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...
随机推荐
- poj 1979 Red and Black 题解《挑战程序设计竞赛》
地址 http://poj.org/problem?id=1979 Description There is a rectangular room, covered with square tiles ...
- 去除mysql里面重复的行并留下id最小的
DELETE FROM wynews WHERE title IN (SELECT * FROM (SELECT title FROM wynews GROUP BY title HAVING COU ...
- 小程序-小菊花loading
界面----交互 wx.showLoading() 显示loading提示框.需主动调用wx.hideLoading()才能关闭提示框 参数: 属性 类型 默认值 必填 说明 title string ...
- Codeforces Round #598 (Div. 3) F. Equalizing Two Strings 构造
F. Equalizing Two Strings You are given two strings s and t both of length n and both consisting of ...
- 分析Runtime的属性Property
一.介绍 在OC中我们可以给任意的一个类以@property的格式声明属性,当然对于这个属性也会采用某一些属性关键字进行修饰,那么属性的真正的面目是啥样子的呢?其实,runtime源码中可以看到,pr ...
- zookeeper C client API 和zkpython 的安装
1 zookeeper C API 安装 yum install -y ant 在解压的zookeeper包中执行: ant compile_jute 进入src/c 安装:yum -y instal ...
- Docker学习——基本使用
最近公司项目要用docker部署,第一次接触,记录一下,方便使用时查阅. 你有没有遇到过这种情况,在本地运行良好的代码,在另一台电脑或者另一个环境里一堆bug,可以说是水土不服,本质上是两个电脑的运行 ...
- 使用zabbix监控oracle的后台日志
本文将介绍如何使用zabbix监控oracle的后台日志,当oracle后台日志出现“ORA-”或“Error”时,第一时间将该信息报警出来 zabbix agent端 以下所有操作均用root执行 ...
- springboot深入浅出系列(16章97节)-看了都说好
章节目录 第一章 spring boot 2.x基础及概念入门 1.1.spring boot 产生的背景及其优势 1.2.spring boot 2.x 新特性说明 1.3.helloworld及项 ...
- SpringBoot2使用Jetty容器(替换默认Tomcat)
https://blog.csdn.net/hanchao5272/article/details/99649252 Jetty和tomcat的比较 Tomcat和Jetty都是一种Servlet ...