mx

loj2336. 「JOI 2017 Final」绳

匿名 (未验证) 提交于 2019-12-02 23:49:02
折一根绳子,绳子上的每一段有颜色和厚度(初始都是1),每次要求折叠部分每段颜色对应相同,每次折叠后厚度叠加。修改一段颜色的费用为该段绳子的厚度。 求对于每种颜色,求在以某种方式将绳子折成长度为2的状态后这个颜色仍存在的情况下费用最小。 感觉自己又斯波了。 最显然的一个性质:在开始修改一定不比在折了几段绳子后修改更劣(因为每个线段最多改一次颜色一定优)。 那那些才是最终合法的情况呢? 把绳子最终折成长度为2时的线段画出来,可以观察到,对于所有情况,相邻两段同色的线段距离一定是奇数。 也就是说,例如下面的最终情形是合法的: 1 2 2 1 1 2 2 1 1 1 1 2 2 1 1 2 因此,我们的目标就是把原序列改成只有两种颜色的上述序列。 继续观察性质,发现除了首尾,同色连通块的大小一定是偶数。 但是这个好像对我们没有什么实质性的帮助。 但是观察到这个性质的伴随性质:所有同色连通块的首位的奇偶性相同。 那么对于一种颜色,如果ta最终必须存在,则我们可以枚举这种颜色连通块的首位的奇偶性。 例如对于这个序列: _ _ 1 1 1 _ _ _ _ 1 1 _ _ _ 1 _ 如果要求所有连通块首位为奇数,还要保证每段大小为偶数,则变为: _ _ 1 1 1 1 _ _ 1 1 1 1 _ _ 1 1 如果要求为偶数,则变为: _ 1 1 1 1 _ _ _ _ 1 1 _ _ 1 1 _

CAD关于图层修改图层亮度操作(com接口c#语言)

蹲街弑〆低调 提交于 2019-12-02 05:34:20
控件提供,让CAD图层上的所有对象,按指定亮度显示功能,比如亮度设置0,表示对象显示成灰色,一般一些背景不让修改的对象放在背景层上,然后把亮度设置成0. Mx_SetLayerBright函数详细说明,参考: http://www.mxdraw.com/help/MxDrawXCustomFunction__Mx_SetLayerBright@LPCTSTR@DOUBLE@LONG.htm Mx_SetBright 函数详细说明,参考: http://www.mxdraw.com/help/MxDrawXCustomFunction__Mx_SetBright@IN_LONG@CString.htm 例如设置图层 222按50%显示, C#代码: MxDrawResbuf param = new MxDrawResbuf(); // 图层名 param.AddString("222"); // 图层亮度. param.AddDouble(50); // 不自动调用更新显示函数 param.AddLong(0); axMxDrawX1.CallEx("Mx_SetLayerBright", param); 来源: https://www.cnblogs.com/yzy0224/p/11732030.html

6380. 【NOIP2019模拟2019.10.06】小w与最长路(path)

蹲街弑〆低调 提交于 2019-12-01 22:28:47
题目 题目大意 给你一棵树,对于每一条边,求删去这条边之后,再用一条边(自己定)连接两个连通块,形成的树的直径最小是多少。 正解 首先,将这棵树的直径给找出来。显然,如果删去的边不在直径上,那么答案就是直径。 接下来考虑删去的边在直径上的情况。 自己连的边应该要是两棵树的直径的中点(中点就是直径上到端点最大距离最小的点)。 答案就是两棵树的直径的一半(当然这是粗略的说法)加上边权,和两棵树内部的直径长度的最大值。 设直径端点为 \(S\) 和 \(T\) ,现在想象直径是横过来的一条线,有一堆树挂在上面。 在直径上从左到右枚举删去哪条边,顺带着维护中点在哪里。 有个结论:中点肯定在原来的直径上。 (后面都以 \(S\) 的一边为例,显然另一边是一样的) 反证法,设中点为 \(x\) , \(x\) 不在直径上。设 \(y\) 为 \(x\) 到 \(S\) 路径上第一个出现在直径上的点。 现在找最远的点 \(z\) 。 如果 \(z\) 在 \(y\) 子树之外,那么路径就是 \(x\) 到 \(y\) 和 \(y\) 到 \(z\) 的距离。这时候如果要使 \(y\) 到 \(z\) 最大,则 \(z=S\) 。这时候将 \(x\) 变成 \(y\) 更优。 如果 \(z\) 在 \(x\) 子树之内,那么 \(x\) 到 \(z\) 的距离比 \(x\) 到 \(S\)

DNS域名工作原理及解析

假如想象 提交于 2019-12-01 08:59:11
DNS域名工作原理及解析 0x00 定义 DNS( Domain Name System)是“域名系统”的英文缩写,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53[1]。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。 开始时,域名的字符仅限于 ASCII 字符的一个子集。2008年,ICANN通过一项决议,允许使用其它语言作为互联网顶级域名的字符。使用基于 Punycode 码的 IDNS 系统,可以将 Unicode 字符串映射为有效的DNS字符集。因此,诸如“XXX.中国”、“XXX.美国”的域名可以在地址栏直接输入并访问,而不需要安装插件。但是,由于英语的广泛使用,使用其他语言字符作为域名会产生多种问题,例如难以输入,难以在国际推广等。 简单来说就是一个将域名翻译成ip地址的系统。 总结以下几点: 1)映射域名与IP 2)使用TCP/UDP:53端口 3)每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符 4)早期的DNS是只支持英文域名解析。在IDNs(国际化域名Internationalized Domain Names)推出以后,为了保证兼容以前的DNS,所以,对IDNs进行punycode转码,转码后的punycode就由26个字母+10个数字,还有“-

