自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Minimum spanning tree(素数筛+思维)

素数筛+思维

2022-07-04 15:36:45 298 1

原创 滑动窗口 /【模板】单调队列

滑动窗口

2022-06-09 11:04:04 214

原创 D. Black and White Stripe

D. Black and White Stripe

2022-06-08 13:58:37 491

原创 哈尔滨理工大学第12届程序设计竞赛 B 抓球

题目链接: B 抓球#include<bits/stdc++.h>using namespace std;#define int long long const int maxn=2e5+5;const int mod=1e9+7;int a[maxn];int sp(int a,int b){ int sum=1; while(b) { if(b&1) sum=sum*a%mod; a=a*a%mod; b/=2; } return

2022-04-04 20:11:38 444

原创 2018年蓝桥杯省赛 C++ B组

题目链接:[蓝桥杯2018初赛]乘积尾零 答案:31题解:通过思考10的产生是由2和5共同作用的,要知道有几个0,每出现一个10,就应从乘数中可以提出一个2、一个5。所以我们把每个数的都分解成乘积的形式 ,统计出 2和 5的数量,取他们的最小值。#include<bits/stdc++.h>using namespace std;#define int long longsigned main(){ ios::sync_with_stdio(false); cin.tie

2022-03-30 20:22:20 1271

原创 [NOIP1998]拼数

题目链接:[NOIP1998]拼数#include<bits/stdc++.h>using namespace std;#define int long longconst int maxn=1e2+5;string a[maxn];bool cmp(string a,string b){ return a+b>b+a;}signed main(){ int n; cin>>n; for(int i=0;i<n;i++) cin>&g

2022-03-28 21:08:34 722

原创 2022上海理工大学校内选拔赛(GPLT)

H.Setsuna的K数列题目链接:Setsuna的K数列 题解:k的幂有两种选择,要么使用要么不使用,那么对应着二进制0和1,而且由于位权递增,从小到大第n个的组合数即是n对应的二进制对应的那种情况。所以这题就是将n转换为二进制,把对应为1的位权加起来,过程中取模,需要用到快速幂#include<bits/stdc++.h>using namespace std;#define int long longconst int mod=1e9+7; signed main(){

2022-03-27 10:27:47 468

原创 Make Equal With CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes)

题目链接:Make Equal With 题解:<1>余数全为0,只要没有1的存在,一定满足余数全为0,因为我们可以每次选择最大的数为x,多次进行该操作<2>余数全为1,我们可以让每个数对其减一进行求余,但是需要满足a[i-1]+1==a[i],因为在对a[i]进行操作时,a[i-1]变为0#include<bits/stdc++.h>using namespace std;#define int long longconst int maxn=1e6+5

2022-03-25 17:17:23 596

原创 2021年第十二届蓝桥杯省赛大学B组

A题答案为:67108864#include<bits/stdc++.h>using namespace std;int main(){ cout<<256*1024*1024/4<<endl;}B题答案:3181#include<bits/stdc++.h>using namespace std;#define int long longint s[100];signed main(){ ios::sync_wi

2022-03-24 19:13:46 466

原创 C. Alice and the Cake

题目链接:C. Alice and the Cake题意: 爱丽丝有一块蛋糕,她要把蛋糕切成n份,每一次操作,她会选择一块蛋糕(另大小为A),将其切成两半,两块大小分别为A / 2, (A + 1) / 2,及分成整数的两半,如果原大小为奇数,则一块会大1,现在给出一个序列,问有没有可能为一块蛋糕经过n - 1次操作后得到的方法一.#include<bits/stdc++.h>using namespace std;#define ll long longint main(){

2022-03-21 20:25:39 578

原创 快速幂算法

