Codechef SEPT17

比赛链接:https://www.codechef.com/SEPT17

CHEFSUM code
给定数组 a[1..n] ,求最小的下标 i ,使得 prefixsum[i]+suffixsum[i] 最小。
解:
注意到 prefixsum[i]+suffixsum[i] = sum(a)+a[i]。
于是找到 a[i] 最小的下标 i 即可。
时间复杂度 O(n) 。

MINPERM code
找到字典序最小的 1..n 的排列 p[i] ,使得 p[i] != i 。
解:
如果 n 是偶数,则满足条件的排列形如 2, 1, 4, 3, ..., n, n-1;
如果 n 是奇数,则满足条件的排列形如 2, 1, 4, 3, ..., n-1, n, n-2。
时间复杂度 O(n) 。

CHEFPDIG code
给定字符集合为 {0, 1, ..., 9} 的串 s[1..n],任选 i 和 j (i != j),可生成ASCII码为 10*s[i]+s[j] 的字符。
求出所有可生成的大写字母。
解:
统计每个数字出现多少次。
分别枚举生成ASCII码的十位数和个位数,统计每种情况。注意处理十位数和个位数相等的情况。
时间复杂度 O(|s|) 。

SEACO code
序列 a[1..n] 初值为 0 ,维护m个两种操作:
1. x y 将 a[x], a[x+1], ..., a[y] 整体 +=1 。
2. x y 重做第 x 至第 y 个操作。保证 y 小于当前操作编号。
要求输出所有操作之后的序列a[1..n]。
解:
注意到所有操作存在拓扑序,并且 1, 2, 3, ..., m 即是一个合法的拓扑序。
因此,我们把所有操作倒过来处理,进而维护每个操作操作了多少次。
需要使用线段树或树状数组解决。
时间复杂度 O(mlogm+n) 。

FILLMTR code
一个 n×n 的矩阵 B ,其元素只能取 0 和 1 ,并且只有 q 个位置的值给定,问是否存在数组 A[1..n] 使得对任意给定值的位置 B[i][j] ,都有 B[i][j] = | A[i]-A[j] |。
解:
如果 B[i][j] = 0,则 A[i] = A[j];
如果 B[i][j] = 1,则 $A[i] \not \equiv A[j] \bmod 2$。

我们把这个问题转化为图论问题。
考虑一个 n 个节点的无向图 G。
如果 B[i][j] = 0,则 合并节点 i 和节点 j ;
如果 B[i][j] = 1,则 节点 i 和节点 j 之间连一条边。

我们可以证明,矩阵 B 满足条件,当且仅当无向图 G 是一个二分图。
判断一个图是否是二分图,DFS即可,时间复杂度O(n+q)。

WEASELTX
给你一棵 n 个节点的有根树(节点),以及每个节点 i 的初始权值 a[i] 。
一次操作则是指将每个节点的权值变为以其为根的子树中所有节点的权值之异或和。
维护 q 个询问,每个询问则是问 T 次操作之后,根节点的权值。
解:
请移步 http://www.cnblogs.com/TinyWong/p/7478598.html

SUMCUBE
给定无向简单图 G = (V, E)(即不存在自环和重边),以及 k = 1, 2, 或3 。

$$ \sum_{S \subseteq V} f(S)^k, $$
其中 $f(S)$ 是两个端点都在 S 中的边的数量。
解:
请移步 http://www.cnblogs.com/TinyWong/p/7478753.html

WEASELSC
给定一个高度图 a[1..n] ,要求你减少图中一些地方的高度,使得得到的图是一个不超过 K 级的楼梯,要求楼梯的面积最大(即得到的图中所有位置的高度之和最大)。
解:
请移步 http://www.cnblogs.com/TinyWong/p/7479466.html

QGRID
给定一个 n × m(1 <= m <= 3) 的点网格,网格的边上以及点上都有权值。
初始时所有点的权值都为 0 。
维护两种操作:
1. x1 y1 x2 y2 c 把从 (x1, y1) 到 (x2, y2) 的最短路上的所有节点的权值都增加 c 。保证最短路唯一。
2. x y 询问 (x, y) 的权值。
解:
请移步 http://www.cnblogs.com/TinyWong/p/7482179.html