Codeforces 1194F. Crossword Expert

扶醉桌前 提交于 2019-11-30 16:13:43
传送门 考虑每一个位置的期望贡献 $P[i]$ 对于第 $k$ 个位置,设 $sum=\sum_{i=1}^{k}t[k]$,那么 $T-sum$ 即为用最短时间完成完位置 $k$ 后多出来的空闲时间 如果 $T-sum>=k$ 那么这个位置一定能完成,贡献为 $1$ 如果 $T<sum$ ,那么这个位置一定没法完成,贡献为 $0$ 否则设 $mx=max(T-sum,k)$,那么这个位置完成的总情况数就是在多出来的时间内任选几个位置多花费 $1$ 那么这个位置有 $\sum_{i=0}^{mx} \binom {mx}{i} $ 种不同的合法方案,再除以总方案数 $2^k$ 即为概率 因为价值为 $1$,那么期望贡献 $P[i]$ 就是 $\frac {1} {2^k} \sum_{i=0}^{mx} \binom {mx}{i} $ 然后发现直接计算一堆组合数的复杂度是 $n^2$ 的,考虑如何优化计算过程 注意到我们每次算组合数时的 $\binom {mx} {i} $ 的 $mx$ 是单调递减的(显然只要考虑 $T-sum<k$ 时的情况),并且每次 $i$ 加一 考虑杨辉三角递推组合数时,$2\sum_{j=0}^{x}\binom {i}{j}=(\sum_{j=0}^{x}\binom {i+1}{j})+\binom {i}{x}$(这个自己画一下杨辉三角就知道了)

【NOIP2012模拟10.20】友好数对

