水 A - Pasha and Stick

#include <bits/stdc++.h>
using namespace std; typedef long long ll;
const int N = 1e5 + 5;
const int INF = 0x3f3f3f3f; int main(void) {
int n; scanf ("%d", &n);
int ans = n / 4;
if (n % 4 == 0) {
ans--;
}
if (n % 2 != 0) ans = 0;
printf ("%d\n", ans); return 0;
}

构造+贪心 B - Vika and Squares

题意:给你一堆油漆,然后选择一个油漆开始涂,一个油漆一个油漆的涂,就是涂过4后面涂5,涂过n后面可以涂1,一直涂到不能继续就停止,问最多能涂多少块

有段时间了,都不知道当时自己怎么做出来的了。

#include <bits/stdc++.h>
using namespace std; typedef long long ll;
const int N = 2e5 + 5;
const int INF = 0x3f3f3f3f;
int a[N]; int main(void) {
int n; scanf ("%d", &n);
int mn = INF;
for (int i=1; i<=n; ++i) {
scanf ("%d", &a[i]);
if (a[i] < mn) mn = a[i];
}
vector<int> pos;
for (int i=1; i<=n; ++i) {
if (a[i] == mn) {
pos.push_back (i);
}
}
int mx_len = 0, sz = pos.size ();
for (int i=0; i<sz-1; ++i) {
mx_len = max (mx_len, pos[i+1] - pos[i] - 1);
}
mx_len = max (mx_len, n - pos[sz-1] + pos[0] - 1);
printf ("%I64d\n", 1ll * n * mn + mx_len); return 0;
}

找规律 C - Harmony Analysis

题意:(1 << k)边长的矩形,第i行与第j行乘积和为0的方案

分析:因为每次都乘2,构造方法:比如++ 变成++ ++那么对应的有-- ++; 再如-++- 变成 -++- -++- 那么对应的有+--+ +--+

#include <bits/stdc++.h>

int a[522][522];

int main(void)  {
int k; scanf ("%d", &k);
int tot = 1;
int len = 1 << k;
a[1][1] = 1;
for (int j=1; j<len; j<<=1) {
int t = tot;
for (int l=1; l<=t; ++l) {
for (int m=1; m<=j; ++m) {
a[l][m+j] = a[l][m];
}
tot++;
for (int m=1; m<=2*j; ++m) {
if (m <= j) a[tot][m] = 1 - a[l][m];
else a[tot][m] = a[l][m];
}
}
}
for (int i=1; i<=len; ++i) {
for (int j=1; j<=len; ++j) {
if (a[i][j] == 1) printf ("+");
else printf ("*");
}
puts ("");
} return 0;
}

  

离线+扫描线+线段树 D - Vika and Segments

题意:给一些横线或者竖线,问一共有多少个点(重复的算一次)

分析:可以转换成求矩形面积的问题,把矩形左下角的点x1--, y1--构成一个宽度为1的矩形,点的个数:x2 - x1,那么面积就是点的个数,离散后加成端更新就可以了。

#include <bits/stdc++.h>

typedef long long ll;
const int N = 1e5 + 5;
struct Seg {
int l, r, h, c;
Seg() {}
Seg(int l, int r, int h, int c) : l (l), r (r), h (h), c (c) {}
bool operator < (const Seg &a) const {
return h < a.h || (h == a.h && l < a.l);
}
};
Seg seg[N<<1];
int X[N<<1]; #define lson l, mid, o << 1
#define rson mid, r, o << 1 | 1
struct Segment_Tree {
int sum[N<<3], cover[N<<3];
void push_up(int l, int r, int o) {
if (cover[o]) {
sum[o] = X[r] - X[l];
}
else if (l + 1 == r) {
sum[o] = 0;
}
else {
sum[o] = sum[o<<1] + sum[o<<1|1];
}
}
void build(int l, int r, int o) {
sum[o] = cover[o] = 0;
if (l + 1 == r) return ;
int mid = l + r >> 1;
build (lson); build (rson);
}
void updata(int ql, int qr, int c, int l, int r, int o) {
if (ql <= l && r <= qr) {
cover[o] += c;
push_up (l, r, o);
return ;
}
else if (l + 1 == r) return ;
int mid = l + r >> 1;
if (ql <= mid) updata (ql, qr, c, lson);
if (qr > mid) updata (ql, qr, c, rson);
push_up (l, r, o);
}
}st; int n, totx, tots; ll run(void) {
ll ret = 0;
std::sort (seg, seg+tots);
std::sort (X, X+totx);
totx = std::unique (X, X+totx) - X;
st.build (0, totx - 1, 1);
for (int i=0; i<tots-1; ++i) {
int l = std::lower_bound (X, X+totx, seg[i].l) - X;
int r = std::lower_bound (X, X+totx, seg[i].r) - X;
st.updata (l, r, seg[i].c, 0, totx - 1, 1);
ret += 1ll * st.sum[1] * (seg[i+1].h - seg[i].h);
}
return ret;
} int main(void) {
scanf ("%d", &n);
int x1, y1, x2, y2;
totx = tots = 0;
for (int i=0; i<n; ++i) {
scanf ("%d%d%d%d", &x1, &y1, &x2, &y2);
if (x1 > x2 || y1 > y2) {
std::swap (x1, x2); std::swap (y1, y2);
}
x1--; y1--;
seg[tots++] = Seg (x1, x2, y1, 1);
seg[tots++] = Seg (x1, x2, y2, -1);
X[totx++] = x1; X[totx++] = x2;
}
printf ("%I64d\n", run ()); return 0;
}

  

