![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
c语言&算法题
文章平均质量分 65
c语言&算法题
Marhoosh
这个作者很懒,什么都没留下…
展开
-
2021XTU程设考试
我是个菜鸡,天天被大佬吊打,这次考试的自己也只做出了第一题,惨遭挂科xtu 1385 面积正方形边长为1,E是对角线BD上一点,F是边AB上一点,已知|DE|=a/b|DB|,|BF|=c/d|AB|,求△CEF的面积。思路:推公式,注意为负数的情况#include<stdio.h>#include<algorithm>using namespace std;int main(){ int t; scanf("%d",&t); while原创 2021-08-07 10:37:18 · 2996 阅读 · 4 评论 -
1243 Bob's Password
Bob最新购入一款安卓手机,他发现安卓手机密码使用的是画线方式。一共有9个点,我们按行列顺序依次为1~9。密码要求在点和点之间连线不能有还未曾经过的点。比如说:从1出发,可以到2,4,5,6,7,8,但是不能到达3,7,9。但是如果从2出发,先到1,这时因为2已经经过了,所以此时可以到达3。现在给你一个密码,请问它是否符合密码的这个要求?输入第一行是一个整数T(1≤T≤10000),表...原创 2019-12-07 11:39:26 · 736 阅读 · 0 评论 -
XTU-128
1270 Unique Digit Number这道题是数位dp。#include<stdio.h>__int64 a[9000000];int t[9000000]; //不看t的值,t用来标记,记录独特数占了哪些位 也就是用了哪个数int main(){ int i,j; int num=1; for(i= 1;i<10;i++) ...原创 2019-12-23 17:31:28 · 995 阅读 · 0 评论 -
2-ACM-作业3~5
2019.11.1911011.输入一段含空格的字符串,以回车结束,就应该用gets(),结合数组。原创 2019-11-27 11:01:27 · 137 阅读 · 0 评论 -
2019 计算机专业课堂测验1
序哇,这个签到题是真的烦,沉迷于其中无法自拔。这次考试的失误如下:1.沉迷签到题,主要是后面的不想写了,其实写得出来,自己不想思考,不会类比推理,从做过的题找经验。2.旁边有人抱我的腿,托我后腿,以后得独立思考,不要靠大佬,更不要靠小白。1341请回答一下的问题:1常量1e6是什么类型?unsigned intintfloatdouble2已知21!=51,090,942,1...原创 2019-12-07 16:59:02 · 2324 阅读 · 5 评论 -
1-ACM-作业0~2
总结:整体难度很低,但存在很多基础不扎实的地方。1.%的输入与输出不清楚。%c是字符,输入输出一样。%f对应float的输入与输出。%lf对应double的输入与输出。%g(G) 浮点数不显示无意义的0;%u 无符号十进制整数%o 八进制整数%x(%X)十六进制整数,有大小写区别%p 指针%% 字符“%”2.进制转化小结1.10进制数转化为其他进制就采用求余数的方法,结合...原创 2019-11-16 16:43:16 · 172 阅读 · 0 评论 -
xtu 1403 菱形 思路清晰
xtu 1403菱形题目描述按照给定小菱形的数量n,利用字符打印菱形,要求只使用/,,空格,回车四种字符。行首无多余的空格,行末无空格。菱形从上到下,从左到右,依次编码,从1到n,不要输出多余的菱形。边长为a的大菱形,最少有(a−1)2+1个小菱形,最多有a2个小菱形。具体格式见样例。比如边长为3的菱形,最少有5个小菱形(左边的情况),最多有9个小菱形(右边的情况)。详见:http://acm.xtu.edu.cn/exam/index.php/problem/exam_read/i原创 2022-04-10 13:59:50 · 1843 阅读 · 1 评论 -
3-ACM-作业6~7
1054 平方数给你一个整数集合A(无重复元素),如果x,y都属于A,且y=xx,那么组成一个数对,请找出这个集合中满足条件的数对的个数。比如说集合A={2,3,4},则只有4=22,则答案为1。输入每个样例占2行,第一行为一个非负整数n,n<=1000,为集合中元素的个数,如果n为0则输入结束。第二行为n个整数,为集合的元素,所有的元素为非负整数,且<=100,000,000...原创 2019-11-30 23:09:22 · 1625 阅读 · 5 评论 -
洛谷啊
P1036 选数https://www.luogu.com.cn/problem/P1036个人觉得这是一道比较简单经典的dfs题,而且告诉我们dfs可以用来解决从n个数中选取k个数这样的问题。#include<stdio.h>int n=0,sum=0,k=0,arr[22]; int is_prime(int n){//在此函数内部定义的变量n只能在此函数中使用,与全局变...原创 2019-12-23 17:53:59 · 180 阅读 · 0 评论 -
ACM比赛划水记录
2021.8.29 混合组队赛676 C Vasya and String题意:给你一个长度为n<1e5的只含a,b的串,可以允许修改k个位置,问能得到最长的“一样串”的长度是多少。“一样串”即只含a或只含b的串。 点击查看思路 先讨论只含a的情况,尺取即可,b同理。 1469 B Red and Blue题意:给你两个长度分别为n和m的整数列a和b,将a和b数列并成一个数列c,即c的长度为n+m,要求数列c中,对于a的每个数保持原先a的顺序,b同理。问c的最大前缀和。原创 2021-08-29 19:44:41 · 131 阅读 · 0 评论 -
ACM一错再错
1.wa在test12了,原因是把i<=20 打成了 1<<i <=20 …原创 2021-08-28 11:45:58 · 61 阅读 · 0 评论 -
倍增啊倍增
倍增法本质:吾以为倍增法本质就是将二分的过程存了下来,二分本来是个递归的过程嘛,倍增法就是将其变成递推了。比如二分可以将其划为两个子问题求解,这两个子问题可以是重复性贡献,也可以是不重复性贡献的,然后再用递推式将其求出来。更详细的理解可以见例题倍增法本身的复杂度是O(nlogn)的,然后可以O(1)的查询,所以倍增法适用于多次询问的情况,如果只有1次询问的话,就没必要倍增了,直接算就行了。但倍增本身复杂度也不高,O(nlogn),也可以用来解决1次询问情况,不过就是有些大材小用了。ST表模板#in原创 2021-08-27 23:21:49 · 201 阅读 · 0 评论 -
并查集呀并查集
并查集并查集的本质是对传递性关系的维护普通并查集初始化void init(){ for(ll i=1;i<maxn;i++) fa[i]=i;}路径压缩+查找ll found(ll x){ return fa[x]==x? x:fa[x]=found(fa[x]);}合并ll fu=found(u),fv=found(v);fa[fu]=fv;基础题:小希的迷宫Wireless Network带权并查集做这类带权并查集的题目,解决并查集中两两原创 2021-08-27 23:20:44 · 98 阅读 · 0 评论 -
尺取大法好
尺取法eMmmmm适用条件 单调性,区间长度递增,sum递增具体来说:对于判断条件k,区间长度递增,k也递增。例如判断条件为区间和sum时,区间长度递增,sum也递增。经典例题 最短子序列和>=s题目链接 https://vjudge.net/problem/POJ-3061题意 求一段最短的子序列之和>=s思路 跑尺取即可核心代码for(int i=0;i<n;i++){ sum+=a[i]; length++; if(sum<s)原创 2021-08-27 23:19:04 · 117 阅读 · 0 评论 -
单调队列、栈
单调队列、栈Mmmm1单调栈和单调队列一般用来求最近小,求最远小不能直接求,得结合二分2单调队列和单调栈区别不大,或者说单调队列是包含单调栈的,其主要区别在于,单调队列可以在队头进行操作,即可以在一段区间的左边界进行相应操作,而单调栈不行。即对于一段子区间来说,单调栈只能变化子区间的右边界,而单调队列可以变化左右边界。3 单调队列维护的区间范围是【队头,当前元素】,也就是说单调队列只能控制当前元素到左边的范围。如果题目要求控制当前元素两端的范围,比如-D<=x<=D,那么就得跑两遍单调队原创 2021-08-27 23:17:35 · 400 阅读 · 0 评论 -
代码风格,习惯
#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const int N=2e5+10;int n,m,res[N],ans,f[N],sz[N];vector<pair<int,int> > v[N];int find(int x){return x==f[x]?x:f[x]=f原创 2021-08-23 11:00:40 · 68 阅读 · 0 评论 -
ACM图论
发原创 2021-08-12 11:18:15 · 265 阅读 · 0 评论 -
ACM数据结构
单调队列 单调栈例https://vjudge.net/problem/HDU-3530(单调队列 + 双指针)这是道好题,当时做得挺折磨我的,主要是因为思路方面要想清楚:从数组头开始,一直加元素,同时维护最大值和最小值队列。若>k则踢掉队尾元素,若再>=m条件时则记录下长度。/*** * @Practice Win */#include<bits/stdc++.h>using namespace std;typedef long long ll;#defin原创 2021-07-24 23:18:19 · 120 阅读 · 0 评论 -
ACM杂项
离散化:概念将无穷大集合中的若干数映射为有限集合以便于统计换言之,比如有:2,78372,12391028,23773,1830919248,23773五个数,统计其中出现次数最多的数我们还是用桶排序的思想,让一个buc数组存放每个数的数量但是我们给2编号1,给78372编号2,给12391028编号3,给1830919248编号4让buc[1]存放2的数量,让buc[2]存放78372的数量……就避免了内存超限的问题离散化具体实现①将所有可能出现的数放到数组d中②排序并去重③二分查找转载 2021-08-22 23:35:17 · 74 阅读 · 0 评论 -
ACM搜索
DFS模板1需要标记相关信息时使用这种做法int check(参数){ if(满足条件) return 1; return 0;} void dfs(int step){ 判断边界 { 相应操作 } 尝试每一种可能 { 满足check条件 标记 继续下一步dfs(ste原创 2021-08-10 11:22:10 · 89 阅读 · 0 评论 -
快速幂求逆元
求逆元链接(作者:DayBreaking,转载自博客园):https://www.cnblogs.com/daybreaking/p/9342060.html快速幂链接(作者:刘扬俊,转载自csdn):https://blog.csdn.net/qq_19782019/article/details/85621386#define Mo 1000//这里是模的值long long FastPower(long long base, long long power) { long long r转载 2021-05-01 23:59:00 · 51 阅读 · 0 评论 -
图
单源通路最短(到各个顶点最短)用的是dijkstra算法详情请见学习通离散图论2.7章节#include<stdio.h>//栈溢出,按F11会运行,但会直接结束,并返回一个乱值。#define max 1000000//1e6是浮点数!!! int arr0[1111][1111];//得放在堆中,不然溢出。int min(int a,int b); int main(...原创 2020-03-05 17:07:39 · 81 阅读 · 0 评论 -
指针
指针的作用减少内存消耗原创 2020-01-29 08:41:00 · 86 阅读 · 0 评论 -
查找
顺序查找顾名思义:一个循环按照顺序扫一遍适用于规模较小,无序排列的查找折半查找运用了分治的思想,二分法求方程的根就是折半查找的一个具体应用。前提:有序排列的数组原理:首先选取位于数组中间的元素,将其与查找键进行比较。如果二者相等,则查找键被找到,返回数组中间元素的下标;否则,将查找范围缩小为原来的一半,即在一半的数组元素中查找。在数组元素按升序排序的情况下,如果查找键小于数组的中间元...原创 2020-01-14 08:24:50 · 76 阅读 · 0 评论 -
分治
分治,即分而治之。大问题化成小问题,小问题逐一解决,大问题便迎刃而解。化成小问题时,一般划到能直接出答案,此时作为递归出口。二分法:double要用%lf读入!!!绝对不能用%f,但是double输出两个都可以输入20,用%lf读入是可以的。https://www.luogu.com.cn/problem/P1024#include<stdio.h>double a=0...原创 2020-01-02 11:32:45 · 87 阅读 · 0 评论 -
卡输入
输入 n <= 1500个浮点数,要求把这n个浮点数从小到大排列后输出。每个浮点数中都有小数点,负数包含符号位,除去符号位总长度不超过50位。输入每个输入为一行,每行有若干个浮点数,浮点数之间以空格相隔开。输出输出排序后的浮点数序列。样例输入3.01 2.1 1.22.22 2.211 1.233样例输出1.2 2.1 3.011.233 2.211 2.22用浮点型数...原创 2019-12-27 11:29:32 · 204 阅读 · 0 评论 -
排序
我的第一个快排按照快排原理自己写的代码,第一次写的,没有优化。写的时候有许多bug,加了好几个补丁。void qsort(int arr[],int l,int r){ int flag,i,j,l0,r0,A; flag=arr[l];l0=l;r0=r; while(r>l){ for(;r>l;r--){//这里找比flag小的数,用while就好了,while( ...原创 2019-11-30 16:36:11 · 97 阅读 · 0 评论 -
递归与迭代
迭代与递归的区别· 迭代(递推):可以自递归基础开始,由前向后依次计算或直接计算;递归:可以自递归基础开始,由前向后依次计算或直接计算;但有些,只能由后向前代入,直到递归基础,寻找一条路径,然后再由前向后计算。递归包含了递推(迭代),但递推(迭代)不能覆盖递归。...原创 2019-11-18 12:14:16 · 242 阅读 · 0 评论 -
C笔记。。
浮点数不能直接比较,若要比较,两数相减小于一个小数来比较,因为浮点数有精度,有误差。不同数据类型比较时,会隐式转换,转化为范围大的那个。这个转换存在于运算中,是暂时的。b=(a%20)判断a是否为偶数,若a为偶数,表达式值为1,故b1.0表示假,非0表示真。比如,a=10,b=!a,表达式值为1,故b==1.表达式结果只有0和1.int a=0,b=1,c; c=(a&&b...原创 2019-11-30 17:11:39 · 365 阅读 · 0 评论