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

于是,对于每一个xnum(x)的最大值为cnt(x-1)+cnt(x)+cnt(x+1)。

参考程序如下:

  1. #include <stdio.h>
  2. #define MAX_A 100010
  3.  
  4. int cnt[MAX_A];
  5.  
  6. int main(void)
  7. {
  8. int n;
  9. scanf("%d", &n);
  10. for (int i = ; i < n; i++) {
  11. int a;
  12. scanf("%d", &a);
  13. cnt[++a]++;
  14. }
  15. int ans = ;
  16. for (int i = ; i < MAX_A; i++) {
  17. int cur = cnt[i - ] + cnt[i] + cnt[i + ];
  18. if (cur > ans) ans = cur;
  19. }
  20. printf("%d\n", ans);
  21. return ;
  22. }

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的情形为Xa[i]≠i的情形为O,则考虑相邻元素的情形:

①“XO”(或“OX”):a[i]=ia[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]=ia[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,统计出现以上情形的次数即可。

参考程序如下:

  1. #include <stdio.h>
  2. #define MAX_N 100001
  3.  
  4. int a[MAX_N];
  5.  
  6. int main(void)
  7. {
  8. int n;
  9. scanf("%d", &n);
  10. for (int i = ; i <= n; i++)
  11. scanf("%d", &a[i]);
  12. int cnt = ;
  13. for (int i = ; i <= n; i++) {
  14. if (a[i] == i) {
  15. cnt++;
  16. if (i < n && a[i + ] == i + ) i++;
  17. }
  18. }
  19. printf("%d\n", cnt);
  20. return ;
  21. }

Atcoder ARC 082C/D的更多相关文章

  1. 【题解】Atcoder ARC#90 F-Number of Digits

    Atcoder刷不动的每日一题... 首先注意到一个事实:随着 \(l, r\) 的增大,\(f(r) - f(l)\) 会越来越小.考虑暴力处理出小数据的情况,我们可以发现对于左端点 \(f(l) ...

  2. AtCoder ARC 076E - Connected?

    传送门:http://arc076.contest.atcoder.jp/tasks/arc076_c 平面上有一个R×C的网格,格点上可能写有数字1~N,每个数字出现两次.现在用一条曲线将一对相同的 ...

  3. AtCoder ARC 076D - Built?

    传送门:http://arc076.contest.atcoder.jp/tasks/arc076_b 本题是一个图论问题——Manhattan距离最小生成树(MST). 在一个平面网格上有n个格点, ...

  4. AtCoder ARC 082E - ConvexScore

    传送门:http://arc082.contest.atcoder.jp/tasks/arc082_c 本题是一个平面几何问题. 在平面直角坐标系中有一个n元点集U={Ai(xi,yi)|1≤i≤n} ...

  5. 【题解】 AtCoder ARC 076 F - Exhausted? (霍尔定理+线段树)

    题面 题目大意: 给你\(m\)张椅子,排成一行,告诉你\(n\)个人,每个人可以坐的座位为\([1,l]\bigcup[r,m]\),为了让所有人坐下,问至少还要加多少张椅子. Solution: ...

  6. 【题解】Atcoder ARC#96 F-Sweet Alchemy

    首先,我们发现每一个节点所选择的次数不好直接算,因为要求一个节点被选择的次数大于等于父亲被选择的次数,且又要小于等于父亲被选择的次数 \(+D\).既然如此,考虑一棵差分的树,规定每一个节点被选择的次 ...

  7. AtCoder ARC 090 E / AtCoder 3883: Avoiding Collision

    题目传送门:ARC090E. 题意简述: 给定一张有 \(N\) 个点 \(M\) 条边的无向图.每条边有相应的边权,边权是正整数. 小 A 要从结点 \(S\) 走到结点 \(T\) ,而小 B 则 ...

  8. 【题解】Atcoder ARC#67 F-Yakiniku Restaurants

    觉得我的解法好简单,好优美啊QAQ 首先想想暴力怎么办.暴力的话,我们就枚举左右端点,然后显然每张购物券都取最大的值.这样的复杂度是 \(O(n ^{2} m)\) 的.但是这样明显能够感觉到我们重复 ...

  9. 【题解】Atcoder ARC#85 E-MUL

    ……没啥可说的.最大权闭合子图,跑下dinic就好了…… #include <bits/stdc++.h> using namespace std; #define maxn 500000 ...

随机推荐

  1. java 页面传输中文乱码解决方式

    post 中文乱码解决方案 接受数据的时候设置 request.setCharacterEncoding("utf-8");//编码必须和页面编码一致 页面设置 <%@pag ...

  2. luogu3382【模板】三分法

    给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减.试求出x的值. 看代码即可. #include <cstdio> #include < ...

  3. C# Path 有关于文件路径获取的问题 的方法

    string Current = Directory.GetCurrentDirectory();//获取当前根目录 //private string strFilePath = Applicatio ...

  4. tflearn中计算混淆矩阵方法——需要经过一步转换

    def do_rnn_wordbag(trainX, testX, trainY, testY): y_test=testY #trainX = pad_sequences(trainX, maxle ...

  5. 【POJ 1964】 City Game

    [题目链接] http://poj.org/problem?id=1964 [算法] 记f[i]表示第i行最多向上延伸的行数 然后,对于每一行,我们用单调栈计算出这一行向上延伸的最大矩形面积,取最大值 ...

  6. B4321 queue2 dp

    这个题的dp真的恶心.首先,一开始我以为是一道数论题,但是组合数和这个题没啥关系.dp方程巨麻烦,状态是dp[i][j][0/1],代表i位连了j个,上一位是否连着.然后开始转移,证明如下: 我们先来 ...

  7. bzoj3555 [Ctsc2014]企鹅QQ——字符串哈希

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3555 很久以前就讲过哈希,但一直没写过题,所以这是哈希第一题! 哈希就是把一个字符串映射成一 ...

  8. ZOJ2477 Magic Cube

    题目: This is a very popular game for children. In this game, there's a cube, which consists of 3 * 3 ...

  9. 网络开发之使用Web Service和使用WCF服务

    判断是否有可用网络连接可以通过NetworkInterface类中的GetIsNetworkAvailable来实现: bool networkIsAvailable = networkInterfa ...

  10. PHP中的魔术方法和魔术常量

    看上去好像挺烦人,但只要通过例子测试一下,就明白了.不做测试,只是看,第二天还是不明白.当然我在抄其他人的日志,然后希望能是自己的理解就好,原文地址PHP的魔术方法和魔术敞亮简介和使用--LaraBo ...