Codeforces Round #337 (Div. 2)的更多相关文章

  1. Codeforces Round #337 (Div. 2) D. Vika and Segments 线段树扫描线

    D. Vika and Segments 题目连接: http://www.codeforces.com/contest/610/problem/D Description Vika has an i ...

  2. Codeforces Round #337 (Div. 2) C. Harmony Analysis 构造

    C. Harmony Analysis 题目连接: http://www.codeforces.com/contest/610/problem/C Description The semester i ...

  3. Codeforces Round #337 (Div. 2) B. Vika and Squares 贪心

    B. Vika and Squares 题目连接: http://www.codeforces.com/contest/610/problem/B Description Vika has n jar ...

  4. Codeforces Round #337 (Div. 2) A. Pasha and Stick 数学

    A. Pasha and Stick 题目连接: http://www.codeforces.com/contest/610/problem/A Description Pasha has a woo ...

  5. Codeforces Round #337 (Div. 2) D. Vika and Segments (线段树+扫描线+离散化)

    题目链接:http://codeforces.com/contest/610/problem/D 就是给你宽度为1的n个线段,然你求总共有多少单位的长度. 相当于用线段树求面积并,只不过宽为1,注意y ...

  6. Codeforces Round #337 (Div. 2) C. Harmony Analysis

    题目链接:http://codeforces.com/contest/610/problem/C 解题思路: 将后一个矩阵拆分为四个前一状态矩阵,其中三个与前一状态相同,剩下一个直接取反就行.还有很多 ...

  7. Codeforces Round #337 (Div. 2) D. Vika and Segments 线段树 矩阵面积并

    D. Vika and Segments     Vika has an infinite sheet of squared paper. Initially all squares are whit ...

  8. Codeforces Round #337 (Div. 2) C. Harmony Analysis 数学

    C. Harmony Analysis   The semester is already ending, so Danil made an effort and decided to visit a ...

  9. Codeforces Round #337 (Div. 2) B. Vika and Squares 水题

    B. Vika and Squares   Vika has n jars with paints of distinct colors. All the jars are numbered from ...

随机推荐

  1. jQuery与JS的区别,以及jQuery的基础语法

    *在使用jQuery时,要在页面最上端加上 <script src="../jquery-1.11.2.min.js"></script> 看一下js与jQ ...

  2. 多线程编程4 - NSOperationQueue

    一.简介 一个NSOperation对象可以通过调用start方法来执行任务,默认是同步执行的.也可以将NSOperation添加到一个NSOperationQueue(操作队列)中去执行,而且是异步 ...

  3. ASCII 非打印字符

    项目出了问题,因为AscII非打印字符的原因,后来找了一下啊ASCII的非打印字符,总共有31个,然后我们直接全部替换成问号了. 解决方式为先找到非打印字符,这是我从网上找的非打印字符表: 进制 十六 ...

  4. self和parent的用法

    总结 self  , parent 的用法               只能用在类的内部 self  本类  (不要理解成本对象) parent 父类 在引入自身的静态属性/静态方法 以及父类的方法时 ...

  5. Spring学习笔记—最小化Spring XML配置

    自动装配(autowiring)有助于减少甚至消除配置<property>元素和<constructor-arg>元素,让Spring自动识别如何装配Bean的依赖关系. 自动 ...

  6. 数据结构和算法 – 8.链表

    8.1.数组存在的问题 在处理列表的时候数组是常用的数据结构.数组可以对所存储的数据项提供快速地存取访问,而且它很易于进行循环遍历操作.当然,数组已经是语言的一部分了,用户不需要使用额外的内存,也不需 ...

  7. n的阶乘高精度算法【阶乘】

    C语言实验——求阶乘(循环结构) Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu ...

  8. 开个坑, 写个阿里云开放储存服务(OSS)的C++版SDK以及客户端

    这应该是继我研究手册QQ协议后的第2个稍微正式一点的网络程序, 不只是Scoket套接字编程, 还涉及到更多的HTTP协议知识! 阿里云开放储存服务OSS官方已经提供了不少SDK, 包括PHP/Pyt ...

  9. [LeetCode] Merge Sorted Array

    Given two sorted integer arrays A and B, merge B into A as one sorted array. Note:You may assume tha ...

  10. php开发(CI框架使用)

    年前接了一个外包项目,要求使用PHP,琢磨来琢磨去,感叹道PHP框架实在是太多了!去知乎搜索一轮,最后决定使用CI, 相关议论如下:https://www.zhihu.com/question/216 ...