传统的求幂算法:时间复杂度非常高(O(指数n)),当指数n非常大的时候,需要执行的循环操作次数也非常大。快速幂算法:能快速计算指数非常大的幂。核心思想是每一步都把指数分成两半,而相应的底数做平方运算。这样不仅能把非常大的指数给不断变小,所需要执行的循环次数也变小,而最后表示的结果却一直不会变。(请认真理解这句话,理解不了也没关系,下面会有具体推导)ll power(ll a,ll b,ll mod) { ll ans = 1; while(b) { if(b&1){ ans=a.

2022-03-21 17:51:30 675

原创 瓜瓜上电工

题目链接:瓜瓜上电工题解:根据题目n和q的取值范围,可以通过暴力实现,注意到题目要求测量的接线柱对 ,一定会在答案流程中以某种顺序出现。而在接线柱对的某个排列中,插入额外的中间情况并不会让答案更优。因此枚举接线柱对的全排列即可。#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;int l[maxn],r[maxn],s[maxn]; int main() { int n,q; cin>

2022-03-20 09:54:24 267

原创 瓜瓜打游戏(EASY)

题目链接: 瓜瓜打游戏(EASY)#include<stdio.h>long long int a[5005],n,p,i,j,b;int main(){ a[0]=1; scanf("%lld %lld",&n,&p); for(i=0;i<n;i++)//第i关 { scanf("%lld",&b); for(j=i;j>=0;j--)//徽章 {

2022-03-20 08:16:31 4451

原创 Armchairs CodeForces - 1525D

题目链接:Armchairsdp[i][j] 代表,前 i 个 1 和前 j 个 0匹配 消耗的最短时间。初始化为dp[0][i]=0;,详细细节看代码。//1 1 1 0 0 0//1 1 0 1 0 0 1//1 0 0 1 1 0 3//0 0 0 1 1 1 5#include<bits/stdc++.h>using namespace std;const int maxn=1e4+5;int a[maxn],z[maxn],o[maxn];int dp[ma

2022-03-14 20:13:45 534

原创 Square-free division (easy version) CodeForces - 1497E1

题目链接:Square-free division (easy version)#include<bits/stdc++.h>using namespace std;int s(int x)//找出质因子的幂为奇数次 { if(x==1) return 1; int k=1; for(int i=2;i*i<=x;i++) { int sum=0; while(x%i==0)//找出质因子的幂的次数 { x/=i; sum++; }

2022-03-13 11:15:21 380

原创 Maximum Sum of Products CodeForces - 1519D

题目链接:D. Maximum Sum of Products#include<bits/stdc++.h>using namespace std;const int maxn=5e3+5;long long a[maxn],b[maxn];long long dp[maxn][maxn];int main(){ int n; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; long long sum=0

2022-03-13 09:26:30 383

原创 Restoring the Permutation CodeForces - 1506E

题目链接:E. Restoring the Permutation题解:按字典序最小的简单一点,字典序大的较为复杂,找出字典序最大的可以通过栈,如果当前的a[i]值和a[i-1]值不相等,说明b[i]的值为a[i],然后将a[i-1]+1到a[i]之间的数存入栈中,栈中的元素应该是升序排列,一旦遇到a[i]==a[i-1]时,便从栈中退出一个元素。#include<bits/stdc++.h>using namespace std;const int maxn=2e5+5;int

2022-03-13 08:41:48 385

原创 牛客练习赛97 C 哦~唔西迪西小姐~

题目链接:C 哦唔西迪西小姐~题解:一个格子存在三种状态,走或者不走或者反转后走,我们可以设定状态都为0和都为1,最后比较都为0所得分数和都为1所得分数,输出最大的那个。细节代码中解释#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;int a[maxn],b[maxn],p[maxn];int n,m;long long s(int x){ long long sum=0; priority_

2022-03-12 09:06:54 1673 1

原创 Codeforces Round #775 (Div. 2)B. Game of Ball Passing

题目链接:B. Game of Ball Passing题解:先找出数组中最大数,通过用剩下数的和进行比较,设剩余和为x,那么他能匹配x+11.sum=0,需要0个球2.sum+1>=mx,需要1个球3.其他情况,需要a[n-1]-sum个球#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;long long a[maxn];int main(){ int t; cin>>t;

2022-03-06 21:30:43 527 3

原创 AtCoder Beginner Contest 242 C 1111gal password

题目链接:C 1111gal password题意:长度为n的数字,每一位数字满足1<=x<=9,|x1-x2|<=1,求出有多少个数字题解:运用数位dp求解#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5,mod = 998244353;long long dp[maxn][10];int main(){ for(int i=1;i<=9;i++) dp[1][i]

2022-03-06 20:31:07 620

原创 AtCoder Regular Contest 136 B - Triple Shift

题目链接:B - Triple Shift按照题意中的操作,逆序数的奇偶性是不变的1 2 3 的逆序数对为03 1 2 的逆序对为2题解: 判断所有数字出现个数相不相同,如果不相同一定不可以判断是否有两个或者两个以上相同的数,有的话一定可以判断逆序对数奇偶性是不是相同,相同可以,不相同不可以#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;int a[maxn],b[maxn],c[maxn

2022-03-05 10:45:10 190

原创 D 切糕

题目链接:D 切糕通过找规律得知:答案为2^sum#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;const int mod=1e9+7;char a[maxn];int main(){ cin>>a; int l=strlen(a); int sum=0; long long s=1; for(int i=0;i<l;i++) { if(a[i]=='(')

2022-03-05 08:17:18 142

原创 C 山楂

题目链接:C 山楂通过下列规律得知:小于3个糖果合并不了,除了5个糖果,其他都可以全部合并,并且合并的个数为a[i]/3,#include<bits/stdc++.h>using namespace std;long long a[100];int main(){ for(int i=1;i<=8;i++) { cin>>a[i]; } long long sum=0; for(int i=1;i<=8;i++) { if(a[i

2022-03-05 08:12:30 155

原创 #10150. 「一本通 5.1 练习 1」括号配对

题目链接:[#10150. 「一本通 5.1 练习 1」括号配对](https://loj.ac/p/10150题目描述Hecy 又接了个新任务:BE 处理。BE 中有一类被称为 GBE。以下是 GBE 的定义:空表达式是 GBE如果表达式 A 是 GBE,则 [A] 与 (A) 都是 GBE如果 A 与 B 都是 GBE,那么 AB 是 GBE下面给出一个 BE,求至少添加多少字符能使这个 BE 成为 GBE。输入格式输入仅一行,为字符串 BE。输出格式输出仅一个整数,表示增加的最少

2022-03-01 21:21:20 221

原创 C. Increase Subarray Sums Educational Codeforces Round 123 (Rated for Div. 2)

题目链接:C. Increase Subarray Sums题意:给定一个长度为n的数组a和x,就是每次加上k个x(k∈[0,n]),然后分别求最大区段和思路:先求出长度为k的(k∈[1,n])长度区间的最大值,然后再分别加上k个x#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;int a[maxn],sum[maxn];int l[maxn];int main(){ int t; cin&

2022-02-26 09:39:47 210

原创 C. Differential Sorting Codeforces Round #772 (Div. 2)

题目链接:C. Differential Sorting题意:选择数组中三个数下标为x,y,z,下标x的值为a[y]-a[z],最少操作使数组变成升序,如果不能成为升序则输出-1题解:可以让前面的数值都为最后两个数,只需判断最后两个数是否是升序,还有一种特殊情况是最后一个数小于0,这种情况如果该数组不是升序一定不可以变成升序,则输出-1#include<bits/stdc++.h>using namespace std;int main(){ int t; cin>&g

2022-02-21 16:25:51 490

原创 C. OKEA Codeforces Round #770 (Div. 2)

题目链接:C. OKEA 题意:n行k列,将1~n*k数字放入该矩阵,条件从每一行选取一串连续数字,让他们平均数为一个整数题解:我们可以一行偶数,一行奇数,这样可以保证从每一行选取一串连续数字且平均值为一个整数,当n为奇数时,必不能构造该矩阵#include<bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--) { int n,k; cin>>n&gt

2022-02-16 16:52:22 248

原创 B.Odd Swap Sort(Codeforces Round #771 (Div. 2))

题目链接:Odd Swap Sort题意:当两数和为奇数可以进行交换,问一个数组是否可以变成递增序列题解:奇偶性相同的两数一定不可交换,统计奇数是否是递增序列和偶数是否是递增序列,因为元素的相对位置是不可改变的#include<bits/stdc++.h>#include<algorithm>using namespace std;const int maxn=1e5+5;int a[maxn],b[maxn];int main(){ int t; cin&gt

2022-02-15 10:52:37 851

原创 C++ bitset函数

C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。构造函数bitset常用构造函数有四种,如下 bitset<4> bitset1;  //无参构造,长度为4,默认每一位为0 bitset<8> bitset2(12);  //长度为8,二进制保存,前面用0补充 string s = "100101"; bitset<10> bitset3(s);  //长.

2022-02-14 20:47:34 451

原创 C. Kill the Monster(暴力、枚举)

题目链接:C. Kill the Monster题解:枚举有多少个金币用于购买血量,那么剩余金币购买战斗力,通过比较可以战斗的场数#include<bits/stdc++.h>using namespace std;int main(){ int t; scanf("%d",&t); while(t--) { long long x,y,a,b,k,w,p; scanf("%lld%lld%lld%lld%lld%lld%lld",&x,&y

2022-02-08 09:41:08 630

原创 B.Fortune Telling Codeforces Round #770 (Div. 2)

题目链接:Fortune Telling题解:由于x+y的奇偶性等于x^y的奇偶性,即只需要判断x+sum和y的奇偶性#include<bits/stdc++.h>using namespace std;int main(){ int t; scanf("%d",&t); while(t--) { long long a,b,c; scanf("%lld%lld%lld",&a,&b,&c); long long sum=b;

2022-02-08 08:32:53 318

原创 #10205. 「一本通 6.3 例 3」最大公约数

高精度压位参考博客:压位#include<bits/stdc++.h>using namespace std;const int maxn=1e3+5;int a[maxn],b[maxn],c[maxn],s[maxn],f[maxn],s0=0,p;void init(int a[]){ string s; cin>>s; int l=s.length(); for(int i=0;i<l;i++) { int h=(l-i+3)/4; a[h

2022-01-21 10:27:03 539

原创 约数合集(数论)

博客链接:约数合集

2022-01-20 22:45:13 265

原创 #10203. 「一本通 6.3 例 1」反素数 Antiprime

参考博客链接:#10203. 「一本通 6.3 例 1」反素数 Antiprime原题来自:POI 2001如果一个大于等于 1 的正整数 n,满足所有小于 n 且大于等于 1 的所有正整数的约数个数都小于 n 的约数个数,则 n 是一个反素数。譬如:1,2,4,6,12,241, 2, 4, 6, 12, 241,2,4,6,12,24,它们都是反素数。请你计算不大于 n 的最大反素数。输入格式一行一个正整数 n。输出格式只包含一个整数,即不大于 n 的最大反素数。样例Input

2022-01-20 15:12:26 438

原创 X-factor Chain LibreOJ - 10206

题目描述原题来自 POJ 3421输入正整数 x,求 x的大于 111 的因子组成的满足任意前一项都能整除后一项的序列的最大长度,以及满足最大长度的序列的个数。输入格式多组数据,每组数据一行,包含一个正整数 x。输出格式对于每组数据,输出序列的最大长度以及满足最大长度的序列的个数。样例Input Output23410100 1 11 12 12 24 6题解:算术基本定理:对于任意一个正整数n,可以将它分解成n个质因子的乘积序列的最大长度为a1+a2+

2022-01-20 10:25:12 420

原创 Not Adding CodeForces - 1627D

题意:给定一个数组,求任意两个数的gcd,若数组不存在改值,则将该值加入,问最多能加入几个数。题解:这个公约数一定小于等于该数组中的最大值 ,a = gcd(b, c) ,我们可以知道b和c一定为a的倍数#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;int book[maxn];int main(){ int n; scanf("%d",&n); int mx=0; for(int

2022-01-19 22:44:00 146

原创 质数(数学基础)

质数的筛选1.Eratosthenes筛选法void s(int n){ memset(book,0,sizeof(book)); for(int i=2;i<=n;i++) { if(book[i]) continue; printf("%d ",i);//i是质数 for(int j=i;j<=n/i;j++) book[i*j]=; }}线性筛法int book[maxn],prime[maxn];void s(int n){ memset(

2022-01-18 10:06:06 284

原创 快速幂(数学基础)

快速幂求(a的b次方%n)int s(int a,int b,int n){ if(b==1) return a; if(b%2==0) { int t=s(a,b/2,n); return t*t%n; } else { int t=s(a,b/2,n); t=t*t%n; t=t*a%n; return t; }}非递归实现int s(int a,int b,int n){ int sum=1; while(b) { if

2022-01-18 09:47:59 280

原创 #10159. 「一本通 5.2 练习 2」旅游规划

思路:判断该点是否可以构成树的直径 ,如果可以则该点位于城市交通网的最长路径上#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;int d1[maxn],d2[maxn],p[maxn],up[maxn];int n,num,mx;int nx[maxn],head[maxn],v[maxn];void add(int a,int b){ v[num]=b; nx[num]=head[a]; he

2022-01-15 09:27:56 281

原创 没有上司的舞会(树形dp)

某大学有N个职员,编号为1~N,校长的编号为1,他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri,但是呢,如果某个职员的直接上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数。Input第一行一个整数N。(1<=N<=100000) 接下来N行,第i+1行表示i号职员的快乐指数Ri。(-128<=Ri

2022-01-14 15:47:16 70

空空如也

空空如也

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

TA关注的人

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