×

关于我们

洛谷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; 
}

李澄瑞

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();
  }
}

李澄瑞

洛谷p1983

李澄瑞 李澄瑞 发表于2026-07-30 浏览265 评论0
#include<iostream>
#include<cstdio>
#include<cstring>
#define ZYS 1005
using namespace std;
int n,m,ans,st[ZYS],s,tuopu[ZYS][ZYS],de[ZYS],tt[ZYS],top;
bool is[ZYS],bo[ZYS];			//用andyzys大佬的名字做数组范围
int main() {
    scanf("%d %d",&n,&m);
    for(int i=1;i<=m;i++) {
        memset(is,0,sizeof(is));//is表示是否是停靠站
        scanf("%d",&s);
        for(int j=1;j<=s;j++)
            scanf("%d",&st[j]),is[st[j]]=true;
        for(int j=st[1];j<=st[s];j++)
            if(!is[j])			//枚举站点,若不是已停靠的就小于所有停靠站的等级
                for(int k=1;k<=s;k++)	//枚举已停靠站点
                    if(!tuopu[j][st[k]]) tuopu[j][st[k]]=1,de[st[k]]++;//tuopu[i][j]表示j>i的级别,如上
    }
    
    do{
        top=0;
        for(int i=1;i<=n;i++)
            if(de[i]==0&&!bo[i]) {
                tt[++top]=i,bo[i]=true;//开始将出度为0的点删掉
            }
        for(int i=1;i<=top;i++)
            for(int j=1;j<=n;j++)
                if(tuopu[tt[i]][j]) tuopu[tt[i]][j]=0,de[j]--;//去边去点
        ans++;
    } while(top);
    printf("%d",ans-1);//最后一次什么点都没有会多算一次(自行理解)
    return 0;
}

李澄瑞

米思琪时钟c++代码

李澄瑞 李澄瑞 发表于2026-07-30 浏览265 评论0
#include <Wire.h>
#include <TM1650.h>

volatile int 时;
volatile int 分;
volatile int 秒;
TM1650 tm_4display;

void setup(){
  时 = 10;
  分 = 20;
  秒 = 0;
  Wire.begin();
  tm_4display.init();
  pinMode(A5, OUTPUT);
  tm_4display.displayOn();
  digitalWrite(A5,HIGH);
  while (true) {
    delay(100);
    秒 = 秒 + 1;
    if (秒 > 59) {
      秒 = 0;
      分 = 分 + 1;
      if (分 > 59) {
        分 = 0;
        时 = 时 + 1;
        if (时 > 23) {
          时 = 0;

        }

      }

    }
    tm_4display.displayString(String(String((时 / 10)) + String(((long) (时) % (long) (10)))) + String(String((分 / 10)) + String(((long) (分) % (long) (10)))));
  }
}

void loop(){

}