算法竞赛
FreeGo~
这个作者很懒,什么都没留下…
展开
-
线段树之点更新区间求和模板题-hdu1166
http://acm.hdu.edu.cn/showproblem.php?pid=1166#include<bits/stdc++.h>using namespace std;const int maxn=200000+10;int a[maxn],t[maxn<<2];int N;char str[233];int L,R;void pushup(int k){ t[k]=t[k<<1]+t[k<<1|1];}void bui原创 2020-10-25 15:35:59 · 144 阅读 · 0 评论 -
线段树之点更新求最值模板题 hdu1754
#include<iostream>using namespace std;const int maxn=200000+10;const int INF=0x3f3f3f3f;int a[maxn],t[maxn<<2];int N,M;char str;int L,R;void pushup(int k){ t[k]=max(t[k<<1],t[k<<1|1]);}void build(int l,int r,int k){原创 2020-10-25 15:32:53 · 171 阅读 · 0 评论 -
线段树-区间更新-区间求和模板题 洛谷P3372
线段树-区间更新-区间求和模板题 洛谷P3372#include<bits/stdc++.h>using namespace std;const int maxn=1e5+7;typedef long long ll;ll t[maxn<<2];ll a[maxn];int lazy[maxn<<2];int n,m;void pushup(int k){ t[k]=t[k<<1]+t[k<<1|1];}void原创 2020-10-25 15:30:27 · 169 阅读 · 0 评论 -
快速排序
#include&lt;bits/stdc++.h&gt;using namespace std;int part(int a[],int l,int r){ int x=a[l]; int i=l; int j=r+1; while(1) { while(i&lt;r&amp;&amp;a[++i]&lt;=x); w...原创 2018-10-29 11:44:31 · 95 阅读 · 0 评论 -
蓝桥杯-剪邮票
剪邮票如【图1.jpg】, 有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。#include&lt;bits/stdc++.h...原创 2018-10-31 09:15:50 · 241 阅读 · 0 评论 -
原码、反码、补码总结
正数的原码,反码和补码都一样,符号位为0;负数的反码为原码取反,补码为反码+1,符号位为1。负数在计算机中以补码形式存储,比如-5就是以(-5)的补码存储,-5的值就是5的二进制码取反+1。x&amp;amp;(-x)意思就是x&amp;amp;(x的取反+1),即:保留x的最低位 1 ,其余变为0.lowbit(x)=x&amp;amp;(-x)(x-1)即:最低位1变为0,后面0都变为1,x&amp;amp;(x-1)...原创 2018-10-30 04:59:52 · 253 阅读 · 0 评论 -
蓝桥杯-寒假作业
寒假作业现在小学的数学题目也不是那么好玩的。看看这个寒假作业:□ + □ = □□ - □ = □□ × □ = □□ ÷ □ = □(如果显示不出来,可以参见【图1.jpg】)每个方块代表1~13中的某一个数字,但不能重复。比如:6 + 7 = 139 - 8 = 13 * 4 = 1210 / 2 = 5以及:7 + 6 = 139 - 8 = 13...原创 2018-10-30 21:57:46 · 537 阅读 · 0 评论 -
unique去重函数
先sort,再uniqueint n = unique(a,a+n) - a;n为去重后数组长度#include<bits/stdc++.h>using namespace std;int main(){ int a[233]; int n; cin >> n; for(int i=1;i<=n;i++) ...原创 2018-11-13 10:57:47 · 648 阅读 · 0 评论 -
蓝桥杯-最大比例
最大比例X星球的某个大奖赛设了M级奖励。每个级别的奖金是一个正整数。并且,相邻的两个级别间的比例是个固定值。也就是说:所有级别的奖金数构成了一个等比数列。比如:16,24,36,54其等比值为:3/2现在,我们随机调查了一些获奖者的奖金数。请你据此推算可能的最大的等比值。输入格式:第一行为数字 N (N<100),表示接下的一行包含N个正整数第二行N个正整数Xi(Xi&l...原创 2018-11-13 16:26:05 · 1335 阅读 · 2 评论 -
蓝桥杯-凑算式
凑算式 B DEFA + — + ------- = 10C GHI(如果显示有问题,可以参见【图1.jpg】)这个算式中AI代表19的数字,不同的字母代表不同的数字。比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法。这个算式一共有多少种解法?注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。#incl...原创 2018-11-14 08:35:37 · 149 阅读 · 0 评论 -
区间DP模板题
通用模板//mst(dp,0) 初始化DP数组for(int i=1;i&lt;=n;i++){ dp[i][i]=初始值}for(int len=2;len&lt;=n;len++) //区间长度for(int i=1;i&lt;=n;i++) //枚举起点{ int j=i+len-1; //区间终点 if(j&gt;n...原创 2018-11-12 10:10:06 · 581 阅读 · 0 评论 -
蓝桥杯-方格填数
方格填数如下的10个格子±-±-±-+| | | |±-±-±-±-+| | | | |±-±-±-±-+| | | |±-±-±-+(如果显示有问题,也可以参看【图1.jpg】)填入0~9的数字。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案?请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任...原创 2018-11-14 11:01:02 · 200 阅读 · 0 评论 -
蓝桥杯-密码脱落
X星球的考古学家发现了一批古代留下来的密码。这些密码是由A、B、C、D 四种植物的种子串成的序列。仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。你的任务是:给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。输入一行,表示现在看到的密码串(长度不大于1000)...原创 2018-11-12 14:21:41 · 381 阅读 · 0 评论 -
挑战程序设计-区间调度问题(扫描线贪心)
n个工作,每个工作开始于si,结束于ti,求最多可以参与多少项工作。该问题有一个贪心解:在可选的工作中,每次都选取结束时间最早的工作。#include<bits/stdc++.h>using namespace std;int s[2333],t[2333],ans,tt; pair<int,int> P[2333];int main(){ int n;...原创 2018-11-16 10:30:50 · 223 阅读 · 0 评论 -
KMP模板
/*pku3461(Oulipo), hdu1711(Number Sequence)这个模板 字符串是从0开始的Next数组是从1开始的*/#include <iostream>#include <cstring>using namespace std;const int N = 1000002;int next[N];char S[N], T[...原创 2018-11-16 11:24:45 · 106 阅读 · 0 评论 -
蓝桥杯-交换瓶子
交换瓶子有N个瓶子,编号 1 ~ N,放在架子上。比如有5个瓶子:2 1 3 5 4要求每次拿起2个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1 2 3 4 5对于这么简单的情况,显然,至少需要交换2次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式为两行:第一行: 一个正整数N(N<10000), 表示瓶子的数目第二行:N个正整数,用空格分开,表...原创 2018-11-15 09:21:34 · 155 阅读 · 0 评论 -
蓝桥杯-随意组合
随意组合小明被绑架到X星球的巫师W那里。其时,W正在玩弄两组数据 (2 3 5 8) 和 (1 4 6 7)他命令小明从一组数据中分别取数与另一组中的数配对,共配成4对(组中的每个数必被用到)。小明的配法是:{(8,7),(5,6),(3,4),(2,1)}巫师凝视片刻,突然说这个配法太棒了!因为:每个配对中的数字组成两位数,求平方和,无论正倒,居然相等:87^2 + 56^2 +...原创 2018-11-15 10:36:34 · 953 阅读 · 0 评论 -
蓝桥杯-打靶
打靶小明参加X星球的打靶比赛。比赛使用电子感应计分系统。其中有一局,小明得了96分。这局小明共打了6发子弹,没有脱靶。但望远镜看过去,只有3个弹孔。显然,有些子弹准确地穿过了前边的弹孔。不同环数得分是这样设置的:1,2,3,5,10,20,25,50那么小明的6发子弹得分都是多少呢?有哪些可能情况呢?下面的程序解决了这个问题。仔细阅读分析代码,填写划线部分缺失的内容。#inc...原创 2018-11-15 11:51:52 · 480 阅读 · 0 评论 -
大讯飞笔试题--吵架问题
题目描述:有 n 个人排成了一行队列,每个人都有一个站立的方向:面向左或面向右。由于这 n 个人中每个人都很讨厌其他的人,所以当两个人面对面站立时,他们会发生争吵,然后其中一个人就会被踢出队列,谁被踢出队列都是有可能的。我们用字符 L 来表示一个面向左站立的人,用字符 R 来表示一个面向右站立的人,那么这个队列可以用一个字符串描述。比如 RLLR 就表示一个四个人的队列,其中第一个人和第二个人...原创 2019-02-18 20:06:53 · 787 阅读 · 0 评论 -
蓝桥杯之方格计数
标题:方格计数如图p1.png所示,在二维平面上有无数个1x1的小方格。我们以某个小方格的一个顶点为圆心画一个半径为1000的圆。你能计算出这个圆里有多少个完整的小方格吗?500000注意:需要提交的是一个整数,不要填写任何多余内容。import java.util.*;public class Main{ public static void main(String[] arg...原创 2019-03-06 14:45:34 · 1409 阅读 · 2 评论 -
蓝桥杯之复数幂
标题:复数幂设i为虚数单位。对于任意正整数n,(2+3i)^n 的实部和虚部都是整数。求 (2+3i)^123456 等于多少? 即(2+3i)的123456次幂,这个数字很大,要求精确表示。答案写成 “实部±虚部i” 的形式,实部和虚部都是整数(不能用科学计数法表示),中间任何地方都不加空格,实部为正时前面不加正号。(2+3i)^2 写成: -5+12i,(2+3i)^5 的写成: 12...原创 2019-03-06 15:40:21 · 873 阅读 · 0 评论 -
蓝桥杯省赛之递增三元组
标题:递增三元组给定三个整数数组A = [A1,A2,… AN],B = [B1,B2,… BN],C = [C1,C2,… CN] ,请您统计有多少个三元组(i,j,k)满足:1 &lt;= i,j,k &lt;= NAi &lt;Bj &lt;Ck【输入格式】第一行包含一个整数N 。第二行包含ñ个整数A1,A2,…,AN。第三行包含ñ个整数B1,B2,… BN。第四...转载 2019-03-03 22:51:08 · 270 阅读 · 0 评论 -
Java大数运算笔记
加头文件 java.math.*;BigInteger a;不传参BigInteger a = new BigInteger("123");传参传数字字符串加 a.ddd(b)减 a.subtract(b)乘 a.multiply(b)除 a.divide(b)取余 a.mod(b)最大公约数 a.gcd(b)最大值 a.max(b)最小值 a.min(b)以上均表示 a+b...原创 2019-03-06 17:25:38 · 107 阅读 · 0 评论 -
杭电1576
http://acm.hdu.edu.cn/showproblem.php?pid=1576题目描述:要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。分析:最容易想到的方法莫过于让n一直加9973加到n Mod b == 0,不过很可惜这样做会超时的;所以我们换一种思路,因为a一定能被b整除,所以a一定是b...原创 2019-03-06 18:00:17 · 147 阅读 · 0 评论 -
多重集组合数
多重集组合数有 n 种物品,第 i 种物品有 ai 个。不同种类的物品可以相互区分但是相同的种类无法区分。从这些物品中取出 m 个的话,有多少种取法?求出方案数模M的余数。1&lt;=n&lt;=10001&lt;=m&lt;=10001&lt;=ai&lt;=10002&lt;=M&lt;=10000样例输入n=3m=3a={ 1,2,3 }M=10000样原创 2019-03-13 21:57:41 · 1053 阅读 · 0 评论 -
蓝桥杯-测试次数
标题:测试次数x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。如果手机从第7层扔下去没摔坏,但第8层摔...转载 2019-03-14 14:32:08 · 1006 阅读 · 0 评论 -
快速排序(啊哈算法java实现)
import java.util.*;public class Main{ public static int n; public static int[] a = new int[1000]; public static void Qsort(int l,int r){ if(l<r){ int t = a[l]; int i = l; int j = r;...原创 2019-03-14 15:24:42 · 290 阅读 · 0 评论 -
java四舍五入保留两位小数和舍去后面保留两位小数
import java.util.*;public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); double n = 1.199; System.out.printf("%.2f\n",n);//四舍五入 System.out.p...原创 2019-03-14 20:40:20 · 1870 阅读 · 0 评论 -
蓝桥杯-全球变暖
标题:全球变暖你有一张某海域NxN像素的照片,".“表示海洋、”#"表示陆地,如下所示:….##….##……##.…####.…###.…其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被...原创 2019-03-14 22:28:25 · 229 阅读 · 0 评论 -
时间复杂度与运行时间的估算
1s最大规模 100000000 1e82s最大规模 200000000 1e8*2原创 2019-03-19 16:19:26 · 1517 阅读 · 0 评论 -
Java倒序排序
推荐:直接正序排序,再倒着取出来就好。import java.util.*;public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int[] a = new int[100]; int n = scanner.nextInt(); for...原创 2019-03-15 11:20:47 · 8518 阅读 · 0 评论 -
整数二分模板
//查找大于等于key的最小值 public static int search(int left,int right){ while(left<=right){ int mid = (left+right)/2; if(key<=a[mid]){ right = mid -1; }else{ left = mid +1; } } ...原创 2019-03-19 20:10:35 · 420 阅读 · 0 评论 -
洛谷P1873 砍树(二分答案)
c++可以AC#include<bits/stdc++.h>using namespace std; int n,m,ans; int a[1000000+5]; bool check(int h){ long sum = 0; for(int i=1;i<=n;i++){ if(a[i]>h) sum += a[i] - h; } ...原创 2019-03-19 21:46:05 · 323 阅读 · 0 评论 -
二分答案模板
//从满足到不满足的情况,求满足的最大值,即:小于等于key的最大值//满足 key mid 不满足 while(left<=right){ int mid = (left+right)>>1; if(check(mid)){ ans = mid; left = mid +1; }else{ ...原创 2019-03-19 22:00:13 · 322 阅读 · 0 评论 -
P1182 数列分段`Section II`
题目描述对于给定的一个长度为N的正整数数列A-iA−i,现要将其分成M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列4 2 4 5 142451要分成33段将其如下分段:[4 2][4 5][1][42][45][1]第一段和为66,第22段和为99,第33段和为11,和最大值为99。将其如下分段:[4][2 4][5 1][4][24]...原创 2019-03-20 08:57:16 · 187 阅读 · 0 评论 -
数的划分
https://www.luogu.org/problemnew/show/P1025题目描述将整数nn分成kk份,且每份不能为空,任意两个方案不相同(不考虑顺序)。例如:n=7n=7,k=3k=3,下面三种分法被认为是相同的。1,1,51,1,5;1,5,11,5,1;5,1,15,1,1.问有多少种不同的分法。输入输出格式输入格式:n,kn,k (6<n \le 20...原创 2019-03-11 21:24:18 · 224 阅读 · 0 评论 -
最长上升子序列模板(java)
import java.util.*;public class Main{ public static void main(String[] args){ int maxn=1000; Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] dp = new int[maxn+10]; ...原创 2019-03-11 22:12:01 · 275 阅读 · 0 评论 -
最长公共子序列模板(Java)
for(int i=0;i&lt;n;i++){ for(int j=0;j&lt;m;j++){ if(s[i]==t[j]){ dp[i+1][j+1]=dp[i][j]+1; } else{ dp[i+1][j+1]=Math.max(dp[i][j+1],dp[i+1][j]); } } } System.out.println(dp[n...原创 2019-03-11 22:17:17 · 123 阅读 · 0 评论 -
多重部分和问题
给定 n 个数 a[i] ,每个数的数量分别为 m[i] ,判断是否可以取出若干个构成和为K;dp[i+1][j] 前 i 个可以构成 jimport java.util.*;public class Main{ public static void main(String[] args){ int maxn=1000; Scanner scanner = new Scanner...原创 2019-03-11 22:43:49 · 207 阅读 · 0 评论 -
蓝桥杯-生命之树
在X森林里,上帝创建了生命之树。他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 {a, v1, v2, …, vk, b} 使得这个点列中的每个点都是S里面的元素,且序列中相邻两个点间有一条边相连。在这个前提下,上帝要使得S中的点所对应的整数的和尽量大。这个最大的和就是上...原创 2019-03-16 20:54:52 · 369 阅读 · 0 评论