ACM
FlashCanSavetheWorld
不想起床
展开
-
D - Snuke Prime(大数差分)
思路:差分,但是由于数据很大所以需要使用map#include<bits/stdc++.h>using namespace std;const int N = 1e6+5;int arr[N],arr2[N];#define int long longmap<int,int>mp;void solve(){ int n,C; cin>>n>>C; int a,b,c; for(int i =0;i<n;...原创 2021-01-12 17:00:03 · 269 阅读 · 0 评论 -
Educational Codeforces Round 99 (Rated for Div. 2)D. Sequence and Swaps
思路:因为arr的大小才500所以采取硬暴力的方法,由于需要输出一个非递减的排列,又因为换的元素比arr[i]本身小,所以必须从前向后换,但是不确定是否前面已经排好序,所以此时枚举arr中的所有元素,还可以进行减枝,但是没有必要#include<bits/stdc++.h>using namespace std;const int N = 505;vector<int>arr,store;int dp[N];int n;bool check(){ for(int原创 2020-12-02 12:43:43 · 146 阅读 · 0 评论 -
Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2)C. Bouncing Ball
Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2)C. Bouncing Ball思路:动态更新每个格子的最小值,最后查找能跳出去的几个格子的最小值即可(注意最后比较时格子长度不能短于p)#include<bits/stdc++.h>using namespace std;const int N = 1e5+5;int arr[N];int dp[N];void solve(){原创 2020-12-01 16:03:08 · 119 阅读 · 0 评论 -
线段树区间更新及查询
lazy数组理解(延迟更新)设当前结点对应区间[l, r],待更新区间[a, b]当 a ≤ l ≤ r ≤ b,即 [l, r]∈[a,b]时,不再向下更新,仅更新当前结点,并在该结点加上懒标记,当必须得更新/查询该结点的左右子结点时,再利用懒标记的记录向下更新(pushdown)——懒标记也要向下传递,然后移除该结点的懒标记。这样就不用每次都更新到叶子结点,减少了大量非必要操作,从而优化时间复杂度。板子题:A Simple Problem with IntegersTime Limit: 50原创 2020-12-01 10:53:09 · 71 阅读 · 0 评论 -
线段树单点更新及区间查询
I Hate ItTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 147005 Accepted Submission(s): 51483Problem Description很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写原创 2020-11-30 17:16:27 · 81 阅读 · 0 评论 -
L2-004 这是二叉搜索树吗? (前序递归查找)
一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,其左子树中所有结点的键值小于该结点的键值;其右子树中所有结点的键值大于等于该结点的键值;其左右子树都是二叉搜索树。所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。输入格式:输入的第一行给出正整数 N(≤1000)。随后一行给出 N 个整数键值,其间以空格分隔。输出格式:如果输入序列是对一棵二叉搜索树或其镜像进行原创 2020-11-29 16:54:44 · 211 阅读 · 0 评论 -
完全二叉树根据前中后序建树
用树状树组存树根据树的前中后序遍历思想递归建树前序:void dfs(int i){ if(i>n) return; nodes[i]=arr[cnt]; cnt++; if(i*2<=n){ dfs(i*2); } if(i*2+1<=n){ dfs(i*2+1); }}中序:void dfs(int i){ if(i>n) return;原创 2020-11-29 11:27:02 · 323 阅读 · 0 评论 -
Codeforces Round #678 (Div. 2)C. Binary Search
思路:通过题目所给的二分法,判断pos位置两边的元素应该比它大的数和比它小的数,然后通过排列组合求解题目链接#include<bits/stdc++.h>using namespace std;const int N = 1e3+5;int Jc[N];#define int long longint mod = 1e9+7;void calJc() //求maxn以内的数的阶乘{ Jc[0] = Jc[1] = 1; for(int i = 2; i原创 2020-11-29 11:27:33 · 67 阅读 · 0 评论 -
Educational Codeforces Round 98 (Rated for Div. 2) D. Radio Towers
思路:找到规律后是一个斐波拉契数列然后快速幂取逆即可#include<bits/stdc++.h>typedef long long ll;using namespace std;const int N = 1e6+5;#define int llint f[N];int mod = 998244353;int fastpow(int a,int b){ int res=1; while (b) { if (b & 1)原创 2020-11-23 17:16:38 · 132 阅读 · 0 评论 -
质因数分解快筛
#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef long long LL;ll n, Max = 0;inline ll mul(ll a, ll b, ll mod){ ll d = (long double)a / mod * b + 1e-8; //还必须是long double……double精度不够 ll r = a * b - d * mod; re原创 2020-11-11 10:20:06 · 81 阅读 · 0 评论 -
L2-002 链表去重 (printf输出5位前面补0用法)
题目传送门#include<bits/stdc++.h>using namespace std;typedef long long ll;//#define int llconst int N = 1e5+5;int vis[N];struct node{ int address; int data; int next; int flag=0; node(int a,int b,int c):address(a),data(b),.原创 2020-09-28 20:17:48 · 136 阅读 · 0 评论 -
C. Mortal Kombat Tower
题目链接:https://codeforces.com/contest/1418/problem/C#include<bits/stdc++.h>typedef long long ll;using namespace std;const int N = 2e5+5;const int inf = 0x5fffff;int a[N];int dp[N][2];void init(int n){ for(int i =0;i<=n;i++) for(in.原创 2020-09-23 17:51:26 · 133 阅读 · 0 评论 -
前缀和算法
例如 给定一个数组求某一区间(下标x到x+y上)所有数字相加和为0,求这样区间存在的个数#include<iostream>#include<cstring>#include<vector>#include<cmath>#include<queue>#include<stack>#include<map>#include<set>#include<ctime>#include<原创 2020-09-09 11:17:08 · 156 阅读 · 0 评论 -
最小生成树,黑白点问题
A Very Easy Graph ProblemTime Limit: 5000/2500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 427 Accepted Submission(s): 153Problem DescriptionAn undirected connected graph has n nodes and m edges, The i-th edge’s原创 2020-08-07 14:52:35 · 251 阅读 · 0 评论 -
逆元
(b*x)%mod = 1 称 x为b关于mod的逆元;以下算法为求a关于mod的逆元int ex_gcd(int a,int b,int& x,int& y){ if(b==0) { x=1; y=0; return a; } int ans = ex_gcd(b,a%b,x,y); int tmp = x; x = y; y = tmp-a/b*y; return ans原创 2020-07-27 20:15:26 · 94 阅读 · 0 评论 -
关于ios::sync_with_stdio(false);和 cin.tie(0)加速c++输入输出流
https://www.cnblogs.com/PrayG/p/5749832.html转载 2020-07-22 18:13:48 · 162 阅读 · 0 评论 -
树的dfs找叶子节点
#include <cstdio>#include <vector>#include <algorithm>using namespace std;#define N 200000 + 5int n, m, rt, cnt, Deg[N], Leaf[N];vector<int> Vec[N];void dfs(int z, int fa)//fa记录上一个节点的编号,即判断是否经过{ if (Deg[z] == 1) ..原创 2020-07-14 20:14:45 · 412 阅读 · 0 评论