/****************************************************************************************************
A了一年多才过。。。离散化里面非常阴险的一种情况,就是给定一个区间[a, b]那么你放进arr数组中的应该是几个数呢?
很多人都以为是两个数a和b,实际上应该是四个数a, b, a - 1, b + 1,因为要考虑没处理的空间。。。够阴险吧~
****************************************************************************************************/
#include <iostream>
#include <functional>
#include <algorithm>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <sstream>
#include <utility>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <limits>
#include <memory>
#include <string>
#include <vector>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
using namespace std;
#define LOWBIT(x) ( (x) & ( (x) ^ ( (x) - 1 ) ) )
#define CLR(x, k) memset((x), (k), sizeof(x))
#define CPY(t, s) memcpy((t), (s), sizeof(s))
#define SC(t, s) static_cast<t>(s)
#define LEN(s) static_cast<int>( strlen((s)) )
#define SZ(s) static_cast<int>( (s).size() )
typedef double LF;
//typedef long long LL; //GNU C++
//typedef unsigned long long ULL;
typedef __int64 LL; //Visual C++ 2010
typedef unsigned __int64 ULL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
typedef pair<double, double> PDD;
typedef map<int, int>::iterator MI;
typedef vector<int>::iterator VI;
typedef list<int>::iterator LI;
typedef set<int>::iterator SI;
template <typename T>
T sqa(const T &x)
{
return x * x;
}
template <typename T>
T gcd(T a, T b)
{
if (!a || !b)
{
return max(a, b);
}
T t;
while (t = a % b)
{
a = b;
b = t;
}
return b;
}
template <typename T>
T ext_gcd(T a, T b, T &x, T &y)
{
if (!b)
{
x = 1;
y = 0;
return a;
}
T d = ext_gcd(b, a % b, x, y);
T t = x;
x = y;
y = t - a / b * y;
return d;
}
template <typename T>
T invmod(T a, T p)
{
LL inv, y;
ext_gcd(a, p, inv, y);
inv < 0 ? inv += p : 0;
return inv;
}
const int INF_INT = 0x3f3f3f3f;
const LL INF_LL = 0x7fffffffffffffffLL; //15f
const double oo = 10e9;
const double eps = 10e-7;
const double PI = acos(-1.0);
const int MAXN = 4004 << 2;
int n, arr[MAXN];
int ncnt;
bool dp[MAXN];
struct Node
{
int l, r;
bool col;
}node[MAXN];
int bisearch(int x, int l, int r)
{
int mid = (l + r) >> 1, res = mid;
while (l <= r)
{
mid = (l + r) >> 1;
if (x == arr[mid])
{
res = mid;
break ;
}
if (x < arr[mid])
{
r = mid - 1;
}
else
{
l = mid + 1;
}
}
return res;
}
void ace()
{
char ch[2];
int x, y, maxi;
while (cin >> n)
{
CLR(dp, true);
for (int i = 0; i < n; ++i)
{
cin >> node[i].l >> node[i].r >> ch;
if ('w' == ch[0])
{
node[i].col = false;
}
else
{
node[i].col = true;
}
if (node[i].l > node[i].r)
{
swap(node[i].l, node[i].r);
}
arr[i * 4] = node[i].l - 1;
arr[i * 4 + 1] = node[i].l;
arr[i * 4 + 2] = node[i].r;
arr[i * 4 + 3] = node[i].r + 1;
}
sort(arr, arr + 4 * n);
ncnt = unique_copy(arr, arr + 4 * n, arr) - arr;
for (int i = 0; i < n; ++i)
{
int l = bisearch(node[i].l, 0, ncnt - 1);
int r = bisearch(node[i].r, 0, ncnt - 1);
for (int j = l; j <= r; ++j)
{
dp[j] = node[i].col;
}
}
int ind = 0;
while (ind < ncnt && dp[ind])
{
++ind;
}
if (ind == ncnt)
{
puts("Oh, my god");
continue ;
}
maxi = 0;
while (ind < ncnt)
{
int ptr = ind;
while (ptr < ncnt && !dp[ptr])
{
++ptr;
}
bool sign = false;
if (ptr >= ncnt)
{
sign = true;
}
--ptr;
int buf = (arr[ptr] - arr[ind] + 1);
if (buf > maxi)
{
x = arr[ind];
y = arr[ptr];
maxi = buf;
}
if (sign)
{
break ;
}
ind = ptr + 1;
while (dp[ind] && ind < ncnt)
{
++ind;
}
if (ind >= ncnt)
{
break ;
}
}
printf("%d %d\n", x, y);
}
return ;
}
int main()
{
ace();
return 0;
}相关推荐
ESP32基于Arduino环境开发128*160 TFT_LCD屏幕显示照片
ESP32基于Arduino环境开发128*160 TFT_LCD屏幕显示照片
zoj2301||hdu1199(线段树染色+离散)
题目链接:
零基础教程:用Python给试卷照片自动切题(有道OCR+PIL完整流程)
本文为零基础用户提供了一套完整的Python自动化切题方案。通过调用有道OCR API识别试卷照片中的题目坐标,并利用PIL库进行精准裁剪,将杂乱的试卷图片自动分割为独立的题目图像。教程详细涵盖了环境搭建、图像预处理、API调用、坐标解析与批量处理全流程,帮助教育工作者和技术爱好者高效处理大量试卷,实现工作流程自动化。
hdu 1199 Color the Ball (线段树区间合并,离散化)
题目大意: 有若干个球以及n次操作,每次操作把区间
利用Matlab高效处理Comsol仿真数据的可视化技巧
本文详细介绍了如何将Comsol仿真数据高效导入Matlab并进行专业可视化与后处理。核心内容包括正确的数据导出格式设置、三维矩阵重构方法、二维截面与三维体渲染技巧,以及基于Matlab的定量分析与批处理自动化流程,帮助工程师和科研人员深度挖掘仿真数据价值,提升工作效率。
ptrade从零开始学习量化交易第166期【ptrade量化策略研究参考--三个因子挖掘思路】
三个因子挖掘思路
HDU 1199 Color the Ball(线段切割 离散化思想)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1199 这个题目开始一看就知道用线段树加离散化来解,可是好长时间没写线段树了,一时间不知道离散化用线段树怎么搞定 于是就用一个网上称是切割线段的类似模拟方法,感觉这个方法比较容易想,但是写的过程中每一步到底是加一还是减 一都要想好,表示很烦人,开始写的时候其实也挺矛盾,分析下复杂度如果专门挑那些奇
深入解析iDP3的Learning模块:从数据集构建到3D动作预测的代码实现
本文深入解析iDP3框架的Learning模块,从数据集构建到3D动作预测的完整代码实现。通过扩散模型实现视觉输入到动作序列的端到端预测,详细介绍数据采集、增强策略、模型架构及训练技巧,帮助开发者掌握3D动作预测策略的核心技术。
hdu1199 初学离散化的一点心得
hdu 1199总结:关于这道题,就不贴代码了,网上有的是大神的代码,主要是刚接触离散化,有一点学习心得。 我们的老师曾经这么说过,对于一道题,刚入手时最好是有一个暴力的想法,也就是最朴素的想法,然后评估时间复杂度,会超时,就要用其他算法或者数据结构优化这个最暴力的解法。 对于这道color the ball 也是一样,最朴素的想法,开一个10^9的数组,置为0,对于后面的每一段w[a,b],
【项目实战】Qt6 录制屏幕、录制声音生成MP4、AVI、MA3等(完整源码,可直接编译使用)
本文将详细介绍如何利用Qt6多媒体模块中的QMediaCaptureSession、QMediaRecorder、QScreenCapture、QAudioInput、QMediaFormat等功能,实现对屏幕和声音的录制,并生成常见的媒体格式文件,如MP4、AVI、MA3等。我们将探讨如何利用这些功能来实现灵活的视频和音频参数设置,以满足不同需求下的录制和生成要求。我们将重点讨论如何配置视频和音频参数,包括分辨率、帧率、编解码器选择、音频采样率、声道设置等。
AUTOSAR从入门到精通-复杂设备驱动(CDD)
CDD是复杂设备驱动的首字母缩写主要为驱动程序或复杂驱动程序,但不限于驱动程序。复杂驱动程序是一种未被AUTOSAR标准化的软件实体,可以通过AUTOSAR接口和/或基本软件模块api访问。 CDD是位于基础软件复杂驱动层的特定模块,与标准BSW模块或Rte交互。 CDD可能需要与分层软件体系结构的模块连接 分层软件架构的模块可能需要连接到CDD CDD可能需要通过Rte连接swc。
HDU 1199 Color the Ball(离散化入门+非线段树做法)
HDU 1199 Color the Ball题意 一个数轴,数轴上点的坐标从1~1e9 一共有n次操作,以a,b,c形式输入,是把a~b的这段区间染色成白色/黑色 询问n次操作后,最长的连续白色区间,输出区间的左端点和右端点 解决 注意到点的范围很大,而且只有2000个区间,4000个点,点十分稀疏,不能使用普通数组进行存储 初学离散化,这是我做的第一道离散化的题(新手入门,还望见谅) 刚开始是想
工业视觉降本300%实战:C# + 开源YOLO如何干掉Halcon/VisionPro?
在当前制造业普遍追求“降本增效”的大背景下,工业视觉检测系统作为产线的眼睛,其成本问题日益突出。通过该方案,我们成功帮助一家电子厂将单条产线的视觉检测成本从15万降低至不足5千(主要为工控机硬件成本),降本幅度超过95%,且系统稳定性经受住了6个月连续生产的考验。:C#负责“工程化”和“业务逻辑”,YOLO负责“智能算法”,二者结合,完美覆盖了工业视觉从算法到落地的全链路。的组合,构建一套高性能、低成本、易维护的工业视觉解决方案,并彻底替代昂贵的付费库。” 这是一个典型的误区。工业相机/USB相机。
【HDU1199】 离散化线段树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1199 题目大意: 一段长度未知的线段,一种操作:a b c ,表示区间[a,b]要涂的颜色,c=w涂白色,c=b涂黑色,问你最长的白色区间段时多长。 解题思路: 就快去南京邀请赛了,最近做题超没状态,CF rating一直掉,这么简单的线段树离散化居...
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
hdu 1199 Color the Ball vector使用
题意: 有无穷多个小球排在一列,编号为1~infinite,然后为这些小球涂色,刚开始时小球都是黑色的,每次给a~b编号的小球涂黑色或者白色,之后统计连续白色小球最长的小球开始编号和结束编号,如果存在多个,输出编号小的那个,如果不存在白色小球序列,则输出Oh, my god 解题: 每次输入,判断是白色还是黑色,如果是白色,直接加入队列,如果是黑色,则与队列中的序列进行比较,如果当前的涂
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
HDU 1199 - Color the Ball 离散化
【题意】现在有几个球排成一排,编号从1开始,开始时所有球为黑色,现在有n(<=2000)次操作,每次操作将l[i]至r[i](均在int范围)的球凃成颜色c[i](黑色'b'或白色'w'),然后找到最长的连续白色球,输出左右端点符号 【离散化】因为l[i]和r[i]都在int范围,显然不不可以开一个2^31-1那么大的数组。将l[i]和r[i]+1离散化,再模拟染色即可。 如果你不...
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
hdu1199(离散化线段树)
Color the Ball Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6689Accepted Submission(s): 1655 Problem Description There are i...
zoj 2301 || hdu 1199 Color the Ball
= = 本来刚A掉URAL类似的,搜题解看看人家咋做的,然后看到有人提起HDU1199 = =。。。看起来似乎一样,就改了改。结果还是需要认真读题!!!这个染色是闭合区间的,而我上个代码是开区间的,这个很成问题。还有,如果没有染色的话,我的那种建树它会报错的!!结果HDU数据弱,
HDU 1199-Color the Ball
染色问题,很明显的线段树~~ 不同的是长度没有规定,要先存储修改范围,再取最大值,从而确定范围。 依然是线段树的模版。。。有点lazy思想 悲剧的是我hdu过了,zoj2301一样的题却一直提示segment fault...改了半天也没改好,放弃了 媛姐的代码貌似很强大,不过我没看懂。。。o(╯□╰)o 代码如下: #include #include #include #defi
【HDU】1199 Color the Ball
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define MAXN 2010 5 using namespace std; 6 struct Line 7 { 8 int left,right,color; 9 };...
ZOJ2301(HDU1199) Color the Ball(离散化)
题意是说,有从 1 开始递增依次编号的很多球,开始他们都是黑色的,现在依次给出 n 个操作(ai,bi,ci),每个操作都是把编号 ai 到 bi 区间内的所有球涂成 ci 表示的颜色(黑 or 白),然后经过 n 次给定的操作后,求最长的连续白色区间的左端点和右端点。 这里有个技巧,就是我们不用记录所有黑色区间的信息,黑色区间的信息只是用来更新白色区间的。需要记录的是每个白色区间的左端,右端。
hdu 1199想用线段树,结果发现不好处理,某天突然想起这方法。。易懂,不好写。。。
#include #include #include #include #include using namespace std; struct node//区间结点 { int a,b; node():a(0),b(0){} node(int aa,int bb):a(aa),b(bb){} bool operator < (const node &bb) { i
HDU-1199 color the ball
唉!这题完全没必要用线段树,用一个很常规的方法就可以过了。 不解释,常规方法就A了。 #include #include int q[100005]; int main() { int n,Lpos,Rpos,a,b,L=100005,R=-1,color; char op[2]; while(scanf("%d",&n)!=EOF){ memset(q,0,sizeof(q));
HDU 1199 && ZOJ 2301 线段树离散化
一段长度未知的线段,一种操作:a b c ,表示区间[a,b]涂为颜色C,w代表白色,b代表黑色,问最终的最长连续白色段,输出起始位置和终止位置 离散化处理,和平常的离散化不同,需要把点化成线段,左闭右开,即对于一段区间[a,b],转化成区间[a,b+1) #include "stdio.h" #include "string.h" #include "algorithm" using n
HDU - 1199 - Color the Ball(线段树)
Color the Ball Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6005 Accepted Submission(s): 1503 Problem Description There are i
hdu1199Color the Ball
#include using namespace std;const int size = 2100;struct Node{ int x, y; bool is_white;}a[size];bool cmp(Node a, Node b)
2059



被折叠的 条评论
为什么被折叠?



