AtCoder Beginner Contest 313
AtCoder Beginner Contest 313 - AtCoder
A - To Be Saikyo (atcoder.jp)
从\(a_1 \dots a_{n-1}\)找出最大值与\(a_0\)比较即可
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> A(n);
for(auto &i : A) cin >> i;
int ma = *max_element(A.begin() + 1, A.end());
cout << max(ma - A[0] + 1, 0ll) << endl;
return 0;
}
B - Who is Saikyo? (atcoder.jp)
每次将能力更弱的去掉,看最后是否还剩一个最强的
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N,M;
cin >> N >> M;
set<int> A;
for(int i = 1;i <= N;i ++)
A.insert(i);
for(int i = 0;i < M;i ++){
int x,y;
cin >> x >> y;
A.erase(y);
}
if(A.size() == 1)
cout << *A.begin() << endl;
else
cout << "-1\n";
return 0;
}
C - Approximate Equalization 2 (atcoder.jp)
因为可以用大的去补小的,所以都往中间靠,要计算小于平均数的差多少到平均数,将这些分配好后,如果还有还有大于平均数+1的,还要继续分配,\(sum\bmod n\)就是计算多出来的,另外那些本身大于平均数的数只要减到比平均数多1即可,不用完全减到和平均数相等
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
cin >> N;
vector<int> A(N + 1);
int sum = 0;
for(int i = 1;i <= N;i ++){
cin >> A[i];
sum += A[i];
}
int ans = 0,num = 0, tag = sum / N;
for(int i = 1;i <= N;i ++){
ans += max(tag - A[i], 0ll);
num += (A[i] > tag);
}
cout << ans + max(sum % N - num,0ll) << endl;
return 0;
}
D - Odd or Even (atcoder.jp)(交互题)
因为原数组仅由\(0,1\)构成,并且每次询问后\(a_1 + a_2 + \dots +a_k\)的和的奇偶性也是用\(01\)表示,所以我们可以把和当作$a_1 \oplus a_2 \oplus \dots \oplus a_k $的值.
当\(n=4,k=3\)时,我们可以询问1 2 3 ,1 2 4, 1 3 4 ,将三个结果的值异或之后就是\(a_1\)的值.
三个结果异或即:
\(res_1 \oplus res_2 \oplus res_3 = a_1 \oplus a_2 \oplus a_3 \oplus a_1 \oplus a_2 \oplus a_4 \oplus a_1 \oplus a_3 \oplus a_4\)
根据异或的性质,一个数异或自身偶数次等于\(0\),而0异或其他数等于其他数,所以上式的值就等于\(a_1\).
同理,如果再询问2 3 4,结合1 2 3,1 2 4,我们可以得到\(a_2\)的值.
由此我们对前\(k+1\)个数进行询问就能得到前\(k+1\)个数的值,那怎么得到\(k+2\)之后的值呢?
我们可以询问\(3,4 \dots k+1,k+2\)的结果,即\(a_3 \oplus a_4 \dots a_{k+1} \oplus a_{k+2}\)的值,且前面\(a_3 \sim a_{k+1}\)我们都已经知道了,那把前面这个\(res\)去异或上它们不就得到\(a_{k+2}\)的值了吗.
#include <bits/stdc++.h>
using namespace std;
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, K;
cin >> N >> K;
vector<int> ans(N);
auto solve = [&]() {
vector<int> T(K + 1);
vector<int> Q;
for (int i = 0; i <= K; i ++) {
Q.clear();
for (int j = 0; j <= K; j ++)
if (j != i)
Q.emplace_back(j);
cout << '?';
for (auto j : Q)
cout << ' ' << j + 1 ;
cout << endl;
cin >> T[i];
}
for (int i = 0; i <= K; i ++)
for (int j = 0; j <= K; j ++)
if (j != i)
ans[i] ^= T[j];
};
solve();
for (int i = K + 1; i < N; i ++) {
cout << '?';
for (int j = i; j > i - K; j--)
cout << ' ' << j + 1;
cout << endl;
cin >> ans[i];
for (int j = i - 1; j > i - K; j --)
ans[i] ^= ans[j];
}
cout << '!';
for (auto i : ans)
cout << ' ' << i;
cout << endl;
return 0;
}
AtCoder Beginner Contest 313的更多相关文章
- 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 ...
- AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】
AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...
- AtCoder Beginner Contest 075 C bridge【图论求桥】
AtCoder Beginner Contest 075 C bridge 桥就是指图中这样的边,删除它以后整个图不连通.本题就是求桥个数的裸题. dfn[u]指在dfs中搜索到u节点的次序值,low ...
随机推荐
- Gerrit 大量代码提交流程优化
# Gerrit 大量代码提交流程优化 背景 本文适用于 提交大量初始代码 的场景(仓库版本的早期). 有时候提交大量代码到Gerrit的时候会提示: $ git push Counting obje ...
- CF1862G 题解
首先这个查询操作很迷,考虑先化简查询操作. 不难发现由于每次是加上一个逆的等差序列,因此一次操作完每个数与它的前驱之差一定会减少,因此加上等差序列的次数就等于全局每个数与它的前驱之差最大值. 又因为会 ...
- 4. 简明说一下 CSS link 与 @import 的区别和用法?
两者的基本语法 link语法结构 <link href="外部CSS文件的URL路径" rel="stylesheet" type="text/ ...
- PowerBuilder现代编程方法X01:PowerPlume的X模式
临渊羡鱼,不如退而结网. PB现代编程方法X01:PowerPlume的X模式 前言 PowerPlume是PowerBuilder深度创新的扩展开发框架(免费商用). 它不是一个大而全的类库(取决于 ...
- <el-table-column prop="item_no" label="料号"/>设置最小宽度
可以通过min-width属性来设置el-table-column的最小宽度.以下是一个示例: <template> <el-table :data="tableData& ...
- Django REST framework的10个常见组件
Django REST framework的10个常见组件: 权限组件 认证组件 访问频率限制组件 序列化组件 路由组件 视图组件 分页组件 解析器组件 渲染组件 版本组件
- <script> 和 <script setup> 的一些主要差别
<script setup> 是 Vue 3 中的新特性,它是一种简化和更具声明性的语法,用于编写组件的逻辑部分.相比之下,<script> 是 Vue 2 中常用的编写组件逻 ...
- [oeasy]python0037_字符画艺术_asciiview_自制小动物_imagick_asciiart
牛说(cowsay) 回忆上次内容 我们狂飙了一路 从用shell 直接执行 python程序 到用shell 循环执行 python程序 循环体中 把 python的 输出结果 用管道 交给了 ...
- oeasy教您玩转vim - 73 - # 映射map
映射map 回忆上次缩写的细节 这次了解到了:abbrivate缩写 可以定义缩写 :ab o1z oeasy 这里面还可以包括方向键.回车键之类的东西 可以定义到指定的模式 iab cab 查看 ...
- 格式输出函数printf()详解_C语言
printf函数称为格式输出函数,其关键字最末一个字母f即为"格式"(format)之意.其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上. printf函数调用的一般形式 ...