自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 .......

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <unistd.h>#define N 110char s[N];char cmd[N], content[N];char path[N];void split(){ int n = strlen(s), i = 0, j = 0; j =

2021-06-30 22:43:47 117

原创 ..,....

#include <stdio.h>#include <pthread.h>#include <stdlib.h>#include <string.h>#include <semaphore.h>#include <sys/types.h>#include <errno.h>#include <unistd.h>#include <signal.h>sem_t chair;

2021-06-30 22:27:24 112

原创 2021东北四省赛J. Transform(空间几何)

link题意:给出三维空间中两个点的坐标,求第二个点绕第一个点和原点连线旋转r度和-r度得到的两个点中z轴坐标最大的点的坐标。罗德里格斯公式#include <bits/stdc++.h>using namespace std;#define ll long longconst int N=1e5+10,inf=0x3f3f3f3f;const double Pi=acos(-1.0);inline double r_to_d(double rad){//弧度转角度

2021-06-24 15:08:50 461

原创 2021-06-23

#include <stdio.h>#include <sys/types.h>#include <sys/msg.h>#include <sys/ipc.h>#define MSGKEY 75struct msgform{ long mtype; char mtext[1030];}msg;int msgqid,i;void CLIENT(){ int i; msgqid=msgget(MSGKEY,0777)

2021-06-23 09:36:35 67

原创 B Bheith i ngra le(组合数学)

link一个组合数小tip:在一个x行y列的网格中画一个单调不下降的曲线有C(x,x+y)种方法。注意组合数的题,可以先写出暴力的式子,然后进一步化简。在本题中,答案要+1,因为不涂也是一种方法。代码:#include<bits/stdc++.h>using namespace std;const int N=2010,mod=1e9+7;typedef long long ll;int n,m;ll num[N][N],f[N],inv[N];ll ans;ll

2021-06-16 17:56:32 122

原创 abc 202 D - aab aba baa

题目链接笑死,原来没过是因为组合数算错了,大无语。思路:推测第一位是a还是b。如果是a,k会小于C(n,a-1),否则是b。#include<bits/stdc++.h>using namespace std;const int N=1e5+10,M=31*100010;#define ll long longll f[110][110];int main(){ ll a,b,k;cin>>a>>b>>k; int n=a+b

2021-05-27 22:02:26 151

原创 (SWERC 2020)C. Safe Distance

题目链接题意:某人从(0,0)走到(x,y),平面上分布了n个人,问中途经过的距离最近的人的最大距离是多少。思路:二分答案+并查集判断答案是否合法。对二分得到的每一个半径,以n个人为中心画圆,如果两圆相交则放入一个集合,如果与四个边届相交也合并,如果左右,上下,左下,右上边界有任何在同一个集合中,答案不合法。感受:一个神奇的做法,虽然原来也有想到画圆,但是没找到判断答案合法的方法,想不到还能用并查集判断。代码:#include <bits/stdc++.h>using nam

2021-05-16 22:57:55 567

原创 2021天梯赛补题

