草庐IT

CF_BITMAP

全部标签

BitMap对象当前正在其他地方使用?加锁也没用?

最近在工作中遇到一个问题,就是我有多个线程会调用bitmap对象,运行的时候报错,对象当前正在其他地方使用。第一反应肯定是加锁啊,于是我就在每个用到bitmap的地方都加了锁,但是运行之后依然报这个错  测试代码如下usingSystem;usingSystem.Drawing;usingSystem.Threading;usingSystem.Windows.Forms;namespaceBitMapLockTest{publicpartialclassForm1:Form{privateBitmaptestBitmap;privatestaticreadonlyobjectobj=newo

BitMap对象当前正在其他地方使用?加锁也没用?

最近在工作中遇到一个问题,就是我有多个线程会调用bitmap对象,运行的时候报错,对象当前正在其他地方使用。第一反应肯定是加锁啊,于是我就在每个用到bitmap的地方都加了锁,但是运行之后依然报这个错  测试代码如下usingSystem;usingSystem.Drawing;usingSystem.Threading;usingSystem.Windows.Forms;namespaceBitMapLockTest{publicpartialclassForm1:Form{privateBitmaptestBitmap;privatestaticreadonlyobjectobj=newo

D. 2+ doors(构造 二分图) CF 1715D

题目:​ 现在有一个长度为n的序列待构造,给出m对关系\(i,j,x\),表示\(a_i|a_j=x\),请在满足这m对关系的情况下构造出的最小字典序的序列。分析:​ 每当我们看到最小字典序的时候,基本都是贪心的思想。本题可以知道,我们要让序列前面的数尽可能的小。对于他给出的关系,需要按位来考虑,但是有一些麻烦的就是你确定一个数的一位的时候,他会影响到与他有关系的数,感觉就是一个二分图的思想。我们可以用\(f0[i][j]\)表示第\(i\)个数在第\(j\)位必定填0,\(f1[i][j]\)同理必定填1。顺序遍历序列,枚举位,能填0就填0。实现:​ 对于给出的关系若x在第\(k\)位上为0

D. 2+ doors(构造 二分图) CF 1715D

题目:​ 现在有一个长度为n的序列待构造,给出m对关系\(i,j,x\),表示\(a_i|a_j=x\),请在满足这m对关系的情况下构造出的最小字典序的序列。分析:​ 每当我们看到最小字典序的时候,基本都是贪心的思想。本题可以知道,我们要让序列前面的数尽可能的小。对于他给出的关系,需要按位来考虑,但是有一些麻烦的就是你确定一个数的一位的时候,他会影响到与他有关系的数,感觉就是一个二分图的思想。我们可以用\(f0[i][j]\)表示第\(i\)个数在第\(j\)位必定填0,\(f1[i][j]\)同理必定填1。顺序遍历序列,枚举位,能填0就填0。实现:​ 对于给出的关系若x在第\(k\)位上为0

CF1709A Three Doors 题解

题目大意有\(3\)个门,有两个门后面会有一个钥匙,你现在手中有一把钥匙,问你能不能打开所有的门。题目分析我们可以一步一步推导,既然给了我们一把钥匙编号为\(x\),也就是可以打开编号为\(x\)的门,我们用\(a_x\)表示这扇门后面钥匙的编号,将可以打开的门标记起来,然后产生分类讨论:如果是\(a_x\)等于\(0\)的话,就没有钥匙,不用标记,直接输出NO。如果\(a_x\)不等于\(0\)的话,就说明可以打开下一个门,用\(f\)数组标记,然后可以继续讨论,不过讨论时变成了判断\(a_{a_x}\),以此类推。但是到达最后一次的时候,不管\(a_{a_{a_x}}\)是否等于\(0\)

CF1709A Three Doors 题解

题目大意有\(3\)个门,有两个门后面会有一个钥匙,你现在手中有一把钥匙,问你能不能打开所有的门。题目分析我们可以一步一步推导,既然给了我们一把钥匙编号为\(x\),也就是可以打开编号为\(x\)的门,我们用\(a_x\)表示这扇门后面钥匙的编号,将可以打开的门标记起来,然后产生分类讨论:如果是\(a_x\)等于\(0\)的话,就没有钥匙,不用标记,直接输出NO。如果\(a_x\)不等于\(0\)的话,就说明可以打开下一个门,用\(f\)数组标记,然后可以继续讨论,不过讨论时变成了判断\(a_{a_x}\),以此类推。但是到达最后一次的时候,不管\(a_{a_{a_x}}\)是否等于\(0\)

CF576C 题解

注意到\(\sum\limits_{i=2}^N|x_{p_i}-x_{p_{i-1}}|+|y_{p_i}-y_{p_{i-1}}|\)。本质上是两个点之间的曼哈顿距离。而曼哈顿最小距离生成树要\(O(n^2\logn)\),显然过不了。注意到我们写过一个叫莫队的东西。而莫队的复杂度为\(O(n\sqrtn)\),也就是我们要求的东西。加一点小优化,奇偶排序。就可以过了。怎么证明?可以看一看这一篇博客精简来说就是控制了左右指针跨越块的数量。#includeusingnamespacestd;constintmaxn=1000001;structquery{intl,r,id;}q[maxn]

CF576C 题解

注意到\(\sum\limits_{i=2}^N|x_{p_i}-x_{p_{i-1}}|+|y_{p_i}-y_{p_{i-1}}|\)。本质上是两个点之间的曼哈顿距离。而曼哈顿最小距离生成树要\(O(n^2\logn)\),显然过不了。注意到我们写过一个叫莫队的东西。而莫队的复杂度为\(O(n\sqrtn)\),也就是我们要求的东西。加一点小优化,奇偶排序。就可以过了。怎么证明?可以看一看这一篇博客精简来说就是控制了左右指针跨越块的数量。#includeusingnamespacestd;constintmaxn=1000001;structquery{intl,r,id;}q[maxn]

CF908D New Year and Arbitrary Arrangement 题解

\(0.\)前言有一天\(Au\)爷讲期望都见到了此题,通过写题解来加深理解。\(1.\)题意将初始为空的序列的末尾给定概率添加\(a\)或\(b\),当至少有\(k\)对\(ab\)时停止(注意是“对”,中间可以间隔字符),求\(ab\)期望对数。\(2.\)思路通过查看标签通过阅读题面我们容易发现本题是一道期望DP,但是本题的状态并不很容易想到,设\(f[i][j]\)表示前缀中有\(i\)个\(a\),\(j\)个\(ab\)停止后的期望个数,这样发现转移就容易了很多,不会被\(a\)和\(b\)纠缠不清,设\(A=pa/(pa+pb)\),\(B=pb/(pa+pb)\),则有:\[f

CF908D New Year and Arbitrary Arrangement 题解

\(0.\)前言有一天\(Au\)爷讲期望都见到了此题,通过写题解来加深理解。\(1.\)题意将初始为空的序列的末尾给定概率添加\(a\)或\(b\),当至少有\(k\)对\(ab\)时停止(注意是“对”,中间可以间隔字符),求\(ab\)期望对数。\(2.\)思路通过查看标签通过阅读题面我们容易发现本题是一道期望DP,但是本题的状态并不很容易想到,设\(f[i][j]\)表示前缀中有\(i\)个\(a\),\(j\)个\(ab\)停止后的期望个数,这样发现转移就容易了很多,不会被\(a\)和\(b\)纠缠不清,设\(A=pa/(pa+pb)\),\(B=pb/(pa+pb)\),则有:\[f