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的更多相关文章

  1. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  2. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  3. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  4. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  5. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  6. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

  7. AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】

    AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...

  8. AtCoder Beginner Contest 064 D - Insertion

    AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...

  9. AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】

    AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...

  10. AtCoder Beginner Contest 075 C bridge【图论求桥】

    AtCoder Beginner Contest 075 C bridge 桥就是指图中这样的边,删除它以后整个图不连通.本题就是求桥个数的裸题. dfn[u]指在dfs中搜索到u节点的次序值,low ...

随机推荐

  1. C# 13(.Net 9) 中的新特性 - 扩展类型

    C# 13 即 .Net 9 按照计划会在2024年11月发布,目前一些新特性已经定型,今天让我们来预览一个比较大型比较重要的新特性: 扩展类型 Extension types 在5月份的微软 Bui ...

  2. WPF/C#:如何实现拖拉元素

    前言 在Canvas中放置了一些元素,需要能够拖拉这些元素,在WPF Samples中的DragDropObjects项目中告诉了我们如何实现这种效果. 效果如下所示: 拖拉过程中的效果如下所示: 具 ...

  3. hynitron ts 驱动分析

    # hynitron ts 驱动分析 背景 在公司项目中搞LCD移植的时候,在TP功能上,有时候频繁操作屏幕时会导致i2c总线返回-2错误. 问题描述: 1.安卓桌面起来以后,点击屏幕有响应. 2.此 ...

  4. Centos7或Ubuntu 磁盘扩容

    准备 切换到root用户(获取root权限) 安装: [root]# install lvm2 -y 查看当前信息: # 查看根分区大小 $ df -h Filesystem Size Used Av ...

  5. 【Mysql】 MysqlDump导表结构或数据

    mysqldump只导出表结构或只导出数据的实现方法 语法: 默认不带参数的导出,导出文本内容大概如下:创建数据库判断语句-删除表-创建表-锁表-禁用索引-插入数据-启用索引-解锁表. Usage: ...

  6. node.js 手稿

  7. PTA数据结构和答案解析

    背景:期末数据结构复习题 绪论和线性表 判断题 The Fibonacci number sequence {F N } is defined as: F 0 =0, F 1 =1, F N =F N ...

  8. TIOBE 7月编程排行榜出炉!Python再次出圈

    又到了周三,本周有过半了,大家好呀 ~~ 每月的TIOBE编程排行榜都是技术社区关注的焦点,作为编程语言流行度的晴雨表,它反映了行业趋势和 技术走向.2024年7月的榜单揭晓了一个重要变化:Pytho ...

  9. oeasy 教您玩转 linux 010400 总结 summary

    ###### 上一部分我们都讲了什么?*   各种gui*   qt和gdk两个开源工具跨平台开发库*   发行版和gui之间的关系###### 我们一起来回顾一下整个学习过程*   我们从零开始*  ...

  10. 如何为spring配置全局抛出异常注解

    0.首先了解一个注解@ControllerAdvice,他是spring里的一个注解,用于定义全局逻辑异常.数据绑定.请求处理等逻辑,与@ExceptionHandler等注解使用. Controll ...