Atcoder ARC 082C/D
C - Together
传送门:http://arc082.contest.atcoder.jp/tasks/arc082_a
本题是一个数学问题。
有一个长度为n的自然数列a[1..n],对于每一个a[i],有三种操作:
①inc a[i];
②dec a[i];
③do nothing。
之后,选择一个自然数x,统计数列中等于x的元素的数目num(x),最大化答案。
考虑x有以下三种来源:
①x:=inc a[i],while a[i]==x-1;
②x:=dec a[i],while a[i]==x+1;
③x:=a[i],while a[i]==x。
于是,对于每一个x,num(x)的最大值为cnt(x-1)+cnt(x)+cnt(x+1)。
参考程序如下:
#include <stdio.h>
#define MAX_A 100010 int cnt[MAX_A]; int main(void)
{
int n;
scanf("%d", &n);
for (int i = ; i < n; i++) {
int a;
scanf("%d", &a);
cnt[++a]++;
}
int ans = ;
for (int i = ; i < MAX_A; i++) {
int cur = cnt[i - ] + cnt[i] + cnt[i + ];
if (cur > ans) ans = cur;
}
printf("%d\n", ans);
return ;
}
D - Derangement
传送门:http://arc082.contest.atcoder.jp/tasks/arc082_b
本题是一个数学问题。
有一个长度为n的数列a[1..n],这是一个1..n的排列。有操作:交换相邻的两个元素。经过有限次交换操作,这个排列将满足:对任意1≤i≤n,有a[i]≠i。求最小的交换次数。
对于每一个位置,记a[i]=i的情形为X,a[i]≠i的情形为O,则考虑相邻元素的情形:
①“XO”(或“OX”):a[i]=i,a[i+1]=x(x≠i,i+1)。此时,交换a[i]和a[i+1],即有a[i]=x(x≠i,i+1),a[i+1]=i,为“OO”;
②“XX”:a[i]=i,a[i+1]=i+1。此时,交换a[i]和a[i+1],即有a[i]=i+1,a[i+1]=i,为“OO”。
于是,对于每一个X,若这个位置i<n,则交换a[i]和a[i+1];若这个位置为n,则交换a[n-1]和a[n]。自左向右检查即可。
可见,“XO”、“OX”、“XX”三种情形的交换次数均为1,统计出现以上情形的次数即可。
参考程序如下:
#include <stdio.h>
#define MAX_N 100001 int a[MAX_N]; int main(void)
{
int n;
scanf("%d", &n);
for (int i = ; i <= n; i++)
scanf("%d", &a[i]);
int cnt = ;
for (int i = ; i <= n; i++) {
if (a[i] == i) {
cnt++;
if (i < n && a[i + ] == i + ) i++;
}
}
printf("%d\n", cnt);
return ;
}
Atcoder ARC 082C/D的更多相关文章
- 【题解】Atcoder ARC#90 F-Number of Digits
Atcoder刷不动的每日一题... 首先注意到一个事实:随着 \(l, r\) 的增大,\(f(r) - f(l)\) 会越来越小.考虑暴力处理出小数据的情况,我们可以发现对于左端点 \(f(l) ...
- AtCoder ARC 076E - Connected?
传送门:http://arc076.contest.atcoder.jp/tasks/arc076_c 平面上有一个R×C的网格,格点上可能写有数字1~N,每个数字出现两次.现在用一条曲线将一对相同的 ...
- AtCoder ARC 076D - Built?
传送门:http://arc076.contest.atcoder.jp/tasks/arc076_b 本题是一个图论问题——Manhattan距离最小生成树(MST). 在一个平面网格上有n个格点, ...
- AtCoder ARC 082E - ConvexScore
传送门:http://arc082.contest.atcoder.jp/tasks/arc082_c 本题是一个平面几何问题. 在平面直角坐标系中有一个n元点集U={Ai(xi,yi)|1≤i≤n} ...
- 【题解】 AtCoder ARC 076 F - Exhausted? (霍尔定理+线段树)
题面 题目大意: 给你\(m\)张椅子,排成一行,告诉你\(n\)个人,每个人可以坐的座位为\([1,l]\bigcup[r,m]\),为了让所有人坐下,问至少还要加多少张椅子. Solution: ...
- 【题解】Atcoder ARC#96 F-Sweet Alchemy
首先,我们发现每一个节点所选择的次数不好直接算,因为要求一个节点被选择的次数大于等于父亲被选择的次数,且又要小于等于父亲被选择的次数 \(+D\).既然如此,考虑一棵差分的树,规定每一个节点被选择的次 ...
- AtCoder ARC 090 E / AtCoder 3883: Avoiding Collision
题目传送门:ARC090E. 题意简述: 给定一张有 \(N\) 个点 \(M\) 条边的无向图.每条边有相应的边权,边权是正整数. 小 A 要从结点 \(S\) 走到结点 \(T\) ,而小 B 则 ...
- 【题解】Atcoder ARC#67 F-Yakiniku Restaurants
觉得我的解法好简单,好优美啊QAQ 首先想想暴力怎么办.暴力的话,我们就枚举左右端点,然后显然每张购物券都取最大的值.这样的复杂度是 \(O(n ^{2} m)\) 的.但是这样明显能够感觉到我们重复 ...
- 【题解】Atcoder ARC#85 E-MUL
……没啥可说的.最大权闭合子图,跑下dinic就好了…… #include <bits/stdc++.h> using namespace std; #define maxn 500000 ...
随机推荐
- java 效率编程 的一些小知识点
1.在程序中若出现字符串连接的情况.请使用StringBuffer取代String,这样能够降低多次创建String以及垃圾回收所带来的内存消耗 2.尽量使用局部变量. 调用方法时传递的參数以及调用中 ...
- runloop简单介绍
runloop是iOS底层机制中保持我们的程序一直运行的机制.他可以让线程一直循环不退出.而在我们正常的编程中.线程其实是线性的,当线程处理完我们的代码以后就自动退出了.runloop就是保证我们的应 ...
- 二分查找(c & c++)
typedef int ElemType; C版本号 [递归版本号] int binSearch2(ElemType List[] ,int x,int head,int tail){ //递归版本号 ...
- android SearchView 样式修改
try { Class<?> argClass=mSearchView.getClass(); //指定某个私有属性 Field mSearchHintIconField = argCla ...
- 微信小程序初探(一、简单的数据请求)
微信小程序出来有一段时间了,之前没看好小程序(觉得小程序体验不咋好,内心对新事物有抵触心里,请原谅我的肤浅[捂脸][捂脸]),不过后来偶然之间玩过小程序的游戏(跳一跳.球球大作战.猜画小歌 等),顿悟 ...
- css中的绝对定位和相对定位(详解,总结)
css中的绝对定位和相对定位(详解,总结) 总结: 设置绝对定位或者相对定位后都从文档中浮起来了,区别是相对定位还占着原来的位置,绝对定位不占着原来的位置,可以种z-index来改变元素的浮动的堆叠次 ...
- bzoj2935 [Poi1999]原始生物——欧拉回路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2935 考察欧拉回路性质的题目呢: TJ:https://blog.csdn.net/u014 ...
- Azure Command Line(Azure CLI)指南
1.安装. MSI安装程序:https://aka.ms/installazurecliwindows https://docs.microsoft.com/zh-cn/cli/azure/insta ...
- Docker 探索安装WordPress+Mysql8.0
拉取MYSQL,注意默认是8.0版本,连接加密方式有变化 docker pull mysql 运行MYSQL docker run --name wordpress-mysql -p 3306:330 ...
- Nginx报错-找不到路径
前言 最近在git bash里输入命令启动Nginx服务,总提示找不到路径,令我困惑不已 我反复检查安装路径和输入命令,确认无误 小技巧:复制路径可直接ctrl+c后在git ba ...