文章目录感想1. L1-82. L2-23. L2-34. L3-15. L3-2感想今年大家分数都很高,好多230+,然而我只有209(菜鸡流泪去年拿了145是学校中游水平,今年仍然是中游QAQ,复盘一下大概就是状态不好+平常训练不注意细节(谁叫你天天玩的啊喂不能说哪一道题有特别大的问题,但是每一道都出了点小问题叭,就内个拿不了全分,不说了,时隔两周我终于补题了1. L1-8L1-078 吉老师的回归 (15 分)当时只拿了13分,不知道哪错了。妈耶,现在回头一看这么简单,当时可能是拿脚写的

2021-05-03 00:21:39 225

原创 E. Permutation by Sum

题目链接求一个长度n的序列,从L到R的元素总和为s。(序列中元素在1-n之间)首先判断s是否合法。如果合法,假装这个序列从L到R是1 2 3 … R-L+1,再计算s和sum[l…r]的差值。每相差(r-l+1)就把l到r集体往后移动1,相差不到r-l+1的就把后几个移动1.比如n=5 , l=3, r=5, and s=8,第三个元素到第五个初始设为:1 2 3 差值为8-6=2,不足3,所以后两个都后移11 3 4所以整个序列为 2 5 1 3 4时间复杂度为O(n).#includ

2021-04-21 23:38:40 171 1

原创 线性dp.

矩阵问题描述把 1 ∼ 2020 放在 2 × 1010 的矩阵里。要求同一行中右边的比左边大,同一列中下边的比上边的大。一共有多少种方案?答案很大,你只需要给出方案数除以 2020 的余数即可。答案提交这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。题解:dp[i][j]表示将i+j放好之后,第一行放到了第i个位置,第二行放到了第j个位置。状态转移方程:dp[i][j]=dp[i-1][j]+dp[i][j-1

2021-04-17 00:12:35 134

原创 GCD序列

(一)D. GCD of an Array题目链接题意:给出一个长度为n的序列和q次询问,每次询问把序列中的一个元素扩大x倍,输出整个序列的gcd。思路:考虑把每个数质因数分解,用map和multiset实现存储,m[k][x]表示第k个数中含x的公因子的个数,multiset[x]中存储含x的个数序列。如果某个因子个数达到n个,表明每个数字都有该因子,把它算进贡献里面。#include<bits/stdc++.h>using namespace std;#define ll l

2021-03-25 10:40:45 367

原创 Biological Software Utilities(数学)

题目链接题意:给n个点,问有多少棵#include <bits/stdc++.h>using namespace std;#define ll long longconst int N=1e6+10,mod=998244353;int n;int main(){ cin>>n; if(n%2) cout<<'0'<<endl; else{ ll ans=1; for(int i=1;i&l

2021-03-22 23:00:24 338

原创 长度为 k 的上升子序列的个数(dp)

蓝桥杯模拟赛遇到的一个问题,和以前做的最长上升子序列有点像,代码也不知道对了没。希望300块不要白给==问题描述给定一个序列 (a1, a2, …, an), 它的一个上升子序列是指从序列中取出一些元素,按照原来的顺序排列后,是单调递增的序列。 例如,对于序列 (3, 2, 7, 6, 7),取出下标为 2, 4, 5 的元素 a2, a4, a5,即 2, 6, 7,是一个上升子序列。 在这个序列中,有 7 个长度为 2 的上升子序列,例如1.下标 1, 3 对应的 3, 7;  2. 下标

2021-03-20 22:22:05 2497 6

原创 一群小青蛙(筛质数的应用)

题目链接筛掉质数及其次方,问剩下数的lcm。由于求的是lcm,只需考虑n以内质数的贡献即可。考虑2,2是特殊的一个,2的贡献最大是2^(k)*3;其它质数m的贡献最大是m^(k)*2;由于所有质数贡献至少乘了2,筛选指需要筛到题目数据1.6e8的一半即8e7即可。#include<bits/stdc++.h>using namespace std;const int N=8e7+10;const int inf=0x3f3f3f3f;const int mod=1e9+7;

2021-02-04 20:13:03 125

原创 F - Shift and Inversions(树状数组求逆序对)

题目链接题意:求n个如下由0~n-1组成的数组的逆序对a1,a2,…,ana2,a3,…,a1a3,a4,…a2#include<bits/stdc++.h>using namespace std;const int N=3e5+10;const int inf=0x3f3f3f3f;#define ll long longint n,a[N],c[N];void add(int x){ for(int i=x;i<=n;i+=i&-i)

2021-01-31 17:21:43 125

原创 编故事(尺取)

题目链接要从每组五个人中选一个人,使得所有被选中的人的步子差尽可能的小。可以先不管分组,把所有人按照步子大小排序。之后只要选中连续的一个区间,使得区间中的人覆盖了1~n,就可以用这个集合中的最大步子 – 最小步子记录一个可能的答案。只要用尺取法找出所有满足这个要求的集合并比出所有答案中的最小值就是最终的答案。#include<bits/stdc++.h>using namespace std;const int N=5e5+10;const int inf=0x3f3f3f3f;#d

2021-01-31 12:07:55 98

原创 C. Busy Robot

题目链接这么简练的代码感觉是我一辈子写不出来的。。#include<bits/stdc++.h>using namespace std;const int N=100010;int T,n,p,q,t[N],x[N],ans; int main(){ //freopen("c.in","r",stdin); //freopen("c.out","w",stdout); scanf("%d",&T); while(T--){ scanf("%d",&n);

2020-12-22 09:44:50 305

原创 ccf689 D. Divide and Summarize

题目链接前缀和+lower_bound()+分治#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const int N=1e5+5;const int mod=1e9+7;ll t,n,m,a[N],s[N];set<ll> v;int vis[N];void solve(ll l,ll r){ v.insert

2020-12-13 22:36:25 204

原创 trajan割点模板

洛谷P3388#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const int N=2e4+5;const int mod=1e9+7;vector<int> g[N];set<int> v;int dfn[N],low[N],fa[N];int n,m,tot;void tarjan(int x){

2020-12-10 23:47:43 108

原创 cf688div2 D. Checkpoints

题目链接题意:一个闯关游戏有n关(k<=2000),闯关者通过每一关的概率为1/2,如果没通关会回到离他最近的一个复活点,初始和最后一个关卡一定有复活点,中间关卡可能有也可能没有复活点。问你怎样设置关卡和复活点,使得闯关者通过全部关卡的数学期望为k(k<10e18)。思路:首先可以分析小数据。这样一个游戏[1,0,0,0],通过每一关的期望次数[16,8,4,2];假如期望为30,输出1 0 0 1 1;[1,0,0,]->[8,4,2];假如期望为16,输出1 0 0 1

2020-12-09 15:03:54 110

原创 ARC110-D - Binomial Coefficient is Fun(组合数+思维)

题目链接题意:给出一个长为n的数组A,一个数组B的和m,问从B中选出b1,b2,…,bn(bi>=ai),将所有可能的∏(n,i=1) C(bi,ai)相加答案是多少。思路:可以先举出几个样例,细心观察会发现答案等于C(sum+n,m+n),当然需要一些对组合数字的敏感度。然后可以把问题看作用木棍分隔小球的场景。添加木棍的目的是在选取过程中分歌小球。对于A,sum个小球由n个木棍分隔开,小球首尾都存在木棍;对于B,m个小球由n个木棍分隔开。要从B中选出A,即为C(sum+n,m+n)。至于

2020-12-08 09:23:01 541

原创 矩阵模板(乘法,逆矩阵)

定义:priority_queue<Type,Container,Functional>Type 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式,当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆默认type为int(可为string,nobe,double…)priori

2020-11-13 01:10:35 229

原创 set用法(待补充)

set内部结构:RB树set中常用方法:clear()insert()empty()size()count():用于查找某个元素出现的次数,由于set中无重复元素,相当于查找该元素是否出现。find():

2020-11-13 00:42:48 141

原创 cf680 C. Division

题目链接题意:给出t组p,q,求一个最大的x使得p%x0,q%x!=0思路:若p%q!=0,答案为p;若p%q0,找出q的所有因子,找出p除去某一个因子后的最大数,即为答案。之前的思路是用欧氏筛筛质数,但是时间复杂度O(n)太大,不如直接对每个q找因子,时间复杂度O(sqrt(q))。代码:#include<bits/stdc++.h>using namespace std;...

2020-11-07 23:37:17 129

原创 求组合数C(n,m)的三种方法

一.暴力法只能用于小数据,如果答案要取模不能使用(除法直接取模会变)复杂度O(n)ll C(ll n,ll m){ll sum1=1,sum2=1;n=min(n,m-n);for(int i=1;i<=n;i++)sum1*=i;for(int i=m-n+1;i<=m;i++)sum2*=i;return sum2/sum1;}...

2020-11-07 22:13:32 886

原创 包含两端中一个的最长回文序列

#include<bits/stdc++.h>using namespace std;bool is_palindrome(int i,int j,string &s){ int m,n; for(m=i,n=j;m<n;m++,n--){ if(s[m]!=s[n]) return false; } ...

2020-03-24 20:10:56 102

原创 加速输入输出

inline void fast_io() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);}虽然看不懂但是先存起来吧

2020-03-24 20:05:07 173

原创 最大区间dp

给出n个数,求选取其中连续的数字相加,最大值为最大区间(区间长度可为0)输入102 -3 4 -1 -2 1 5 -3 1 1输出7状态转移方程dp[1]=max(a[i]+dp[i-1],a[i])代码#include<bits/stdc++.h>using namespace std;int a,dp,ans=0;int main(){int...

2020-03-15 21:31:21 279

原创 区间dp

题目在最后#include<bits/stdc++.h> using namespace std; const int maxn=105; int a[maxn]; int dp[maxn][maxn]; int main(){ int t,n,j=1; cin>>t; while(t--){ cin>>n; memset(a,0,sizeof(a)); me...

2020-03-14 20:41:37 100

原创 动态规划02

也可以看成n个体积a[]的物体从中选择,恰好装满背包的问题我的代码#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxn=1005;const int maxnn=100005;int a[maxn];int b[maxn]...

2020-03-13 22:51:46 104

原创 动态规划01

求一定区间(时间)内可获得的最大利益#include<iostream>##include<iostream>#include<algorithm>using namespace std;const int maxn=105;int opt[maxn];struct nobe{int sta,end,v,pre;}a[maxn];cmp(...

2020-03-13 17:09:36 120

原创 01背包问题

输入:商品总数N,背包载重W,接下来N排为第i个物品重量w[i],价值v[i]5 202 33 44 55 89 10输出:能带走的最大价值26(打印价值表)#include<iostream>using namespace std;const int maxn=10005;int a[maxn][maxn];int w[maxn];int v[maxn]...

2020-03-12 14:39:09 100

原创 一道输出超限nnnn次的题

题目描述 小七是一个很可爱很努力的女孩子。她对大数的运算非常感兴趣,在学习了几天之后,终于精通了大数的加减乘除。但是自从她学会了 JAVA ,她觉得大数实在是太简单太无聊了,因为运用 JAVA 中 BigInteger 大整数类,可以轻松实现大数的加减乘除。某一天她突然发现,很多大数的题目的数据都有规律。这些数都是由比他小的某个数重复构成,比如说 121212 由 12重复构成 ,23...

2020-03-09 20:30:51 1048 1

原创 c++输出小数位

输出小数点后第n位cout<<setprecision(n)<<endl;

2020-03-07 13:41:00 413

原创 天梯赛某题

题目描述 ²牛牛特别羡慕那些会计数的选手,作为一个计数非常菜的选手,牛牛也想计数变得这么厉害,然而实在是太菜了。牛牛最近又被一个简单计数题难住了,这个题目是这样的,现在有红,蓝,黑,白四种颜色的球无数种。牛牛现在想数有多少种长度为nnn的序列满足红色和蓝色的球的数量都是偶数个,黑色和白色的球的数量都是奇数个。由于这样的序列的个数可能太多了,你只需要输出在模1e9+71e9+71e9+7之后的...

2020-03-02 23:32:15 117

原创 一道WA(太久没写

网上流传一句话:“常在网上飘啊,哪能不挨刀啊~”。其实要想能安安心心地上网其实也不难,学点安全知识就可以。首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:(1).密码长度大于等于8,且不要超过16。(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。这四个字符类别分别为:1.大写字母:A,B,C…Z;2.小写字母:a,b...

2020-03-01 23:17:19 189

原创

杭电题意:n!的位数用log10解决

2020-02-18 22:10:27 97

原创 map查找并记录

题意:输入N个单词,输出单词重复数最多的那个单词。思路:利用map进行单词的记录,再转存进结构体中,利用sort函数排序后输出重复数最多的单词。代码:include<bits/stdc++.h>using namespace std;struct node{string s;int p;}word[200005];int cmp(node a,node b){if(a.pb...

2020-02-17 21:43:41 137

原创 HD

未AC```c#include <stdio.h>#include <string.h>int main(){ int i,j,k,m; char a[1000]; scanf("%d",&m); m=getchar(); **//仅scanf("%d",&m);输入时回车会被当做空格被下面的get(s)读入** while(m--)...

2020-01-07 22:10:53 125

空空如也

空空如也

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

TA关注的人

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