Codechef SEPT17的更多相关文章

  1. 【BZOJ-3514】Codechef MARCH14 GERALD07加强版 LinkCutTree + 主席树

    3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 1288  Solved: 490 ...

  2. 【BZOJ4260】 Codechef REBXOR 可持久化Trie

    看到异或就去想前缀和(⊙o⊙) 这个就是正反做一遍最大异或和更新答案 最大异或就是很经典的可持久化Trie,从高到低贪心 WA: val&(1<<(base-1))得到的并不直接是 ...

  3. codechef 两题

    前面做了这场比赛,感觉题目不错,放上来. A题目:对于数组A[],求A[U]&A[V]的最大值,因为数据弱,很多人直接排序再俩俩比较就过了. 其实这道题类似百度之星资格赛第三题XOR SUM, ...

  4. codechef January Challenge 2014 Sereja and Graph

    题目链接:http://www.codechef.com/JAN14/problems/SEAGRP [题意] 给n个点,m条边的无向图,判断是否有一种删边方案使得每个点的度恰好为1. [分析] 从结 ...

  5. BZOJ3509: [CodeChef] COUNTARI

    3509: [CodeChef] COUNTARI Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 339  Solved: 85[Submit][St ...

  6. CodeChef CBAL

    题面: https://www.codechef.com/problems/CBAL 题解: 可以发现,我们关心的仅仅是每个字符出现次数的奇偶性,而且字符集大小仅有 26, 所以我们状态压缩,记 a[ ...

  7. CodeChef FNCS

    题面:https://www.codechef.com/problems/FNCS 题解: 我们考虑对 n 个函数进行分块,设块的大小为S. 每个块内我们维护当前其所有函数值的和,以及数组中每个元素对 ...

  8. codechef Prime Distance On Tree(树分治+FFT)

    题目链接:http://www.codechef.com/problems/PRIMEDST/ 题意:给出一棵树,边长度都是1.每次任意取出两个点(u,v),他们之间的长度为素数的概率为多大? 树分治 ...

  9. BZOJ 3221: [Codechef FEB13] Obserbing the tree树上询问( 可持久化线段树 + 树链剖分 )

    树链剖分+可持久化线段树....这个一眼可以看出来, 因为可持久化所以写了标记永久化(否则就是区间修改的线段树的持久化..不会), 结果就写挂了, T得飞起...和管理员拿数据调后才发现= = 做法: ...

随机推荐

  1. 深入GCD(四):使用串行队列实现简单的预加载

    其主要思路是使用gcd创建串行队列,然后在此队列中先后执行两个任务:1.预加载一个viewController 2.将这个viewController推入代码如下:@implementation DW ...

  2. BroadcastReceiver详解(一)

    今天我们来讲一下Android中BroadcastReceiver的相关知识. BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播. 在And ...

  3. magic packet 远程唤醒需填写 IP broadcast address

    之前摸索过电脑,知道hp compaq6910p有远程唤醒功能的.当时没在意.如今忽然有了实际的需求,就想起来折腾一下了.看了网上的做法,主要是双方面设置,BIOS和网卡.之后就能够用magic pa ...

  4. 如何快速的开发一个完整的iOS直播app(美颜篇)

    前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,美颜功能是很重要的,如果没有美颜功能,可能分分钟钟掉粉千万,本篇主要讲 ...

  5. 系统重装 WIN7如何创建和使用VHD文件

    1 在磁盘管理中,点击操作-创建VHD,然后可以创建一个空的VHD文件   2 右击这个磁盘,点击初始化磁盘,然后可以新建简单卷   3 右击这个磁盘,设置为脱机或者联机就可以在计算机中显示和隐藏这个 ...

  6. mysql 复制数据库

    为了方便快速复制一个数据库,可以用以下命令 将db1数据库的数据以及表结构复制到newdb数据库 创建新的数据库 #mysql -u root -p123456 mysql>CREATE DAT ...

  7. UML类间关系

    1继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字exten ...

  8. 不能实现RadioButton默认选择

    当用RadioButton时,希望在程序运行的时候默认一个选项: CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1); //CheckRadioBut ...

  9. python day - 19 抽象类 接口类 多态 封装

    一. 抽象类接口类即制定一个规范 特点: 1.不可被实例化. 2.规范子类当中必须事先某个方法. 3.在python中有原生实现抽象类的方法,但没有原生实现接口类的方法. 例题:制定一个规范就是,子类 ...

  10. CH 5402 选课(分组背包+树形DP)

    CH 5402 选课 \(solution:\) 很有讨论套路的一道题,利用树的结构来表示出不同课程之间的包含关系(这里还要建一个虚点将森林变成一颗打大树).然后用子树这个概念巧妙的消除了因为这些包含 ...