10 2024 档案

摘要:一维离散化笔记 通俗来说,一维离散化就是把在无限空间中的有限元素映射到一个线性排列的区间中 举个实际的例子说明: 存在一个近似无限的空间 \([-10^9,10^9]\) ,我们需要对其中\(10^5\)个离散的元素进行操作 显然不可能对这个近似无限的区间进行\(10^5\)次遍历 所以需要把这\( 阅读全文
posted @ 2024-10-26 16:34 才瓯 阅读(7) 评论(0) 推荐(0) 编辑
摘要:普及-洛谷P1012 拼数 设有 n 个正整数,a1 a2 a3 ......an 将它们联接成一排,相邻数字首尾相接,组成一个最大的整数 输入: 第一行有一个整数,表示数字个数 n 第二行有 n个整数,表示给出的 n个整数 ai 输出: 一个正整数,表示最大的整数 可以考虑两种路线:使用sort函 阅读全文
posted @ 2024-10-25 21:52 才瓯 阅读(16) 评论(0) 推荐(0) 编辑
摘要:普及 洛谷 P1223 接水问题 有 n个人在一个水龙头前排队接水,假如每个人接水的时间为 Ti,请编程找出这 n 个人排队的一种顺序,使得 n 个人的平均等待时间最小 第一行为一个整数 n, 第二行 n个整数,第 i个整数 Ti表示第 i个人的接水时间 Ti 输出两行,第一行为一种平均时间最短的排 阅读全文
posted @ 2024-10-22 20:35 才瓯 阅读(28) 评论(0) 推荐(0) 编辑
摘要:位运算笔记 对二进制数进行直接操作: 基础操作: 例: a=0000 1101; b=0011 0101; 与:a&b==0000 0101;//当两个数的第i位都为1时,a&b的第i位才为1 或:a|b==0011 1101;/*当两个数的第i位都为0时,a|b的第i位才为0 或者说两个数的第i位 阅读全文
posted @ 2024-10-21 20:23 才瓯 阅读(26) 评论(0) 推荐(0) 编辑
摘要:双指针维护笔记 双指针特指两个指针共同维护一个数组: 从两端分别维护,从同一端点交叉维护 从两端分别维护: 例:快速排序,(从小到大排序) 在快速排序中,我们安排了两个指针从需要排序的数组的左右两端开始向中间移动 更新方式是,当 i 指针从左向右移动,j 指针从右向左移动时,若 i 的值大于 j 的 阅读全文
posted @ 2024-10-19 08:58 才瓯 阅读(10) 评论(0) 推荐(0) 编辑
摘要:普及 每日一题 信息学竞赛 1206:放苹果 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 第一行是测试数据的数目t(0<=t<=20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。 对输入 阅读全文
posted @ 2024-10-18 22:01 才瓯 阅读(41) 评论(0) 推荐(0) 编辑
摘要:普及- 洛谷 P1115 最大子段和 读题可知需要在一段一维数组中寻找一段唯一的区间,使区间内的数和最大,即寻找和最大区间 可以想到前缀和的算法 假设输入数组 a[n] 则前缀和数组 b[n]=b[n-1]+a[n] 那么从什么时候开始的一段区间才能使区间内的数和最大? 从前缀和数组逐步来判断这一条 阅读全文
posted @ 2024-10-16 22:08 才瓯 阅读(27) 评论(0) 推荐(0) 编辑
摘要:差分笔记 差分可看作前缀和的逆运算 对于一个数组 a[n] 有: a[0] a[1] a[2] a[3] ......a[n-2] a[n-1] 构造一个差分数组 b[n] 使得其中每一项都为数组 a 每项的差: b[0]=a[0] b[1]=a[1]-a[0] ...... b[n-2]=a[n- 阅读全文
posted @ 2024-10-16 16:47 才瓯 阅读(12) 评论(0) 推荐(0) 编辑
摘要:入门 洛谷 P1720 月落乌啼算钱(斐波那契数列) #include<iostream> #include<cstdio> #include <cmath> int main() { int n; scanf("%d", &n); double ans = 0; ans = (pow(((1 + 阅读全文
posted @ 2024-10-15 15:43 才瓯 阅读(7) 评论(0) 推荐(0) 编辑
摘要:前缀和笔记 对于一个一维数组 a[m] 其前 i 项的和记作 s[i] 如果想要对 a[m] 中任意连续段的值进行求和,例如 a[l]~a[r] 则可使用前缀和数组进行 \(O(n)\) 计算 int a[m],s[m]; s[0]=0;//定义s[0]的值,防止边界问题 for (int i=1; 阅读全文
posted @ 2024-10-12 15:44 才瓯 阅读(13) 评论(0) 推荐(0) 编辑
摘要:高精度减法 vector<int>u, v; bool cmp(vector<int> &u, vector<int> &v) {//比较两个数大小 if (u.size() != v.size()) //前数不等于后数 return u.size() > v.size();//返回前数是否大于后数 阅读全文
posted @ 2024-10-08 19:14 才瓯 阅读(3) 评论(0) 推荐(0) 编辑
摘要:STL set 头文件set主要包括set和multiset两个容器,分别是“有序集合”和“有序多重集合” 即前者的元素不能重复,而后者可以包含若干个相等的元素 set和multiset的内部实现是一棵红黑树,它们支持的函数基本相同 include声明 #include <set> 函数声明 set 阅读全文
posted @ 2024-10-07 15:35 才瓯 阅读(19) 评论(0) 推荐(0) 编辑
摘要:STL queue&deque&stack queue主要包括循环队列queue和优先队列priority_queue两个容器 stack包含栈容器 include 头文件声明 #include <queue> #include <deque> #include <stack> 声明 queue<i 阅读全文
posted @ 2024-10-07 15:22 才瓯 阅读(15) 评论(0) 推荐(0) 编辑
摘要:vector<int> u; //储存a倒序的每个数 vector<int> v; //储存b倒序的每个数 vector<int> add(vector<int> m, vector<int> n) {//高精度加法 vector<int> temp;//temp数组存储相加后的每个数 int t= 阅读全文
posted @ 2024-10-06 13:39 才瓯 阅读(23) 评论(0) 推荐(0) 编辑
摘要:STL vector vector是动态数组,支持随机访问,不支持在任意位置O(1)插入为,元素的增删一般在末尾进行 include 头文件声明 vector a; 相当于声明一个长度动态变化的int数组 vector b[233]; 相当于声明一个第一维长233,第二维长度动态变化的int数组 s 阅读全文
posted @ 2024-10-06 11:15 才瓯 阅读(18) 评论(0) 推荐(0) 编辑
摘要:void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } //swap交换两数 void quick_sort(int u[], int l, int r) { if (l >= r) return; int x = u[r], 阅读全文
posted @ 2024-10-06 10:32 才瓯 阅读(20) 评论(0) 推荐(0) 编辑
摘要:int tmp[];//temp数组存储数据 void merge_sort(int a[],int l,int r) { if (l >= r) return;//递归到最后只有一个数返回 int mid = (l + r)/2 ;//确定分界点 l~mid mid+1~r; merge_sort 阅读全文
posted @ 2024-10-06 10:31 才瓯 阅读(20) 评论(0) 推荐(1) 编辑
摘要:粗看题目 我靠,什么方向还变来变去的(哭泣 核心思想:圈内右数,圈外左数为整体逆时针数;圈外右数,圈内左数为整体顺时针数 运用结构体就有了第一版源码: struct people { int face; char name[12]; }; int main() { int m, n; scanf(" 阅读全文
posted @ 2024-10-06 10:30 才瓯 阅读(3) 评论(0) 推荐(0) 编辑
摘要:对题目第一印象:贪心吧,或者纯模拟 第一次贪心,由于左右端堆只能想内一堆移动,遂放弃 第一次模拟,开多个数组,(可能还要用递归?),遂放弃 于是求助如来佛祖: 从逻辑上可以看出,第一堆缺或者多的牌只能移动到第二堆上 当第一堆达到期望值时,第一堆便不能再做操作,于是,可以将第二堆作为第一堆来处理 (有 阅读全文
posted @ 2024-10-06 10:20 才瓯 阅读(11) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示