- 博客(940)
- 收藏
- 关注

原创 结论---
每次做题收获的一些个人总结的知识点(如有不对 望指出)一 数论:1. 如果一个数没有奇因数,那么他一定是2的次幂(cf #697 (Div. 3) A)2. 与运算符(&)(优先级低于== 一定要注意括号)两个同时为1,结果为1,否则为0;“与运算”的特殊用途:(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。(2)取一个数中指定位方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的
2021-01-27 18:55:35
224
原创 239. 滑动窗口最大值 (单调队列 模板
情况二:如果队尾的值小于等于当前值,则pop_back()情况一:判断数组值是否在滑动窗口的范围。情况三:将当前值加入队尾,队头作为答案。单调队列是求解滑动窗口的最大值。
2024-01-13 23:30:44
455
原创 11. 盛最多水的容器 (相向双指针)
如果一个边a固定,则比他小的边b长度只会更小,高也会更低,面积也就更小,如果是比他大的边b,会被a的更矮边作为面积,同时长也会更小。
2024-01-12 22:09:29
391
原创 2982. 找出出现至少三次的最长特殊子字符串 II (规律 分类讨论
情况1:只有一个最长字串L1,那最长长度就是L1-2。情况2a:两个子串,长度不同时,则取最小的哪个长度。找三个长度最长的子串,先把相同字母的字串统计起来。情况2b:两个子串长度相同时,取最小长度L2-1。情况3:三个子串中取最小的长度L3。
2024-01-06 17:21:53
439
原创 B. I Hate 1111 (记忆化搜索 数论
添加链接描述可以发现高位的1111都可以由11或者111组成 那么判断是否能被11整除 或者减去111再整除记忆化mp存储是否可以组成
2022-06-11 12:01:26
217
原创 B. Move and Turn(数论 思维
添加链接描述如果是偶数,可以上下和左右分别走n/2+1如果是奇数,左右上下分别为n/2+1或者n/2+2 两种情况要累加A robot is standing at the origin of the infinite two-dimensional plane. Each second the robot moves exactly 1 meter in one of the four cardinal directions: north, south, west, and east. For t
2022-06-05 21:54:14
149
原创 E. Tetrahedron (线性dp 压缩空间
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1e7+9;#define int long longint mod=1e9+7;signed main(){ std::ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); int n; cin>>n; // dp[2][0]=3; // dp
2022-05-21 20:27:49
181
原创 A. Boredom(线性dp
添加链接描述#include<bits/stdc++.h>using namespace std;#define int long longconst int N=1e5+9;int mp[N],dp[N][2];//前i个数的最大分数 选或不选signed main(){ int n; cin>>n; for(int i=1;i<=n;i++){ int x; cin>>x; m
2022-05-21 19:54:52
156
原创 7-3 家谱处理 (树的存储
添加链接描述#include<bits/stdc++.h>using namespace std;map<string,string>fa;string num[110];int main(){ int n,m; cin>>n>>m; getchar(); for(int i=1;i<=n;i++){ string s; getline(cin,s); int su
2022-05-14 12:54:55
201
原创 带黄狗的礼物 (重复组合问题 概率论
添加链接描述从n个数选m个数 不考虑顺序,每个数可以选任意次的方案数为C(m+n-1,m)#include<bits/stdc++.h>using namespace std;const int N=2e7+9,mod=1e9+7;#define int long longint q_pow(int a,int b){ int ans=1; while(b){ if(b&1)ans=ans*a%mod; a=a*a%mod;
2022-05-12 09:26:02
161
原创 P1077 [NOIP2012 普及组] 摆花
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=110,mod=1e6+7;int dp[N][N],arr[N];//前i朵花 一共j朵的方案数int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++)cin>>arr[i]; dp[0][0]=1; for(int i=1;i<
2022-05-12 08:24:53
90
原创 CF414B Mashmokh and ACM (dp
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=2100,mod=1e9+7;int dp[N][N];//长度为i 最大元素为j种类int main(){ int n,k; cin>>n>>k; // dp[0][0]=1; for(int i=1;i<=n;i++)dp[1][i]=1; for(int i=2;i<=k;i++){
2022-05-12 08:18:44
98
原创 P1057 [NOIP2008 普及组] 传球游戏 (dp
添加链接描述dp表示 传递i次后第j个人的方案数当前人的方案数等于左边或者右边传递的总和#include<bits/stdc++.h>using namespace std;const int N=35;int dp[N][N];int main(){ int n,m; cin>>n>>m; dp[0][1]=1; for(int i=1;i<=m;i++){ for(int j=1;j<=n;j+
2022-05-11 22:10:40
389
原创 P1048 [NOIP2005 普及组] 采药 (滚动数组 01背包
添加链接描述#include<bits/stdc++.h>using namespace std;const int N=1100;int dp[2][N],g;int main(){ int T,M; cin>>T>>M; for(int i=1;i<=M;i++){ int x,y; cin>>x>>y; g=1-g; for(int j=0
2022-05-11 22:03:11
105
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人