cstring

duilib入门简明教程 -- 部分bug (11)

余生颓废 提交于 2021-01-04 10:17:21
一、WindowImplBase的bug 在第8个教程 【2013 duilib入门简明教程 -- 完整的自绘标题栏(8)】 中,可以发现窗口最大化之后有两个问题, 1、最大化按钮的样式还是没变 ,正确的样式应该是这样的 2、再次点击最大化按钮,不能还原到正常大小。 这个是WindowImplBase的bug,已经提交给官方有一段时间了,但是貌似没有被合并到SVN上去,所以这里说明一下, 我们需要在WindowImplBase的OnSysCommand函数里,在if( ::IsZoomed(*this) != bZoomed )里面加上下面这段代码: if( ::IsZoomed(*this) != bZoomed ) { CControlUI* pbtnMax = static_cast<CControlUI*>(m_PaintManager.FindControl(_T("maxbtn"))); // 最大化按钮 CControlUI* pbtnRestore = static_cast<CControlUI*>(m_PaintManager.FindControl(_T("restorebtn"))); // 还原按钮 // 切换最大化按钮和还原按钮的状态 if (pbtnMax && pbtnRestore) { pbtnMax->SetVisible(TRUE ==

【赛后总结+部分题解】2019中国大学生程序设计竞赛(CCPC)

浪尽此生 提交于 2021-01-04 08:03:07
赛后总结:   T:今天状态一般,甚至有点疲惫。然后12点比赛开始,和队友开始看题,从最后往前面看,发现数学题公式看不懂。然后发现队友已经双开做1001和1006了,我看着1007有人A,开始做1007。看了一会发现这是一个简单签到题,构造一下就完事了。然后一遍A,结束。在他们看1008的时候,我回去看1002和1003,1002的题意没看清楚,队友说的也有点模糊,然后不知道怎么下手。开始看1003,因为A的人真的好多呜呜呜。从AC自动机一直re转为后缀自动机,然后不会。结束了。今天对队伍的贡献太少了,复杂度也没算好,一直在re。做题策略还是有点问题,不该纠结自己不会的领域。然后也有很多不会的知识需要去弥补。 P:lucky,从中间看到的第一题就是一道签到题。但由于读题不完整,在输出格式上WA了2-3次。所幸,过了。然后,就去看了钓鱼那题,将题意告诉了队友,队友有思路直接开做,我负责着错误样例。期间,我考虑到的一个点跟队友说,队友无法理解,我就想着自己打打看。AC后,才发现,队友这次想复杂了。接着的1002,1003,只能说自己的知识储备不够,大概从题目能够知道用了什么算法,但无法解决。   J:今天状态贼差,1008WA了七八次还是没A出来,结果是我想复杂了,队友一下就A了,还是太弱了,1002是线段树,但是不知道该怎么做,看来应该做一下线段树专题了。 部分题解: 1001 ^&

noip2018 赛道修建

烂漫一生 提交于 2021-01-04 08:02:04
洛谷P5021 http://210.33.19.103/contest/1050/problem/3 http://210.33.19.103/contest/1054/problem/3 multiset版本(TLE) 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #include<vector> 5 #include< set > 6 using namespace std; 7 #define fi first 8 #define se second 9 #define mp make_pair 10 #define pb push_back 11 typedef long long ll; 12 typedef unsigned long long ull; 13 typedef pair< int , int > pii; 14 #define int ll 15 struct E 16 { 17 int to,nxt,d; 18 }e[ 200100 ]; 19 int f1[ 100100 ],ne; 20 int n,m; 21 int d1[ 100100 ],d2[ 100100 ]; // d1表示最大产生答案,d2表示剩下的到根最长路径 22 int x; 23

2018.7.31 Noip2018模拟测试赛(十六)

爷,独闯天下 提交于 2021-01-04 07:32:58
日期: 七月最后一天 总分: 300分 难度: 提高 ~ 省选 得分: 30分(少的可怜) 我太弱了:(题目目录) T1: Mushroom追妹纸 T2: 抵制克苏恩 T3: 美味 失分分析:(QAQ) 开始全部题目看了一遍,第二题期望dp,果断放弃…… 看到T3,感觉像是线性基,但是要修改,似乎不可做……(QAQ) 只剩下T1,想到正解——后缀数组+KMP,结果忘记怎么打,耗了整个比赛…… 最后T1打炸了,成功炸成屎…… 剩下的二十分钟,赶紧打一个T3线性基暴力,但样例竟然过不了…… 定睛一看,[○・`Д´・ ○],我TM竟然理解错题意了!!MMPPP!! 最后T3暴力30分……………… 题解: T1:Mushroom追妹纸 字符串题,前两个条件后缀数组求最长公共字串。 第三个条件,用 KMP 求出$s_3$在前两个串出现的位置,在统计答案的时候,不要选到$s_3$就好了 CODE: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 6 int n,n1,n2,n3,m,ans= 0 ; 7 int nxt[ 100005 ],pos[ 100005 ],f[ 100005 ]; 8 int tp[ 100005 ],rak[ 100005 ],tax[

内存断点与硬件断点

浪子不回头ぞ 提交于 2021-01-04 03:39:40
Windows内核分析索引目录 :https://www.cnblogs.com/onetrainee/p/11675224.html 内存断点与硬件断点 一、内存断点   内存断点的本质是 修改页属性,触发页异常,走0E号中断 。   1. 设置内存断点:      页属性如下:     #define PAGE_NOACCESS 0x01     #define PAGE_READONLY 0x02     #define PAGE_READWRITE 0x04     #define PAGE_WRITECOPY 0x08     #define PAGE_EXECUTE 0x10     #define PAGE_EXECUTE_READ 0x20     #define PAGE_EXECUTE_READWRITE 0x40     #define PAGE_EXECUTE_WRITECOPY 0x80     我们调用 VirutalProtectEx 函数来修改页属性。     比如,当我们设置内存访问断点,我们将相应的地址所在的页设置为 PAGE_NOACCESS。        VirtualProtectEx(handle, (PVOID)debugAddress, 1 , PAGE_NOACCESS, &oldProtote)     之后

HDU3400 三分套三分

馋奶兔 提交于 2021-01-03 11:40:44
题意 就是给你两条线段AB , CD ,一个人在AB以速度p跑,在CD上以q跑, 在其他地方跑速度是r。问你从A到D最少的时间。 三分AB ,然后再三分CD ,模板题目,这题卡精度 eps不能少 1 #include <cstdio> 2 #include <cstring> 3 #include <queue> 4 #include <cmath> 5 #include <algorithm> 6 #include < set > 7 #include <iostream> 8 #include <map> 9 #include <stack> 10 #include < string > 11 #include <vector> 12 #define pi acos(-1.0) 13 #define eps 1e-9 14 #define fi first 15 #define se second 16 #define rtl rt<<1 17 #define rtr rt<<1|1 18 #define bug printf("******\n") 19 #define mem(a,b) memset(a,b,sizeof(a)) 20 #define name2str(x) #x 21 #define fuck(x) cout<<#x" = "<<x<<endl 22

概率、期望

浪子不回头ぞ 提交于 2021-01-03 07:59:19
BZOJ1076 奖励关 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关。 在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃)。 宝物一共有n种,系统每次抛出这n种宝物的概率都相同且相互独立。 获取第i种宝物将得到Pi分,但并不是每种宝物都是可以随意获取的。 第i种宝物有一个前提宝物集合Si。只有当Si中所有宝物都至少吃过一次,才能吃第i种宝物(如果系统抛出了一个目前不能吃的宝物,相当于白白的损失了一次机会)。 注意,Pi可以是负数,但如果它是很多高分宝物的前提,损失短期利益而吃掉这个负分宝物将获得更大的长期利益。 假设你采取最优策略,平均情况你一共能在奖励关得到多少分值? 1<=k<=100,1<=n<=15 正着做感觉不是很方便,所以考虑倒着做。 //Serene #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> using namespace std; #define ll long long #define db double #define For(i,a,b) for(int i=(a);i<=(b);++i)

欧拉素数筛选

岁酱吖の 提交于 2021-01-02 07:07:01
欧拉素数筛法: 首先: n=factor max * p 每一个合数可以表示成这样 其中 factor max 为n的最大因数,p满足 1、它是素数 2、它比factor max 的所有因数小 即p为n的最小素因数 证明: 假设p不是素数,那么p=p1*p2*……,其中pi为素数,那么factor就是不是最大因数 所以可以引出欧拉筛法 对于一个数,把他最为一个数的最大因子,显然可以利用已有的素数,产生一些合数只有一种产生方法(只有一个factor max ), 那么可以枚举 i 判定prime[n]是不是最小素因数就可以保证枚举的不多不少 根据 prime[n] | i 来判定是否完全枚举 prime[n]充当最小素因子,一旦被整除就break,后面没有筛除的,说明i不是他们的最大因数。这样就不会重复了。 1 #include<cstdio> 2 #include<cstring> 3 const int maxn= 10000 ; 4 5 int prime[maxn+ 1 ]; 6 void getprime() { 7 memset(prime, 0 , sizeof (prime)); 8 for ( int i= 2 ;i<=maxn;i++ ) { 9 if (!prime[i]) prime[++prime[ 0 ]]= i; 10 for ( int j= 1 ;j

第七届蓝桥杯省赛---蚂蚁感冒

与世无争的帅哥 提交于 2020-12-31 11:50:52
长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。 这些蚂蚁中,有1只蚂蚁感冒了。 并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。 请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。 第一行输入一个整数 n ( 1 < n < 50), 表示蚂蚁的总数。 接着的一行是 n个用空格分开的整数 Xi (- 100 < Xi < 100), Xi的绝对值, 表示蚂蚁离开杆子左边端点的距离。 正值表示头朝右,负值表示头朝左,数据中不会出现 0值,也不会出现两只蚂蚁占用同一位置。 其中,第一个数据代表的蚂蚁感冒了。 要求输出 1个整数,表示最后感冒蚂蚁的数目。 例如,输入: 3 5 -2 8 程序应输出: 1 再例如,输入: 5 -10 8 -20 12 25 程序应输出: 3 资源约定: 峰值内存消耗 < 256M CPU消耗 < 1000ms 分析:可以随机设第一只蚂蚁感冒,然后根据蚂蚁的方向分别讨论,蚂蚁相碰时,可以认为是穿过,与掉头效果相同。。。 第一只蚂蚁不管方向朝哪它右边的蚂蚁只要向左走就可能碰撞感染(特殊情况除外),同样,第一只蚂蚁左边的蚂蚁只要朝右边走也可能被感染,这样就很容易得到这样的公式 ans = 左边蚂蚁向右走的数量+右边蚂蚁向左走的数量

CCF 201412-2 Z字形扫描

生来就可爱ヽ(ⅴ<●) 提交于 2020-12-25 07:24:37
CCF 201412-2 Z字形扫描 第一次的思路做错了嘤... 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 int arr[ 505 ][ 505 ]; 5 bool visit[ 505 ][ 505 ]; 6 const int dr[] = { 0 , 1 , 1 ,- 1 }; // 右0,左下1,下2,右上3 7 const int dc[] = { 1 ,- 1 , 0 , 1 }; 8 int n; 9 bool inside( int x, int y) 10 { 11 return x>= 0 && x<n && y>= 0 && y< n; 12 } 13 void solve( int r, int c, int dir, int num) 14 { 15 if (r> 0 || c> 0 ) cout<< " " ; 16 cout<< arr[r][c]; 17 visit[r][c] = false ; 18 if (num == n*n) return ; 19 if (r == 0 && inside(r+dr[ 1 ],c+dc[ 1 ]) && visit[r+dr[ 1 ]][c+dc[ 1 ]]) 20 { // 在第一行而且存在左下,左下没有读取 21