×

关于我们

2024_csp_j 1~15

张子祺 张子祺 发表于2026-08-29 浏览56 评论0

1.int 数据类型负数:奇数    正数:偶数

2.n进制转十进制:第a位=数值*n的a-1次方

3(a-1)*(b-1)*c*(a+b+c-组数)(最大值)

4.滚木;

5.MB=1024kb KB=1024B B=8 b

MB=1024KB=1024*1024B=1024*1024*8b

6.基本数据类型:可直接用于定义变量

7循环语句:for;while;do-while

关于我们

洛谷p1043

李澄瑞 李澄瑞 发表于2026-08-22 浏览93 评论0
#include<iostream>
using namespace std;
long long a[1001],x[1001],n,m,max1,min1=1000000000000000;
//x为一开始读入的数据,a为便于计算一段之和的前缀和 
long long f[101][101][11],f1[101][101][11]; 
//f数组存最大值,f1数组存最小值 
int main(){
	cin>>n>>m;
	for (int i=1;i<=100;i++)
		for (int j=1;j<=100;j++)
			for (int k=1;k<=10;k++)
				f1[i][j][k]=10000000000;
	//先给f1数组赋上巨大的值,便于计算之和的最小值 
	for (int i=1;i<=n;i++)
	{
		cin>>x[i];//读入 
		a[i]+=a[i-1]+x[i];//前缀和 
	}
	//化环为链 
	for (int i=n+1;i<=n*2;i++) a[i]+=a[i-1]+x[i-n];//前缀和 
	for (int i=1;i<=n*2;i++)
		for (int j=1;j<=n*2;j++)
		{
			f[i][j][1]=(a[j]-a[i-1]+100000000000)%10;//前缀和求一段数的和 
			f1[i][j][1]=(a[j]-a[i-1]+100000000000)%10;//前缀和求一段数的和 
			//因为输入有负数,所以a[j]可能会小于a[i-1],所以我们给他加上巨大值 
		}
	//赋初始值	
	for (int i=1;i<=n*2;i++)//枚举开始的数字位置 
	{
		for (int j=i+1;j<=n*2;j++)//枚举结束的数字位置 
		{
			for (int l=2;l<=m;l++)//枚举分段的数量 
			{
				for (int k=i;k<j;k++)//枚举中间数的位置 
				{
					f[i][j][l]=max(f[i][j][l],f[i][k][l-1]*f[k+1][j][1]);//动态规划转移方程
					f1[i][j][l]=min(f1[i][j][l],f1[i][k][l-1]*f1[k+1][j][1]);//动态规划转移方程 
				}
			}
		}
	}
	for (int i=1;i<=n;i++) 
	{
		max1=max(max1,f[i][i+n-1][m]);//求一段的最大值 
		min1=min(min1,f1[i][i+n-1][m]);//求一段的最小值  
	}
	cout<<min1<<endl<<max1<<endl;//输出
	return 0; 
}

汤达友

0820 比比拉布

汤达友 汤达友 发表于2026-08-20 浏览99 评论0
#include <bits/stdc++.h>
using namespace std;int main(){
	
	sudstr(a,n) //从下标 a取 n个字符
	find() //查找子串(从左)
	replace(a,n,str) //把从 a起 n个字符替换
	insert(a,str) //在下标 a处插入
	append(str)//在末尾追加
	
	'A'=65,'a'=97,'0'=48  //ASCLL码
	tolower(c) //大写转小写 
	toupper(c) //小写转大写
	           //'a'-'A'=32 
	 
	if(c>='a' && c<='z')  //小写 
	if(c>='A' && c<='Z')  //大写
	if(c>='0' && c<='9')  //数字 
						  //判断字符类型 
return 0;}	

李澄瑞

mixly遥控风扇

李澄瑞 李澄瑞 发表于2026-08-19 浏览103 评论0
#include <IRremote.h>

const int IR_RECV_PIN = A0;
const int FAN_PIN_A2 = A2;
const int FAN_PIN_A3 = A3;

IRrecv irrecv(IR_RECV_PIN);
decode_results results;

bool fanState = false;
// 你的按键码 FFA25D
const unsigned long TARGET_KEY = 0xFFA25D;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn();

  pinMode(FAN_PIN_A2, OUTPUT);
  pinMode(FAN_PIN_A3, OUTPUT);
  digitalWrite(FAN_PIN_A2, LOW);
  digitalWrite(FAN_PIN_A3, LOW);
}

void loop()
{
  if (irrecv.decode(&results))
  {
    Serial.print("收到码值 HEX: ");
    Serial.println(results.value, HEX);

    // ✅过滤NEC长按重复码 0xFFFFFFFF,只有真正按键才执行
    if(results.value != 0xFFFFFFFF)
    {
      if (results.value == TARGET_KEY)
      {
        fanState = !fanState;
        if (fanState)
        {
          digitalWrite(FAN_PIN_A2, HIGH);
          digitalWrite(FAN_PIN_A3, HIGH);
          Serial.println("👉风扇开启 A2 A3 = HIGH");
        }
        else
        {
          digitalWrite(FAN_PIN_A2, LOW);
          digitalWrite(FAN_PIN_A3, LOW);
          Serial.println("👉风扇关闭 A2 A3 = LOW");
        }
      }
    }
    irrecv.resume();
  }
}

