算法
c++
LightningJie
这个作者很懒,什么都没留下…
展开
-
点在多边形内判定模板(射线法,凹凸多边形均可)
首先明白 在任意多边形内一点,发射一条射线(以水平为例),必然与奇数条边相交。奇数个交点 ==》 点在多边形内。偶数个交点 ==》 点在多边形外。特例说明,如果要是设定,在线段上也算点在多边形内。那么判断共线且非射线即可。...原创 2022-08-27 20:55:41 · 271 阅读 · 0 评论 -
csp-202206-1:归一化处理题解
输出共 n 行,每行一个浮点数,依次表示按上述方法归一化处理后的数据 f(a1),f(a2),⋯,f(an)。如果你输出的每个浮点数与参考结果相比,均满足绝对误差不大于 10−4,则该测试点满分,否则不得分。全部的测试数据保证 n,|ai|≤1000,其中 |ai| 表示 ai 的绝对值。且输入的 n 个整数 a1,a2,⋯,an 满足:方差 D(a)≥1。第二行包含空格分隔的 n 个整数,依次表示 a1,a2,⋯,an。这里假定需要处理的数据为 n 个整数 a1,a2,⋯,an。类型存储浮点数,并使用。原创 2022-08-21 20:22:28 · 725 阅读 · 0 评论 -
试题 历届真题 砝码称重【第十二届】【省赛】【B组】
砝码称重问题描述你有一架天平和 N 个砝码,这 N 个砝码重量依次是 W1,W2,⋅⋅⋅,WN。请你计算一共可以称出多少种不同的正整数重量?注意砝码可以放在天平两边。输入格式输入的第一行包含一个整数 N。第二行包含 N 个整数:W1,W2,W3,⋅⋅⋅,WN。输出格式输出一个整数代表答案。数据范围对于 50% 的评测用例,1≤N≤15。对于所有评测用例,1≤N≤100,N 个砝码总重不超过 100000。输入样例:31 4 6输出样例:10样例解释原创 2022-02-28 19:52:43 · 2242 阅读 · 2 评论 -
贪心算法(二)区间调度问题,电影节
区间重叠问题:问题描述:给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重叠),问小杰最多可以看多少部电影。贪心解法:将所有的电影按结束时间从小到大排序,第一步选结束的时间最早的那部电影。然后,每步都选和上一步选中的电影不冲突且结束时间最早的电影。输入:先输入n(n<=100),表示n场电影,接下来n行,每行两个整数(均小于1000)表示一场电影的放映区间。输出:对每组数据输出最多能看几部电影。样例输入:121 33 40 73原创 2022-01-17 16:57:42 · 571 阅读 · 0 评论 -
贪心算法(一)假背包问题,圣诞老人的礼物
问题描述:糖果有自己的价值和重量,每箱糖果可以拆分成任意散装组合带走,圣诞老人的驯鹿雪橇最多装下重量为w的糖果,请问圣诞老人最多带走多大价值的的糖果。输入:第一行由两个部分组成,分别为糖果箱数n(1<=n<=100,驯鹿能承受的最大重量正整数w(0<w<10000),两个数用空格隔开。其余n行每行对应一箱糖果,由两部分组成,分别为一箱糖果的价值正整数v,和重量正整数w,中间用空格隔开。输出:输出圣诞诞老人能带走的最大总价值,保留一位小数。样例输入:4 15原创 2022-01-17 10:25:04 · 414 阅读 · 0 评论 -
单链表求交集
(1)笨蛋方法,二重循环,暴力输出。 傻子才用。(2)聪明点的方法 先两个集合排序(升序),然后求交集。这里默认是升序。看代码吧#include<stdio.h>#include<stdlib.h>struct Node{ int a; struct Node *next;};int main(){ Node *p,*q,*heada,*k,*headb,*headc,*m; int i=1; i...原创 2021-09-21 11:11:44 · 449 阅读 · 1 评论 -
数组主元素问题
首先感谢mxw老铁,提出了这个问题。问题描述【问题描述】已知一个整数序列A长度为N其中若存在a且a的个数大于N/2则称为A的主元素例如0 5 5 3 5 7 5 5 则为主元素 5又如0 5 5 3 5 1 5 7则中没有主元素。假设中的个元素保存在一个一维数组中,请设计一个尽可能高效的算法,找出的主元素。若存在主元素则输出该元素否则输出【输入形式】一个整数数组【输出形式】主元素【样例输入】0 5 5 3 5 7 5 5【样例输出】5一、思考临界时的情原创 2021-09-20 21:43:24 · 793 阅读 · 0 评论 -
判断两个搜索树相同
#include<stdio.h>#include<stdlib.h>typedef struct TreeNode * Tree;struct TreeNode{ int v; Tree Left,Right; int flag;};Tree NewNode(int V){ Tree T=(Tree)malloc(sizeof(struct TreeNode)); T->v=V; T->Left=T->Right=NULL; T->.原创 2021-08-30 22:28:34 · 74 阅读 · 0 评论