算法相关
记录自己的算法学习经历
无知呦
这个作者很懒,什么都没留下…
展开
-
2022牛客寒假算法基础集训营1
写下自己能搞懂的题的题解吧,搞懂所有题是不可能了。。签到题:想要更高精度尝试long double ,输出格式是%Lf进出学校问题:场上模拟一直过不去。。甚至为了快点的读入把cin改成了scanf。。囧结果看了题解知道要推出来公式。。#include <bits/stdc++.h>using namespace std;int n,m,i,j,x;void outans(int n,int m){ int t=(n-1)/(m-1)+( (n-1)%(m-.原创 2022-01-26 11:04:03 · 818 阅读 · 0 评论 -
zzu day10 video
自从半个月前打了两场稍微正式的比赛后就再没进行c语言的学习了..一方面是打的有点自闭,再加上之后的期末考试,确实有点懈怠了。当然这一切都是借口。。要想清晰的记住这一天是怎么过的,这一天学到什么东西,最好的办法还是给记录下来。尽力做到日更吧。1.3日:...原创 2022-01-03 20:54:49 · 1839 阅读 · 0 评论 -
C语言浮点数的各种表示方法
前提:由于存在精度限制,浮点数只是⼀个近似值,它的计算是不精确的,⽐如 C 语⾔⾥⾯ 0.1 + 0.2 并 不等于 0.3 ,⽽是有⼀个很⼩的误差。 float c = 10.5; if (0.1 + 0.2 == 0.3) // falseC 语⾔允许使⽤科学计数法表示浮点数,使⽤字⺟ e 来分隔⼩数部分和指数部分。 上⾯示例中, e 后⾯如果是加号 + ,加号可以省略。注意,科学计数法⾥⾯ e 的前后,不能存在空格。 double x = 12原创 2021-12-18 10:42:13 · 14644 阅读 · 3 评论 -
%*s 的用法
在zzulioj上刷题的时候遇到了一道ac代码#include <stdio.h>int main(){ double w,p,ans=0; while( scanf("%*s%lf%lf", &w,&p) != EOF ) ans+=w*p; printf("%.1lf",ans); return 0;}百度解释:取决于在scanf中使用还是在printf中使用。在scanf中使用,则添加了*的部分会被忽略,不会被参.原创 2021-12-16 10:33:59 · 1179 阅读 · 0 评论 -
任意长度的二进制转换为十进制数
题意分析:2^35表示这个二进制数最长有35位... 所以不管用什么整数型都会爆,这时候只能用字符串读入,并将字符串上的每一位转换成int型。具体方法:int x=a[i]-'0' //a[i]为字符串的第[i]位输入一个样例出一个答案:输入全部结束样例后出答案:#include <bits/stdc++.h>using namespace std;char a[110][110]; //110个字符串,每个字符串...原创 2021-12-13 20:49:42 · 905 阅读 · 0 评论 -
(待)区间选点问题
与区间不相交问题一样,甚至更简单。#include <bits/stdc++.h>using namespace std;struct qujian{ int x,y;}I[110];bool cmp(qujian a,qujian b){ //qujian是变量名!sort的地方再写错hu脸!! if(a.x!=b.x) return a.x>b.x; else return a.y<b.y;}int main(){ int n; cin&g原创 2021-12-11 16:06:48 · 303 阅读 · 0 评论 -
区间不相交问题-区间贪心
题意:给出N个开区间(x,y),从中选择尽可能多的开区间,使得这些开区间两两没有交集。输入:41 32 43 56 7输出:(6,7) (3,5) (1,3)画图能解决本题所有问题~#include <bits/stdc++.h>using namespace std;struct qujian{ int x,y;}I[110];bool cmp(qujian a,qujian b){ //qujian是变量名!sort的地方.原创 2021-12-11 15:33:23 · 608 阅读 · 0 评论 -
strstr,strcpy,strcat
均在string下strcpy(s1,s2): 将s2的字符串复制到s1中,不影响s2。若s2字符串短于s1,则新的s1包括s2及旧的s1的后半部分。strcat(s1,s2): 将s2的字符串连接到s1末尾,不影响s2。strstr(s1,s2):#include <stdio.h>#include <string.h>int main(){ char s1[10]="hello,"; char s2[10]="world."; cha...原创 2021-11-29 15:43:58 · 863 阅读 · 0 评论 -
爆范围的解决方法
① int→long long→double 尝试(很奇怪是吧..坐等大佬解答eg:计算0~100中某位数阶乘的最高位将num定义成longlong答案错误,但是改成double型就答案正确(虽然还没ac..②数据范围全为正数时开unsigned long long 使用高精度③对于只在某一位进行的运算,可直接舍弃后边的值只对该位数计算。避免出现超大数据。eg:同上图④分式型的为避免分子过大进行约分。eg:⑤尽量避免pow型运算eg:输出每组...原创 2021-11-19 09:33:09 · 317 阅读 · 0 评论 -
以!的数量代替数字进行计算
#include <stdio.h>char s[1001];int main(){ scanf("%s",s); //程序跑不了先检查每行再找原理性问题.. 我好zz...! int A=0,B=0; int i=0; while (s[i]=='!') { A++; i++; } char c=s[i]; //此时输入的字符为运算符号 i++; .原创 2021-09-30 23:26:23 · 92 阅读 · 0 评论 -
输入n个数计算最大值与最小值的差
#include <stdio.h>#include <stdlib.h>int main(){ int n; scanf("%d",&n); long long Max=-1e10; long long Min=1e10; int i; for (i=1;i<=n;i++) { long long x; scanf("%lld",&x); if(Ma...原创 2021-09-28 23:07:42 · 1643 阅读 · 0 评论 -
验证4~100内的哥德巴赫猜想
1.仅验证是否成立#include <stdio.h>#include <stdlib.h>int main(){ int a,b,k,i,count1,count2; for (k=4;k<=100;k=k+2) //取值范围为4-100 { for (a=2;a<=k/2;a++) //将k拆为a+b a的范围为k/2 { count1=0;原创 2021-09-27 08:44:40 · 882 阅读 · 0 评论 -
输入n个数排序(两方法)
1.选择结构(优 此方法无数值大小的限制)#include <stdio.h>#include <stdlib.h>int main(){ int i,j,t,n; scanf("%d",&n); int a[n+1]; //定义n个小房子第一个空着 for (i=1;i<=n;i++) scanf("%d",&a[i]); //a1-an..原创 2021-09-27 08:26:45 · 2153 阅读 · 0 评论