关于我们

双向链表

Very2 Very2 发表于2026-08-06 浏览332 评论0
//双链表基本运算算法
#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct DNode		//定义双链表结点类型
{
	ElemType data;
	struct DNode *prior;	//指向前驱结点
	struct DNode *next;		//指向后继结点
} DLinkNode;
void CreateListF(DLinkNode *&L,ElemType a[],int n)
//头插法建双链表
{
	DLinkNode *s;
	L=(DLinkNode *)malloc(sizeof(DLinkNode));  	//创建头结点
	L->prior=L->next=NULL;
	for (int i=0;i<n;i++)
	{	
		s=(DLinkNode *)malloc(sizeof(DLinkNode));//创建新结点
		s->data=a[i];
		s->next=L->next;			//将结点s插在原开始结点之前,头结点之后
		if (L->next!=NULL) L->next->prior=s;
		L->next=s;s->prior=L;
	}
}
void CreateListR(DLinkNode *&L,ElemType a[],int n)
//尾插法建双链表
{
	DLinkNode *s,*r;
	L=(DLinkNode *)malloc(sizeof(DLinkNode));  	//创建头结点
	L->prior=L->next=NULL;
	r=L;					//r始终指向终端结点,开始时指向头结点
	for (int i=0;i<n;i++)
	{	
		s=(DLinkNode *)malloc(sizeof(DLinkNode));//创建新结点
		s->data=a[i];
		r->next=s;s->prior=r;	//将结点s插入结点r之后
		r=s;
	}
	r->next=NULL;				//尾结点next域置为NULL
}
void InitList(DLinkNode *&L)
{
	L=(DLinkNode *)malloc(sizeof(DLinkNode));  	//创建头结点
	L->prior=L->next=NULL;
}
void DestroyList(DLinkNode *&L)
{
	DLinkNode *pre=L,*p=pre->next;
	while (p!=NULL)
	{
		free(pre);
		pre=p;
		p=pre->next;
	}
	free(pre);
}
bool ListEmpty(DLinkNode *L)
{
	return(L->next==NULL);
}
int ListLength(DLinkNode *L)
{
	DLinkNode *p=L;
	int i=0;
	while (p->next!=NULL)
	{
		i++;
		p=p->next;
	}
	return(i);
}
void DispList(DLinkNode *L)
{
	DLinkNode *p=L->next;
	while (p!=NULL)
	{
		printf("%d ",p->data);
		p=p->next;
	}
	printf("\n");
}
bool GetElem(DLinkNode *L,int i,ElemType &e)
{
	int j=0;
	DLinkNode *p=L;
	if (i<=0) return false;		//i错误返回假
	while (j<i && p!=NULL)
	{
		j++;
		p=p->next;
	}
	if (p==NULL)
		return false;
	else
	{
		e=p->data;
		return true;
	}
}
int LocateElem(DLinkNode *L,ElemType e)
{
	int n=1;
	DLinkNode *p=L->next;
	while (p!=NULL && p->data!=e)
	{
		n++;
		p=p->next;
	}
	if (p==NULL)
		return(0);
	else
		return(n);
}
bool ListInsert(DLinkNode *&L,int i,ElemType e)
{
	int j=0;
	DLinkNode *p=L,*s;
	if (i<=0) return false;		//i错误返回假
	while (j<i-1 && p!=NULL)
	{
		j++;
		p=p->next;
	}
	if (p==NULL)				//未找到第i-1个结点
		return false;
	else						//找到第i-1个结点p
	{
		s=(DLinkNode *)malloc(sizeof(DLinkNode));	//创建新结点s
		s->data=e;	
		s->next=p->next;		//将结点s插入到结点p之后
		if (p->next!=NULL) 
			p->next->prior=s;
		s->prior=p;
		p->next=s;
		return true;
	}
}
bool ListDelete(DLinkNode *&L,int i,ElemType &e)
{
	int j=0;
	DLinkNode *p=L,*q;
	if (i<=0) return false;		//i错误返回假
	while (j<i-1 && p!=NULL)
	{
		j++;
		p=p->next;
	}
	if (p==NULL)				//未找到第i-1个结点
		return false;
	else						//找到第i-1个结点p
	{
		q=p->next;				//q指向要删除的结点
		if (q==NULL) 
			return false;		//不存在第i个结点
		e=q->data;
		p->next=q->next;		//从单链表中删除*q结点
		if (p->next!=NULL) p->next->prior=p;
		free(q);				//释放q结点
		return true;
	}
}