所谓的日常 #1 - 宴桃園豪傑三結義 斬黃巾英雄首立功

div.2

CodeForces 467A George and Accommodation

给定n(<= 100)对(pi,qi),问有多少个i满足qi - pi >= 2。

照着题意写就可以了,算是给大家道题练练手啦。

 1 #include <stdio.h>
 2
 3 int main() {
 4     int n;
 5     scanf("%d",&n);
 6     int answer = 0;
 7     for (int i = 0; i < n; ++ i) {
 8         int p,q;
 9         scanf("%d%d",&p,&q);
10         if (q - p >= 2) {
11             answer ++;
12         }
13     }
14     printf("%d\n",answer);
15 }

div.1

HDU 4056 Draw a Mess

给出一个200 * 50000的像素点矩阵,执行50000次操作,每次把一个矩形/圆形/菱形/三角形内的像素点涂成指定颜色,问最后每种颜色的数量。

这个题,乍一看的做法是200棵支持区间更新的线段树,时间复杂度是O(nqlogm),已经2e8了,再算上线段树本身的常数,虽然给了5秒的时限但我觉得还是不太能通过的。

事实上,如果把所有的操作先读进来,从后往前做,对于每个像素点,在它第一次被染色后就把它删掉,那么整体的复杂度就是O(nm + nq)了。

这里需要一种能够O(1)删除的数据结构,那么双向链表是一个选择。

这里推荐一种更好写的做法,用并查集来维护,每次把一个像素点染色后,就把它连向它右边的像素点。

  1 #include <bits/stdc++.h>
  2 typedef long long LL;
  3
  4 int next[200 + 1][50000 + 1];
  5 int n,m,nq;
  6
  7 const int N = 50000 + 5;
  8 char op[N];
  9 int var[N][5];
 10 int answer[9 + 1];
 11
 12 int find(int *next,int x) {
 13     return x == next[x] ? x : next[x] = find(next,next[x]);
 14 }
 15
 16 LL sqr(LL x) {
 17     return x * x;
 18 }
 19
 20 void paint(int c,int x,int l,int r) {
 21     if (l < 0) l = 0;
 22     if (r > m - 1) r = m - 1;
 23     for (int i = find(next[x],l); i <= r; next[x][i] = i + 1,i = find(next[x],i)) {
 24         answer[c] ++;
 25     }
 26 }
 27
 28 void work() {
 29     for (int i = 0; i < n; ++ i) {
 30         for (int j = 0; j <= m; ++ j) {
 31             next[i][j] = j;
 32         }
 33     }
 34     memset(answer,0,sizeof(answer));
 35
 36     for (int q = nq - 1; q >= 0; -- q) {
 37         if (op[q] == ‘C‘) {
 38             int xc = var[q][0],
 39                 yc = var[q][1],
 40                 r = var[q][2],
 41                 c = var[q][3];
 42             for (int x = 0; x < n; ++ x) {
 43                 if (sqr(x - xc) > sqr(r)) continue;
 44                 int dy = (int)(sqrt(sqr(r) - sqr(x - xc)) + 1e-8);
 45                 paint(c,x,yc - dy,yc + dy);
 46             }
 47         } else if (op[q] == ‘D‘) {
 48             int xc = var[q][0],
 49                 yc = var[q][1],
 50                 r = var[q][2],
 51                 c = var[q][3];
 52             for (int x = 0; x < n; ++ x) {
 53                 if (std::abs(x - xc) > r) continue;
 54                 int dy = r - std::abs(x - xc);
 55                 paint(c,x,yc - dy,yc + dy);
 56             }
 57         } else if (op[q] == ‘R‘) {
 58             int xc = var[q][0],
 59                 yc = var[q][1],
 60                 l = var[q][2],
 61                 w = var[q][3],
 62                 c = var[q][4];
 63             for (int x = 0; x < n; ++ x) {
 64                 if (x < xc || x > xc + l - 1) continue;
 65                 paint(c,x,yc,yc + w - 1);
 66             }
 67         } else {
 68             int xc = var[q][0],
 69                 yc = var[q][1],
 70                 w = var[q][2],
 71                 c = var[q][3];
 72             for (int x = 0; x < n; ++ x) {
 73                 if (x < xc || x > xc + w / 2) continue;
 74                 int dy = w / 2 - (x - xc);
 75                 paint(c,x,yc - dy,yc + dy);
 76             }
 77         }
 78     }
 79 }
 80
 81 int main() {
 82     while (scanf("%d%d%d",&n,&m,&nq) == 3) {
 83         for (int i = 0; i < nq; ++ i) {
 84             char str[10 + 5];
 85             scanf("%s",str);
 86             op[i] = str[0];
 87             for (int j = 0; j < 4; ++ j) {
 88                 scanf("%d",&var[i][j]);
 89             }
 90             if (op[i] == ‘R‘) {
 91                 scanf("%d",&var[i][4]);
 92             }
 93         }
 94         work();
 95         for (int i = 1; i <= 9; ++ i) {
 96             if (i != 1) putchar(‘ ‘);
 97             printf("%d",answer[i]);
 98         }
 99         puts("");
100     }
101 }

