自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 超级码力在线编程大赛初赛 第二场

文章目录1.三角魔法2.区间异或3.五字回文4.小栖的金字塔1.三角魔法判断一个点在不在三角形内,有多种方法,这里采用面积法,即整个三角形的面积=3个小三角形面积之和。采用海伦公式计算面积。class Solution {public: /** * @param triangle: Coordinates of three points * @param point: Xiaoqi's coordinates * @return: Judge whether y

2020-08-31 15:55:39 204

原创 ST(三)——#2597. 「NOIP2011」选择客栈

题目链接:https://loj.ac/problem/2597解题思路本题用ST算法在LOJ上会爆内存,因为数据量最大2e6,据说换成char不会爆但我不会QAQ ,在洛谷上,最大数据量只有2e5,可以过。还有一种O(n)的方法,直接线性递推,不过比较难想,每次枚举第二个酒店,然后看前面小于等于p的酒店在哪,如果在上一个就更新sum,否则不更新。ST版#include <iostream>#include <stdio.h>#include <cstring&gt

2020-08-31 11:53:33 173

原创 ST(二)——#10123. 「一本通 4.2 练习 2」Balanced Lineup

题目链接:https://loj.ac/problem/10123解题思路也是RMQ模板题,同时预处理区间最大值,和最小值,之后查询的时候减一下就行。AC代码#include <iostream>#include <stdio.h>#include <cstring>#include <algorithm>using namespace std;const int maxn=5e4+5;const int LogN=20;int a[ma

2020-08-31 10:07:24 152

原创 ST(一)——#10122. 「一本通 4.2 练习 1」天才的记忆

题目链接:https://loj.ac/problem/10122解题思路RMQ模板题,直接上代码。AC代码#include <iostream>#include <stdio.h>#include <cstring>#include <algorithm>using namespace std;const int maxn=2e5+5;const int LogN=20;int a[maxn];int f[maxn][LogN+5];

2020-08-31 09:52:59 219

原创 RMQ问题(ST算法)

RMQ(Range Maximum(Minimum) Query)问题,即询问某个区间内的最大值或最小值,这里主要涉及RMQ问题的求解方法——ST算法。简介ST算法通常用于多次询问一些区间的最值的问题中。我们知道线段树可以O(mlogn)的解决RMQ问题(m是查询次数)。但是如果m很大(一般1e6以上),但是n比较小,就可以用ST算法解决RMQ问题,O(nlogn)预处理+O(1)查询。算法流程1.预处理S...

2020-08-30 20:41:58 763

原创 超级码力在线编程大赛初赛 第一场

1.树木规划贪心即可,最左边第一个不移动,如果之和一个与之前间隔小于d,就移除掉。class Solution {public: /** * @param trees: the positions of trees. * @param d: the minimum beautiful interval. * @return: the minimum number of trees to remove to make trees beautiful. */

2020-08-29 20:18:42 203

原创 状压dp(三)——#10174. 「一本通 5.4 练习 3」动物园

题目链接:https://loj.ac/problem/10174解题思路挺难想的状压dp题,我们看到只有5是可以状压的,所以我们就从这里入手,设dp[i][j]表示以i为结尾的连续5个围栏动物状态为j时的最多满足人数,以i结尾,举例即i=7,则对应连续5个为7,6,5,4,3。我们发现dp在i时的状态可由在i-1的状态推出,dp[i][j]=max(dp[(i&15)<<1],dp[(i&15)<<1|1])+cal[i][j]。cal[i][j]表示以i为结尾

2020-08-29 08:58:21 202

原创 状压dp(二)——#10173. 「一本通 5.4 练习 2」炮兵阵地

题目链接:https://loj.ac/problem/10173解题思路本题也与国王类似,只不过他需要看前面两行的状态,因此dp需要记本行与前一行的状态,才能转移,否则,如果只记录本行的状态,会导致错误。因为前面两个dp的状态可能不能同时取最大。AC代码#include <iostream>#include <stdio.h>#include <cstring>#include <algorithm>#include <vector&g

2020-08-28 16:20:04 162

原创 状压dp(一)——#10172. 「一本通 5.4 练习 1」涂抹果酱

题目链接:https://loj.ac/problem/10172解题思路就和国王问题一样,只不过国王是二进制,这题需要转化为三进制,然后从k往前dp,再从k往后dp,两个方案数相乘即是答案。AC代码#include <iostream>#include <stdio.h>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const

2020-08-28 12:11:01 219

原创 位运算操作(超详细)

最近刷状压dp的题目,顺便把一些位运算操作总结一下,欢迎各位dalao指正补充。基础位运算符右移>>:x>>1,去掉x最后一位,相当于x除以2(向下取整),比如110(6)>>1=011(3),111(7)>>1=011(3)。x>>n,去掉x后n位,相当于x除以2n(向下取整),比如1100(12)>>2=11(3).左移<<:x<<1,最后一位补0,相当于x乘以2,比如110(6)<<1.

2020-08-23 19:06:29 1519

原创 Codeforces Round #665(Div.2) A,B,C,D

A Distance and Axis令OB=x,OA=nn<x,要满足x-(x-n)=k,即n=k,此时ans=k-n.n>x,要满足|x-(n-x)|=k,分两种情x况。x>n-x,此时2x-n=k,即x=(n+k)/2,首先n>=k,其次如果n和k奇偶性不同,还需要移动一次使其奇偶性相同。因此ans=max((n+k)%2,k-n)。x<n-x,此时n-2x=k,x=(n-k)/2,这里发现与上面满足的条件是一样的。#include <bits/stdc

2020-08-22 17:24:21 126

原创 数位dp(四)——#10169. 「一本通 5.3 练习 4」数字计数

题目链接:https://loj.ac/problem/10169题目大意给定两个正整数 a 和 b,求在[a,b]中的所有整数中,每个数码 (digit) 各出现了多少次。解题思路数位dp,维护每个数字出现次数和数字个数。设当前状态为ans,子状态为tmp。状态转移如下。注意有前导零时,不能把之前的零算进去,所以要特判一下。AC代码#include <iostream>#include <stdio.h>#include <cstring>#inc

2020-08-22 11:32:38 237

原创 数位dp(三)——hdu4507 吉哥系列故事——恨7不成妻

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4507题目大意问区间[a,b]不和7有关数字的平方和。如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关1、整数中某一位是7;2、整数的每一位加起来的和是7的整数倍;3、这个整数是7的整数倍;解题思路挺难的数位dp的题,首先难点在于我们需要dp的不止是数量,还需要dp所有数的和以及平方和。定义结构体node{tot,s1,s2},tot表示数量,s1表示和,s2表示平方和。node d

2020-08-21 22:11:31 199

原创 数位dp(二)——hdu2089 不要62

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089题目大意问区间[a,b],中满足没有4或者62的数字有多少个。解题思路很明显的数位dp,设定dp状态为dp[pos][tag],表示到第pos位状态是tag的有多少满足条件的(具体解释看代码注释)。然后套模板就解决了。AC代码#include <iostream>#include <stdio.h>#include <cstring>#include &

2020-08-21 15:54:46 265

原创 数位dp(一)——Loj #10166. 「一本通 5.3 练习 1」数字游戏

题目链接:https://loj.ac/problem/10166题目大意求区间[a,b]有多少数字满足数位加和%N等于0。解题思路看范围,很明显的数位dp。我们设定状态dp[pos][N][i]表示在%N的情况下,到第pos位,数位加和%N是i,会有多少数字满足数位加和%N等于0。之后就是很easy的套模板环节。AC代码#include <iostream>#include <stdio.h>#include <cstring>#include &l

2020-08-21 15:18:40 247

原创 树形dp(二)——叶子的染色(Loj 10161)

题目链接:https://loj.ac/problem/10161题目大意给一棵m个结点的根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根、内部结点和叶子均可)着以黑色或白色。你的着色方案应该保证根结点到每个叶子的简单路径上都至少包含一个有色结点(哪怕是这个叶子本身)。 对于每个叶结点u,定义c[u]为从根结点从U的简单路径上最后一个有色结点的颜色。给出每个c[u]的值,设计着色方案,使得着色结点的个数尽量少。解题思路这题的关键就是dp的设计,一般来说树形dp都是以某点为根的子树的状态

2020-08-19 18:13:42 303

原创 树形dp(一)——骑士(Bzoj 1040)

题目链接:https://loj.ac/problem/10162题目大意每个骑士都有一个仇人,问要怎么选择骑士团成员,使成员不会有仇人在内,并且战斗力最大。解题思路如果这道题是一棵树,那么就是树的最大独立集的模板题,但是本题是一个有许多独立联通块的图,并且每个联通块必定是有且仅有一个环。为什么呢?因为骑士和仇人只会构成一条边,那就是一个点只会有一条边出去指向仇人,所以n个点会有n条边而且是同一联通块,那么必定是有且仅有一个环。知道这个之后,我们再看如果按照树的最大独立集的方法去做有什么问题。问题就

2020-08-19 15:48:37 194

原创 2020百度之星复赛1003-Range K-th Maximum Query

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6840这里直接证明构造的正确性,首先使和最大,那么假如 l=8,k=3。那么我们可以这样构造,0000011100000111…,1的位置按a[]数组从大到小排序,然后依次填到1的位置,我们发现所有111里的第3个1,会贡献l-k+1次,除了第一个111外,其它的111的第一个1和第二个1会贡献1次,这样就保证了最大。因为,a1…an是从大到小,那么第一个111中的第3个1便是第三大的数,让其贡献尽可能多,这样

2020-08-14 20:25:15 190

原创 2020牛客暑假多校 (第一场) E,J

F Infinite String Comparision本题相当于比较 a+b 与 b+a 。这里简要证明一下,以样例的第三组数据为例子。a=“aba”,b=“abaa”,a+b=“abaabaa”,b+a=“abaaaba”。很清楚地发现,a+b>b+a,这样怎么推出a>b呢,我们一步步看,首先a[0]=b[0],a[1]=b[1],a[2]=b[2]说明a的所有元素与b的前三个元素是相等的。a[3]相当于b的第一个元素,因为a[0]=b[0],此时a[3]就相当于a[0],同理a[4]=

2020-08-14 18:00:42 141

原创 Codeforces Round #664(Div.2) A,B,C,D

A Boboniu Likes to Color Balls分情况讨论一下即可。全为偶数,或者三个为偶数,是肯定可以的。只有两个为偶数是肯定不可以的。有一个为偶数,或者没有一个是偶数的情况,得看是否红,蓝,绿气球都有,如果都有则可以(可以转化成成立的情况),否则不可以。#include <iostream>#include <stdio.h>using namespace std;int T,r,g,b,w;int main(){ scanf("%d",&amp

2020-08-13 11:45:25 151 3

原创 2020牛客暑假多校训练营 (第十场) A,E,I

A Permutation官方题解分析的很清楚了,数*2构成环,数*3连向其它的环,所以我们就是能乘2就乘2,不能乘2就乘3。#include <iostream>#include <stdio.h>#include <cstring>#include <algorithm>using namespace std;const int maxn=1e6+5;int T,p;bool vis[maxn];int ans[maxn];int m

2020-08-13 11:27:47 200 1

原创 2020牛客暑假多校训练营 (第九场) A,E,F,I,J,K

A Groundhog and 2-Power Representaion模拟题,直接开个栈模拟一下即可,具体看代码。#include <iostream>#include <stdio.h>#include <stack>using namespace std;const int maxn=2e4+5;char str[maxn];stack<int>stc1;stack<char>stc2;int num[maxn];in

2020-08-11 21:29:53 187

原创 2020牛客暑假多校训练营 (第八场) E,G,I,K

G Game SET暴力枚举,因为某些神奇的结论,如果找不到n一定小于等于20,所以我们到第21就肯定能找到,这样暴力的时间复杂度就足够了。#include <iostream>#include <stdio.h>#include <set>#include <map>using namespace std;const int maxn=257;int T,n;map<string,int>mp;struct node{

2020-08-04 15:43:42 180

原创 2020牛客暑假多校训练营 (第七场) B,D,H,J

B Mask Allocation递归,有n*m个口罩,我们可以发现最优策略是每次从中选min(n,m)*min(n,m),假设选的是m*m,那么此时还剩(n-m)*m个口罩,这样我们就把问题分解成了一个更小的问题,递归求解即可。#include <iostream>#include <stdio.h>#include <vector>using namespace std;const int maxn=1e7+5;int T;int n,m;vecto

2020-08-04 15:20:04 235

UnrealEngine观察者模式案例+事件分发器

UnrealEngine观察者模式案例+事件分发器

2024-08-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除