- 博客(70)
- 收藏
- 关注
原创 Kivy打包apk教程(含kivydev64)2022最新可用
Kivy是一个非常便捷的Python开发应用的开源框架,但是Kivy导出apk的方法在网络中繁杂,可用性低,作者通过网络学习和亲身实践,对kivy打包apk进行一个总结。
2022-08-12 15:53:27
6590
4
原创 CSS学习笔记
基础语法.class#id* all/*注释*/大小和位置width:height:max-width:max-height:left:top:right:bottom:position:/* static无视left等参数 relative是听从left等参数 fixed始终保持不动 absolute根据上一层定位 sticky黏性*/z-index:/*优先级*/颜色colorrgba(0, 128, 0, 0.3);/*RGB颜色*/op
2022-03-19 11:58:27
206
原创 JAVA FX学习笔记
Scene键盘鼠标事件库import javafx.input.MouseEvent;import javafx.input.KeyEvent;添加监听scene.setOnMousePressed();scene.setOnMouseDrag();scene.setOnKeyPressed();监听事件自定义public void MouseClickListener(MouseEvent event){ int x,y; x=event.getX(); y=event.get
2021-11-21 13:47:13
1574
原创 判负环
题目传送门以上题面与正常判负环有所差别,并且下方代码需要修改一部分内容方可通过。代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;long long head...
2019-11-15 09:36:35
192
原创 二维树状数组
int a[2000][2000],n;int lowbit(int x){ return x&(-x);}void change(int x,int y,int c){ while(x<=n) { int t=y; while(t<=n) { a[x][t]+=c; t+=lowbit(t); } x+=lowbit(x); ...
2019-11-13 22:02:14
162
原创 bzoj1725 [Usaco2006 Nov]Corn Fields牧场的安排
添加链接描述解题方法状压dp,先dfs预处理出状态,然后一行一行地转移代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;long long s[1<<13];long long tot=...
2019-11-13 12:31:30
457
原创 康托展开
康托展开简介康托展开是求1∼N1\sim N1∼N的一个给定全排列在所有1∼N1\sim N1∼N全排列中的排名的一种算法。算法介绍对于一个全排列我们该如何计算排名,我们可以一位一位的思考,如果我们发现这位为之后一共有kkk个数待选,我们发现这个位置上一定经历过k×(n−i)!k\times (n-i)!k×(n−i)!,那么我们只需要一位一位的走,找出这个kkk然后累加起来就可以了。对...
2019-11-11 20:26:18
138
原创 NOIP2018 货币系统
解题方法我们发现这个新的系统的货币一定是都属于原来的集合内的,所有我们只需要判断原来的数能不能被其他的数替代。然后我们自然就有一种想法就是从小到大找。这个时候如果这个数无法被替代,那么这个数一定会被选中,如果能被替代就不要了。而从小到大正好可以避免漏选的情况,我们发现aia_iai都比较小,我们就可以暴力修改一个数能不能从已知的可以转移的数转移来,然后每次加入这个不可以替代的数的时候更新一下...
2019-11-08 20:07:59
341
原创 CF1245C Constanze's Machine
题目传送门题面给你一个字符串,其中两个uuu是可以变成www,两个nnn是可以变成mmm,当然也可以不会,问有可能有多少的字符串。解题方法首先我们要先判断一下m和wm\text{和}wm和w是否出现过,如果出现过那么就直接输出000结束,如果不是我们就开始dpdpdp,我们发现如果这两个字符可以合并,那么dp[i]=d[i−1]+d[i−2]dp[i]=d[i-1]+d[i-2]dp[i]...
2019-11-08 18:23:18
329
原创 luogu2112 鸿雁传书
题目传送门题意给你nnn个单词,在保证顺序不变的情况下让你把他们分成kkk行,使得每行字母数的方差最小,求最小方差。解题方法我们发现这个不能改变顺序的,而且我们也发现平均值是个定值,不会随我们的安排而改变,所以我们就可以安全的递推了,我们定义dp[i][j]dp[i][j]dp[i][j]表示前iii个单词共安排jjj行的最小方差,我们发现就这个递推式就变成了:dp[i][j]=min(d...
2019-11-08 16:45:38
131
原创 CF1256E Yet Another Division Into Teams
題目傳送門題面你有nnn個選手,每個選手都有一個勢力值,你要把他們分成多個小組,每個小組最少要有3個人,每個小組的多樣性值為勢力值最大值減去最小值,問讓你提出一種分組方式使得多樣性總和最小。解題方法我們發現組分的越多,答案一定越小,所以說我們發現每個小組的人數一定是3−53-53−5人,然后我們就可以通過dpdpdp求答案了,我們能夠發現的遞推式如下:dp[i+3]=min(dp[i+3...
2019-11-07 22:13:46
280
原创 [NOI2001]炮兵阵地
题目传送门题意在n×nn\times nn×n的棋盘放若干个炮兵,有的位置不能放,每一个炮兵的攻击范围如下:你需要放置最多的炮兵。问最多能放多少。解题方法首先对????状压。设dp[i][s1][s2]dp[i][s1][s2]dp[i][s1][s2]表示到了第i行,这一行放的状态是s1,上一行放的状态是s2的方案数。然后枚举下一行放的情况,判断是否合法进行转移。复杂度是O(n×8m...
2019-11-06 21:15:35
175
原创 [HAOI2009]逆序对数列
题目传送门题意求长度为nnn的有kkk个逆序对数由1..n1..n1..n组成的排列有多少解题方法我们考虑一个一个的往里面加数,我们发现每次加进去的那个数一定是最大的数,并且在我们决定放的位置时他一定会产生后面的数的数量个逆序对,然后我们就可以尝试递推了,因为你每次加进去的这个数产生的贡献最大是i−1i-1i−1的,然后我们就可以递推了:dp[i][j]=∑k=1jdp[i−1][k]dp...
2019-11-06 19:23:44
293
原创 [SCOI2005]互不侵犯
题目传送门题面你有一个n×nn\times nn×n的棋盘,你有kkk个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。解题方法状压dp入门题目,使用二进制压缩每个位置上的国王摆放情况,然后转移dp[i][j][k]dp[i][j][k]dp[i][j][k],表示在第iii行放了kkk个国王,其中第iii行状态...
2019-11-06 17:42:16
172
原创 CF1209D Cow and Snacks
题目传送门题意有nnn个菜和kkk个人,每个人都有喜欢的两种菜,他会吃掉自己喜欢的菜,如果没有他喜欢吃的菜,他就会沮丧,让你安排一种吃菜顺序,让沮丧的人变少。解题方法先连边,我们发现不连通的没有影响,我们考虑连通块大小大于 111 的,如果这里里面包含 nnn 盘菜,我们可以发现我们可以通过安排顺序能让n−1n-1n−1个人满足,因为除了第一个人吃两盘其他的都吃一盘,然后用并查集维护一下,...
2019-11-05 15:58:05
342
原创 [NOIP2013]货车运输
题目传送门题意给你一张带权无向图,每次给你两个点,然你选出一个路径使得这条路径上的边权最小值最大,输出这个最小值。解题方法我们发现这个边一定实在最大生成树上,我们就只需要建一颗最大生成树,然后倍增lca就可以了。代码#include<iostream>#include<cstdio>#include<cstring>#include<al...
2019-11-04 17:48:39
169
原创 最近公共祖先(LCA)
LCAlca在处理一个树上问题非常的常用,接下来就是利用倍增来求LCA的介绍。首先我们发现在往上跳的过程中,不需要一步一步的走,我们可以直接大步子往上跳直接跳到LCA上,这是我们就想到使用倍增来求LCA,我们先预处理出来大步跳到的点,然后我们就要二进制那样拆解的向上跳,但是我们要从大数开始跳。下面为代码。#include<iostream>#include<cstdio&...
2019-11-04 16:40:36
125
原创 [NOIP2009]最优贸易
题目传送门题意给你一张nnn个点mmm条边的图,告诉你一些边是否为双向边,让你找到一种路径1→u→v→n1 \rightarrow u \rightarrow v \rightarrow n1→u→v→n,使得av−aua_v-a_uav−au最大。解题方法我们发现我们只对aua_uau和ava_vav感兴趣,但是我们需要找到三条路径,使得111号点能够到达 uuu,uuu能到达v...
2019-11-03 20:25:48
165
原创 [CF1144F]Graph Without Long Directed Paths
题目传送门题意给你nnn个点和mmm条边,让你给所有的边定向,问是否能使得所有的路径长度都小于222。解题方法我们发现图是有向的,而且所有的路径长度都要小于2,那么就一定没有任何连续的两条边,那么对于一个点来说,所有的边要么是全都是指向这个点的,要么是从这个点发出的,然后这样就是一个二分图,只要染个色判断一下就好了代码```cpp#include<iostream>#...
2019-11-03 15:02:50
137
原创 CF915F Imbalance Value of a Tree
题目传送门题意给你一颗树,问你每条简单路径上最大点权减去最小点权的和是多少。解题方法我们其实可以把最大点权和最小点权分开计算,最后计算贡献就可以了,我们先解决最大点权的,首先我们把所有的点权都从小到大排序,然后依次加边,我们发现这个边最终对于答案的贡献就是两个的点数之积,但是对于点权好像很难处理,我们可以考虑转化一下,定义两个点之间的连边的权值为这两个点的权值的最大值,最小值的部分以是一样...
2019-10-27 20:39:46
174
原创 CF830B Cards Sorting
题目传送门题意你有一个长度为 nnn 个队列,你每次取出这个队列的队首,如果这个数是队列中最小的数那么就把他丢掉,否则就放在队列的队尾。解题方法我们首先就想到了暴力的做法,每次枚举第一个然后扔到后面去,复杂度是o(n2)o(n^2)o(n2)的,发现根本过不了,于是我们就要想到一些优化,我们发现这个队列就和一个环一样,所以我们先把原来的aaa数组复制一遍,因为我们每次取出下一个被扔走的数一...
2019-10-25 13:20:23
352
原创 [luogu 1631]序列合并
题目传送门题意给你两个长度都为 nnn 的整数序列 aia_iai 和 bib_ibi ,问你求出前nnn小的ai+bja_i+b_jai+bj解题方法我们一看到小,就首先想到把两个数组都从小到大排序一遍,然后我们发现了 nnn 个如下的不等式a1+b1≤a1+b2≤a1+b3≤...≤a1+bna2+b1≤a2+b2≤a2+b3≤...≤a2+bn...an+b1≤an+b2≤...
2019-10-24 20:15:03
121
原创 [BJWC2012]冻结
题目传送门题意你有一张图,起点是 111 ,终点是 nnn ,你能最多 kkk 条边上加速,加速指让这个边的权值变成原来的一半,求最短路。解题方法我们可以考虑分层图的做法,每上一层就不能再下来了,这样我们就可以建 kkk 层图,每层图都是一样的,都是初始的图,然后连接两个不同的层需要是一个单向边,这个边的边权是这条边边权的一半,且是单向边,那么我们就跑一遍dijstradijstradij...
2019-10-24 09:34:58
204
原创 [NOIP2011]聪明的质检员
题目传送门题意你有nnn个零件,给你mmm个区间,其中:yi=∑i=liri(a[i].w>W)∗∑i=liri(a[i].w>W)∗a[i].vy_i=\sum_{i=l_i}^{r_i}(a[i].w>W)*\sum_{i=l_i}^{r_i}(a[i].w>W)*a[i].vyi=i=li∑ri(a[i].w>W)∗i=li∑ri(a[i...
2019-10-23 15:56:45
173
原创 [51nod1686]第k大区间
题目传送门这个是满足二分性的,只需要二分判断一下是否成立就可以了。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;long long a[100005],b[100005];long long calc(...
2019-10-21 21:39:09
142
原创 三目运算符
三目运算符在有些时候写简短代码时经常用到,然后我经常忘记该怎么写,于是特此来写一篇博客。用法我们在看代码时经常看到以下这种用法条件 ? 成立时运算式 : 不成立时运算式三目运算符分为三段,第一段为条件,第二段为前面条件成立时进行的操作,而第三段自然就是不成立时的操作了。为了方便易懂,上发的代码是等效于下方的代码的if(条件){ 成立时运算式}else{ 不成立运算式}...
2019-10-21 21:23:49
516
原创 离散化模板
因为我之前写离散化总是用一些奇怪的方法导致效率较低,所以特此写一篇博客来保存一个正经的模板#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){ int n; scanf("%d",&a...
2019-10-21 21:15:18
120
原创 [HDU4415]Assassin’s Creed
题意你有一把耐久度为 mmm 的刀,每次杀一个敌人需要 aia_iai 的耐久度,同时得到一个能杀 bib_ibi 个人的刀,问你最多能杀多少个敌人和最小的花费。解题方法可以讨论 bib_ibi 是否大于0,我们考虑两种贪心策略,第一种是按 aia_iai 为关键字排序从小到大杀,第二种我们就是优先杀一个 bi>0b_i>0bi>0的人,然后看看能不能杀全场,如...
2019-10-16 20:32:09
147
原创 CF61D Eternal Victory
题目传送门题意有一个序列,每个正整数numnumnum都要有一个与之匹配的相反数−num−num−num,把正整数视为左括号,负整数视为右括号,特定地确定一些为右括号,问你这个序列能否为匹配的序列。解题方法因为右括号是负的并且指定了一些括号一定是右括号,所以我们就要考虑从后向前扫,然后我们想让这个序列尽可能匹配,所以就是让右括号对于前面的括号影响减小,然后我们就贪心的想,如果这个右括号能匹...
2019-10-08 20:13:45
169
原创 [SCOI2009]windy数
题目传送门题意所有相邻位数差距大于等于二的数称为windywindywindy数,问l∼rl\sim rl∼r有多少个windywindywindy数。解题方法这个题是数位dpdpdp的板子题。我们关注的相邻的两位数是否差的绝对值是否大于等于2,我们就可以关注位数来解决这个题,我们定义一个二维数组dp[i][j]dp[i][j]dp[i][j]表示长位 iii 首位数是 jjj 中有多少个...
2019-10-04 16:34:32
119
原创 [ZJOI2010]数字计数
题目传送门题意给你 lll 和 rrr ,问你 0∼90\sim90∼9在这里面分别出现了多少次。解题方法这个题是数位 dpdpdp 的板子题,对于每一个数我们关注的是他第 iii 位上的数是什么,而不是关注其他的东西,那么我们这个样子就非常好处理了,我们就一位一位向前转移好了,我们定义一个三维数组 dp[i][j][k]dp[i][j][k]dp[i][j][k],表示到第 iii 位上...
2019-10-04 15:31:51
181
原创 [luogu2827]蚯蚓
题目传送门题意一开始有 nnn 条蚯蚓,每次取出最长的蚯蚓,然后切成两段,一段为uv×li\frac{u}{v}\times l_ivu×li,另一段为剩下的,同时其他的蚯蚓都会增长 qqq ,然后询问你在t,2t,3t,4t,5t...t,2t,3t,4t,5t...t,2t,3t,4t,5t...时刻取出的蚯蚓长度和 mmm 次操作后第t,2t,3t……t,2t,3t……t,2t,3t...
2019-10-03 16:11:31
117
原创 [HEOI2015]兔子和樱花
题目传送门题意有一棵树,里面有很多点,每个点上有一个樱花量 a[i]a[i]a[i] ,然后他的儿子数为 son[i]son[i]son[i] ,删除点以后这个点的樱花和儿子都会继承给他的父亲,问最多删除多少点,能满足删除的点的父亲满足 a[i]+son[i]≤ma[i]+son[i]\leq ma[i]+son[i]≤m,输出最多删除的点数解题方法我们很容易就会想到从下向上来解决本到题,...
2019-10-03 13:21:55
126
原创 [NOI2011]食物链
题目传送门题意有 nnn 个物种,两种物种之间存在在同类,xxx吃yyy的关系,每次给出一个条件,如果与之前冲突就是假话,否则就是正确的话。解题方法我们尝试把这个点开三倍,一类用来存他本身的点,第二类用来存他捕食的点,第三类用来存被捕食(天敌)的点,如果他们两个是同类的话,就把第一类点的连起来,第二类点的连起来,第三类点的连起来,如果是捕食的话,就把捕食的第一类和被捕食的第二类连起来,把被...
2019-10-03 10:00:58
142
原创 [JSOI2007]建筑抢修
题目传送门题意有 nnn 个损坏的建筑,每个建筑修复需要 tit_iti 时间,每个建筑如果在 did_idi 时间仍然没有修好就会毁掉,问最多能修好多少个建筑。解题方法建筑在时间线上不断的毁掉,我们可以很容易的想到把 did_idi 从小到大排序,如果在这个时间之后我们就把这个建筑毁掉,然后我们就以 did_idi 为关键字排序,从小到大排序遍历,然后定义一个变量 nownown...
2019-10-02 15:42:24
161
原创 POJ3045 Cow Acrobats
题目传送门题意每个奶牛有重量和力量,他么会叠在一起,每只奶牛的危险度为他上面的牛的之质量减去他的力量,让你给他们一个上下的关系,使最大的危险值最小,输出这个危险值。解题方法我们考虑两个相邻的奶牛 iii 和 jjj ,他们上面的牛的质量为 GGG 。那么如果 iii 奶牛在上面的时候危险度分别为 : G−si和G+wi−sjG-s_i和G+w_i-s_jG−si和G+wi−sj那...
2019-10-02 12:59:07
156
原创 CF161B Discounts
题目传送门题意你要去买 nnn 个东西,你有 kkk 个购物车,然而买的东西有两种,为凳子和铅笔,如果这个购物车里面有凳子,那么里面最便宜的物品打五折。解题方法我们的目标就是让打折的钱数尽量多,然而我们发现如果有凳子,打折的价格只会是价格小于等于这个凳子价格的,那么我们就把前 k−1k-1k−1大的凳子单独拿出来打折,剩下的放在最后的购物车里面,当然如果凳子数小于等于k−1k-1k−1,...
2019-10-02 11:03:18
173
原创 CF140C New Year Snowmen
题目传送门题意给你很多半径大小不同的雪球,一个雪人需要三个不同大小的雪球,问你最多能做几个雪人。解题方法把雪球出现次数从大到小排序,放入堆中,每次取出数量最多的三个雪球构成雪人,这样保证了雪球多的多用,雪球少的少用。代码#include<iostream>#include<cstdio>#include<cstring>#include<...
2019-10-02 10:57:58
200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人