时间: 2024-11-06 15:01:04

所谓的日常 #1 - 宴桃園豪傑三結義 斬黃巾英雄首立功的相关文章

陈睿豪第三次作业

#include<stdio.h>int main()//三角 { printf("*\n"); printf("**\n"); printf("***\n"); printf("****\n"); printf("*****\n"); printf("******\n"); printf("*******\n"); printf("******

【scp系列】SCP-CN-1219 关云长大战外星人

项目编号:SCP-CN-1219 项目等级:Euclid 特殊收容措施:SCP-CN-1219被收容在Site-CN-91的标准低威胁物品收容柜中,每周需进行一次例行清灰和保养,所有实验需经过3级人员的批准方可进行.所有已翻开并查阅的SCP-CN-1219文本内容将同时转录为电子档,连同对应的SCP-CN-1219-1文本一同录入基金会数据库之中. 一旦在网络上发现SCP-CN-1219-1流传,将立刻删除并归档所有相关内容,追踪其最初发布者,并对其进行详尽的背景调查和采访,直到无进一步有价值信

HTML基础标签:标题段落空格链接图像强调

HTML 标题 HTML标题(Heading)是通过<h1>-<h6>标签来定义的. h是英文header标题的缩写,标题无处不在,它的应用范围十分广泛:网站结构.写作文.PPT等. 这里有六个标题元素标签——<h1>.<h2>.<h3>.<h4>.<h5>.<h6>,每个元素代表文档中不同级别的内容: <h1>表示主标题(themainheading),<h2>表示二级子标题(subh

增长工程师修炼之道

前言 我的成长四步曲 在我成长初期,我制定了一些计划来实现下面的一些能力: 能做到你想做的: Tasking与学习能力 用更好的方法来实现功能 Better Code & Architecture 运营(Growth Hacker) 除了第一步,每一个步骤都花费了相当长的时间来学习,光在学习方面就差不多一年了. 能做到你想做的: Tasking与学习能力 虽然这看上去是一件很难的事,但是也不是一件很难的事.这也不依赖于你是否对某一个技术栈的理解,这只实际上只是学习能力的一种体现. todo-ex

关于计算机书籍,你应该知道的五件事(转载)

本文转载自:http://www.chengxuyuan.com/post/434.html -------------------------------------------------------------------------------------------------------------- 重要内容摘要: 1.  最好的效果莫过于: 讨论 实践 教授给他人——如写作 2. 技术书籍,就是花钱买时间 -------------------------------------

XML文档类型定义---XML Schema结构

5.1 Schema概述 XML Schema是2001年5月正式发布的W3C的推荐标准,经过数年的大规模讨论和开发如今终于尘埃落定,成为全球公认的XML环境下首选的数据建模工具. 使用DTD虽然带来较大的方便,但是,DTD存在一些缺陷:一是它用不同于XML的语言编写,需要不同的分析器技术.这增加了工具开发商的负担,降低了软件瘦身的可能性,此外开发人员需要多学一门语言及其语法.而XML Schema是按标准XML规则编写的,更容易掌握.二是DTD不支持名称空间.随着大部分的数据处理日益以XML为

运维日常集合(个人向 坚持更新)

运维日常集合(个人向) 日常运维常用集合,分三部分 windows.linux.Python 得益于python工具便利性,使得运维的工作大大减少. Shell 清除其他终端 who //查看在线终端 pkill -9 -t pts/2 找出内存消耗的进程排序 ps aux --sort=-rss | head -n 4 找出CPU消耗的进程排序 ps aux --sort=-pcpu | head -4 持续 ping 并将结果记录到日志 ping api.jpush.cn | awk '{

Microsoft SQL Server 自定义函数整理大全

01.去除字符串中的html标记及标记中的内容 [叶子函数分享一]去除字符串中的html标记及标记中的内容 --1.创建函数 create function [dbo].[clearhtml] (@maco varchar(8000)) returns varchar(8000) as begin     declare @i int     while 1 = 1     begin        set @i=len(@maco)        set @maco=replace(@maco

SQL简繁转换函数

declare @jall nvarchar(4000),@fall nvarchar(4000) select @jall=N'啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