人走茶凉 提交于 2019-11-30 15:59:35
题目链接 友好数对 题目描述 如果一个数 \(a\) 能由一个数 \(b\) 旋转得到,那么我们称为友好数对,如 \(12345\) 和 \(45123\) 为友好数对, \(12345\) 和 \(54321\) 不为友好数对。给出两个正整数 \(L\) , \(R\) ,求有多少友好数对,满足 \(L<=a\) 输入格式: 第一行一个整数 \(T\) ,表示数据组数,每组数据两个正整数 \(L\) , \(R\) 。 输出格式: 对于每组数据,输出一个整数表示答案。 样例输入: 4 1 9 10 40 100 500 1111 2222 样例输出: 0 3 156 287 数据范围: 对于30%的数据满足 \(L,R<=1000\) 对于100%的数据满足 \(L,R<=2000000\) , \(T<=30\) , \(L\) , \(R\) 位数相同。 时间限制: 2S 空间限制: 256M 提示: remove!!! 题解 看到此题题面,首先我就想到了暴力。 暴力的时间复杂度是 \(O(7TR)\) ,略微超出 \(10^8\) ,貌似会TLE。(后来据某些大佬说暴力似乎能过?!) 于是我就想到了使用预处理来减小时间复杂度。 我用 \(s[j]\) 表示当 \(R=j\) , \(L\) 为 \(R\) 的位数的最小值(如 \(R=12345\) 时, \(L=10000

[golang]Go net.lookup包

試著忘記壹切 提交于 2019-11-30 12:03:19
package main import ( "fmt" "net" ) func main() { //查找DNS A记录 iprecords, _:=net.LookupIP("landv.cn") for _,ip:=range iprecords{ fmt.Println(ip) } //查找DNS CNAME记录 canme, _:=net.LookupCNAME("www.baidu.com") fmt.Println(canme) //查找DNS PTR记录 ptr,e :=net.LookupAddr("8.8.8.8") if e != nil { fmt.Println(e) } for _, ptrval:=range ptr{ fmt.Println(ptrval) } //查找DNS NS记录 nameserver,_:=net.LookupNS("baidu.com") for _,ns :=range nameserver{ fmt.Println("ns记录",ns) } //查找DNS MX记录 mxrecods,_ :=net.LookupMX("google.com") for _,mx :=range mxrecods{ fmt.Println("mx:",mx) } //查找DNS TXT记录 txtrecords, _ := net

【SCOI2008】天平 [差分约束 floyd]

自古美人都是妖i 提交于 2019-11-29 21:30:43
SCOI2008 天平 bzoj1077 luogu2447 用floyd跑差分约束== 因为砝码大小只有1、2、3 所以未知时最大差值为2 最小差值为-2 由 \(A+B>C+D\) 可以转为 \(A-C>D-B\) 然后就挨个判断就好了 注意判断等于时的条件 #include<bits/stdc++.h> using namespace std; #define Max(x,y) ((x)>(y)?(x):(y)) #define Min(x,y) ((x)<(y)?(x):(y)) const int N=50+10,M=1e6+10,inf=0x3f3f3f3f; int n,A,B,c1,c2,c3,mx[N][N],mn[N][N]; char opt[N]; int main(){ freopen("in.txt","r",stdin); scanf("%d%d%d",&n,&A,&B); for(int i=1;i<=n;++i){ scanf("%s",opt+1);mx[i][i]=mn[i][i]=0; for(int j=1;j<=n;++j) if(j!=i){ if(opt[j]=='-') mn[i][j]=-2,mx[i][j]=-1; else if(opt[j]=='+') mn[i][j]=1,mx[i][j]=2; else if(opt[j

Manacher's Algorithm 马拉车算法

元气小坏坏 提交于 2019-11-28 13:18:28
预处理 每相邻的两个字符间添加一个"#",使所有偶数长度回文子串变成奇数,转化成求奇数长度的回文子串 因为奇+偶=奇,所以通过添加#统一成奇数 bob --> #b#o#b# 回文子串长度为3,处理后为7 noon --> #n#o#o#n# 回文子串长度为4,处理后为9 P[i]数组 \(P[i]\) 数组:以 \(i\) 点为中心的回文子串的半径 规律: 回文子串的长度为半径减1,起始位置为中间位置-半径再除以2 故只要我们找到最大的半径,就可以找到最大的回文子串 # 1 # 2 # 2 # 1 # 2 # 2 # 1 2 1 2 5 2 1 6 1 2 3 2 1 /* "#2#2#1#2#2#",以中间的 '1' 为中心的回文串半径是6,未添加#号的回文子串为 "22122",长度是5 "#b#o#b#",以中间的 'o' 为中心的回文串的半径是4,而 "bob"的长度是3 "#n#o#o#n#",以最中间的 '#' 为中心的回文串的半径是5,而 "noon" 的长度是4 中间的 '1' 在字符串 "#1#2#2#1#2#2#" 中的位置是7,而半径是6,7-6=1,刚好就是回文子串 "22122" 在原串 "122122" 中的起始位置1 "bob","o" 在 "#b#o#b#" 中的位置是3,但是半径是4,这一减成负的了,所以我们应该至少把中心位置向后移动一位

[IOI1998]Polygon

浪子不回头ぞ 提交于 2019-11-28 06:23:06
luogu 传送门 题解 一道经典的区间DP,既又环形结构,又需要思考怎样维护“最优子结构”的性质 首先我们不难想到用dp[l,r]表示第l个节点和第r个节点合并后最大顶点上的最大值 如果只是有加法运算,其实就与合并石子无异 但问题来了—— 有乘法 所以如果我们只维护最大值,显然不对 例如:5*5<-9*-9 这启示我们同时维护一个最小值 我们简单来说: 乘法 最大值 维护: 最大乘最大 最小乘最小 最小值 维护: 最大乘最大 最小乘最小 前大乘后小 前小乘后大 加法 最大值 维护: 最大加最大 最小值 维护: 最小加最小 这样下来这个题就不难了qwq CODE #include<cstdio> #include<algorithm> #define mxx 0x7fffffff using namespace std; int n,ans=-mxx,a[150],mx[150][150],mn[150][150]; char c[150]; int main() { register int i,j,k,len; scanf("%d\n",&n); for(i=1;i<=n;++i) scanf("%c %d",&c[i],&a[i]),getchar(),a[n+i]=a[i],c[n+i]=c[i]; for(i=1;i<=(n<<1);++i) for(j=1;j<=(n<