首页 > 其他分享 >临时随笔:大脑宕机低级大错误合集

临时随笔:大脑宕机低级大错误合集

时间:2024-10-25 22:31:21浏览次数:3  
标签:lzy sort return 宕机 int mid qjcx 随笔 合集

大脑宕机低级大错误合集

  • ceil 的精度问题:
int a, b;
ceil(a/b);//错误的
ceil(1.0*a/b);//正确的
  • memset 的顺序:
memset(vis, 0, sizeof(vis);

后两项打反时编译器不会报错。

  • while(L--)判否后仍然会执行一次 L--

  • lower_bound 正确使用:
    2

  • 邻接矩阵遍历图时,严格注意强制类型转换!

	for(int i=0; i < (int) ve[u].size(); i++){
		int v=ve[u][i];
		if(v == fa) continue;
		dfs(v,u);
		size[u]+= size[v];
		f[u] = max(f[u], size[v]);
	}
  • P6492 [COCI2010-2011#6] STEP

线段树维护区间最大连续字符相异长度,附单点修改。
错因: 左右子树下标移位
错解

int ls= u<<2;
int rs =u<<2|1;

正解

int ls= u<<1 ;
int rs= u<<1|1 ;

double 下的二分(二分实现某点导数间接实现三分)时,两个 double check() 直接进行比较即可,不用思考什么差值 epseps 只是用于两个 double 判断是否相等,例如 if( fabs(x-y) <= eps )

正解

if(judge(mid+eps,nowansb) <= judge(mid-eps,nowansb) ) le=mid;
else rt=mid;

错解

if(judge(mid+eps,__b) - judge(mid-eps,__b) <= eps ) le=mid;
else rt=mid;

如果数组开小了爆栈也可能 RE
正解
const int maxn=5e5+5;
错解
const int maxn=500000;

线段树维护区间最大最小值,如果outofrange()true ,应该返回 INF-INF,而非 0
正解:

ll qjcx(int u,int l,int r,int L,int R){
    if(inrange(l,r,L,R))
        return w[u];
    else if(outofrange(l,r,L,R))return -INF;
    else {
    int mid=(l+r)>>1;
    pushdown(u,l,r);
    return max( qjcx(u*2,l,mid,L,R) , qjcx(u*2+1,mid+1,r,L,R) );
    }
}

错解:

ll qjcx(int u,int l,int r,int L,int R){
    if(inrange(l,r,L,R))
        return w[u];
    else if(outofrange(l,r,L,R))return 0;
    else {
    int mid=(l+r)>>1;
    pushdown(u,l,r);
    return max( qjcx(u*2,l,mid,L,R) , qjcx(u*2+1,mid+1,r,L,R) );
    }   
}

维护单点异或,区间查询。注意有 lzy[u] 才进行 maketag(u,len,lzy[u]) ,如果 lzy[u] 不存在时进行了异或操作标记下传,会导致错误的单点异或,因为他把 lzy[u] == 0 的异或下传了。
正解

void pushdown(int u,int l,int r){
	int mid=(l+r)>>1;
	if(!lzy[u]) return ;
    maketag(u*2,mid-l+1,lzy[u]);
    maketag(u*2+1,r-mid,lzy[u]);
    lzy[u]=0;
}

错解

void pushdown(int u,int l,int r){
	int mid=(l+r)>>1;
    maketag(u*2,mid-l+1,lzy[u]);
    maketag(u*2+1,r-mid,lzy[u]);
    lzy[u]=0;
}

oier作死技巧

1.赋值运算符与判等不分

/使用-Wall编译选项会出现警告
if(n=1)puts("Yes");//此处应为n==1
else puts("No");

2.多重循环中i,j,k使用分布不清

for(int i=1;i<=n;i++)
 for(int j=1;j<=n;i++)//显然应该是j++
  //do something

for(int i=1;i<=n;i++)
 for(int j=n;j>=1;j++)//显然应该是j--
  //do something

3.运算符优先级(多用括号)

int a=num<<2+1;//这里会被解读为num<<(2+1)
a=(num<<2)+1;

int a,b,c;
cin>>a>>b;
c=a+b%10;//此处会识别成a+(b%10)

4.多组数据要初始化变量,局部变量要赋初值

特别是ans,sum不赋值等。

//比较好的习惯是将变量定义在循环内,从而求解每组数据时都能初始化变量
#include <stdio.h>
int sum;
int main()
{
 int T;
 scanf("%d",&T);
 while(T--)
 {
  //int sum=0;
  //像上面这样定义变量就不会出事了
  int n;
  scanf("%d",&n);
  for(int i=1;i<=n;i++)
  {
   int num;
   scanf("%d",&num);
   sum+=num;
  }
  printf("%d\n",sum);
 }
 return 0;
}

5.局部变量与全局变量冲突

建议全局变量多采取非常用的手误名称,如i,j,k,x,y,z是重灾区。

6.边界判断&&特判

for(int i=0;<;)
for(int i=1;<=;)
//注意循环边界范围,特别是数组是从0还是1开始记录的
### 9.是否使用了正确的文件io
```cpp
freopen("t1.in","r",stdin);
freopen("t1.out","w",stdout);

10.是否有正确的头文件和return

非void函数一定要有return,主函数要有return 0;

11.数据大小判断 是否可能爆int。以及int数据范围

int:256mb=6.7kwint;

int: 2e9;

12.不要使用x1,x2会卡变量名

13.检查文件名字!!

turn不等于trun

14.-o2看一下有什么不同的变化

15.注意使用的输入输出格式中会不会有空白

getchar会读入空行和空格
scanf:%c会读入空白,“ %c”是可行的
       %s,&s[i]+1;//等同于cin>>s[i]+1;

16.while(scanf("[t++]")!=EOF) 天坑!t会多一个

17."no"是字母O不是零0

18.函数命名和调用,封装名称一致,数据类型一致

19.科学计数法1e9是一个浮点数

20.读题要仔细

子串是连续的;
子序列是不连续的,但是有先后之分;
子集既不连续,也无先后之分

21.sort是左闭右开区间

sort(a,a+n);//sort a[0]->a[n-1]
sort(a+1,a+1+n);//sort a[1]->a[n];

标签:lzy,sort,return,宕机,int,mid,qjcx,随笔,合集
From: https://www.cnblogs.com/ChillLee/p/18503388

相关文章

  • 易考八股文之Redis在你项目中怎么用,如果Redis宕机,应用服务还会响应吗?会造成哪些问题,如
    在项目中,Redis可以用于多种用途,例如:缓存数据:将经常访问的数据存储在Redis中,减少对后端数据库的查询压力,提高应用的响应速度。会话管理:存储用户会话信息,方便在分布式系统中管理用户登录状态等。如果Redis宕机,应用服务可能仍然会响应,但会面临一些问题:数据丢失:如果没有配置持久......
  • 系统开发常用命令合集
    本文还会持续更新,大家可以点赞收藏~ifconfigifconfigwlan0表示无线网络接口eth0表示以太网接口(有线)HWaddr是接口的物理地址(MAC地址)inetaddr是接口的IPv4地址Bcast是广播地址,Mask是子网掩码inet6addr是接口的IPv6地址ifconfig-aifconfig与ifconfig-a的区别......
  • CSP-J赛前随笔
    CSP-J倒计时1天。最近教练给我们做了10+套模拟赛,疯狂整理后,每套模拟都写了1~2篇题解。广刷题,确实有用,今天早上做出来一道第二题题目传送门顺便在这放个题解化简decode\(n=p\timesq\)\(e\timesd=(p-1)(q-1)+1\)令\(x=e\timesd-2\)则\(x=p\timesq......
  • 杂题随笔 2024.10.25 两道图论
    最近在写abc375这场,最后的F和G是两道很典的图论题。https://atcoder.jp/contests/abc375/tasks/abc375_f题意:大致就是说给你一张图,有两种操作:第一种操作是把第i条边删掉,第二种操作是询问u,v两点的最短路。解法:这种题目印象里好像是考过几次了,把在线询问的顺序转变,倒着做,把减边......
  • ChatGPT-4国内中文版镜像网站整理合集(2024/10/25)
    一、GPT中文版镜像网站①lanjing.ai支持GPT4、4o以及o1,支持MJ绘画②LearnItForSelf支持通用全模型,支持文件读取、插件、绘画、AIPPT③AIChat支持GPT3.5/4,4o以及MJ绘画1.什么是镜像站镜像站(MirrorSite)是指通过复制原始网站内容和结构,创建的备用网站。其主要目的是在......
  • JavaWeb合集14-全局异常处理器
    十四、全局异常处理器全局异常处理器(GlobalExceptionHandler)是指一种机制,用于集中处理应用程序中未被捕获的异常。全局异常处理器可以用来统一处理整个应用程序中可能出现的异常,从而确保在出现未预期的错误时,程序能够以一种优雅的方式处理这些错误,并提供一致的错误响应......
  • JavaWeb合集17-拦截器(Interceptor)和过滤器(Filter)
    十七、拦截器和过滤器在JavaWeb开发中,拦截器(Interceptor)和过滤器(Filter)都是用于在请求处理前后执行某些操作的机制。虽然它们的功能相似,但在实现方式、使用场景和灵活性方面有一些重要的区别。1、拦截器和过滤器的区别及选择1.1拦截器定义:拦截器是Spring框架提供......
  • JavaWeb合集15-线程局部变量ThreadLocal
    十五、ThreadLocalThreadLocal并不是一个Thread,,而是Thread的局部变量。ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。场景:通过过滤器/过滤器获取到JWT,可将JWT值存储到ThreadLocal中,当执行到需要JWT的......
  • 暑假集训随笔
    1.关于二分图的判断:除了黑白染色法,还可以用扩展域并查集。所谓扩展域并查集就是假设每个点可能在集合1中也可能在集合2中,就把点i拆成i和i+n,分别代表在1和在2中的i。如果i和j不在同一集合中,就把i与j+n,以及j与i+n放在同一集合中。这样的好处是无论通过i还是j都可以拿到与它们在同一......
  • 在K8S中,Worker节点宕机,Pods驱逐流程有哪些?
    在Kubernetes(K8S)中,当Worker节点宕机时,Kubernetes有一套处理流程来确保Pods的可用性和服务的连续性。以下是详细的处理流程:节点状态检测:Kubernetes通过kubelet组件定期向API服务器报告节点状态。如果节点宕机,kubelet将无法发送心跳,节点状态将变为NotReady。节点状态更新:Kuber......