点子

你在制作一个游戏,关卡设计员帮你设计了 n n n个关卡,
每个关卡有各自的难度 ( 1 − m (1-m (1m的整数 ) ) )和精彩度 ( 1 − m (1-m (1m的整数 ) ) )
假如最终的游戏要求从中挑选若干个游戏组成一个序列,
每关的难度和精彩度都分别不小于上一关。
如果 n n n很大但 m m m相对较小,最多可以做多少关?
















m较小是问题的突破口,另一个突破口是如果有两关 ( a i , b i ) = = ( a j , b j ) (a_i, b_i)== (a_j, b_j) (ai,bi)==(aj,bj),那么两关一定是要么都选,要么都不选想清楚这一点之后,准备一张 m ∗ m m*m mm的表,其中 x i j x_{ij} xij表示难度为 i i i,精彩度为 j j j的关卡有多少个。然后呢?就是那个经典的动态规划问题了:从左上角走到右下角,路径最大值是多少?



有一个 n n n个元素的数组,除了两个数只出现一次外,其余元素都出现两次,让你找出这两个只出现一次的数分别是几,要求时间复杂度为 O ( n ) O(n) O(n)且再开辟的内存空间固定 ( ( ( n n n无关 ) ) )

















首先,把所有元素异或,得到的结果就是那两个只出现一次的元素异或的结果。然后,因为这两个只出现一次的元素一定是不相同的,所以这两个元素的二进制形式肯定至少有某一位是不同的,即一个为 0 0 0,另一个为 1 1 1,找到这一位。可以根据前面异或得到的数字找到这一位,怎么找呢?稍加分析就可以知道,异或得到这个数字二进制形式中任意一个为 1 1 1的位都是我们要找的那一位,找到这一位就可以了(这很容易)。再然后,以这一位是 1 1 1还是 0 0 0为标准,将数组的 n n n个元素分成了两部分,将这一位为 0 0 0的所有元素做异或,得出的数就是只出现一次的数中的一个;将这一位为 1 1 1的所有元素做异或,得出的数就是只出现一次的数中的另一个。从而解出题目。总共遍历数组两次,时间复杂度为 O ( n ) O(n) O(n)



证明等腰三角形两底角相等: Δ A B C ≌ Δ A C B \Delta ABC ≌ \Delta ACB ΔABCΔACB.



O ( 1 ) O(1) O(1)判断二叉树 L C A LCA LCA

并查集维护父亲时,路径压缩可能跳到 L C A LCA LCA上面的节点

利用中序遍历——左中右,提前求出编号

根据二叉树的性质

此时 L C A LCA LCA的编号一定在要求的两个节点的编号之间

L C A LCA LCA之上的节点一定在编号之外

那么就可以 O ( 1 ) O(1) O(1)判断是否为 L C A LCA LCA

http://gryz.cf:8083/contest/6/problem/125






计算000年~当前的天数

long long Calculation(int y,int m,int d){
	if (m<3) {y-=1;m+=12;}
	return 365*y+y/4-y/100+y/400+(153*m-457)/5+d-306;
}

周长为 n n n( n n n是正整数),边长为整数的三角形的个数用 n n n来表示?
当n是偶数时, a ( n ) = a ( n − 3 ) a(n) = a(n-3) a(n)=a(n3)
当n是奇数时, a ( n ) = a ( n − 3 ) + [ n + ( − 1 ) ( 1 2 n + 1 2 ) ] 4 a(n) = a(n-3) + \frac{[n + (-1)^{(\frac12n+\frac12)}]}4 a(n)=a(n3)+4[n+(1)(21n+21)]

http://api.mtyqx.cn/api/random.php

点子时钟可以是一个简单的程序,用来提醒用户执行特定的任务或活动。以下是一个简单的点子时钟程序设计: 1. 用户输入需要提醒的任务或活动名称以及时间 2. 程序设置一个计时器,在指定的时间到达时触发提醒 3. 提醒可以是一个弹窗,闹钟声音或者发送一条提醒短信等 4. 程序可以保存多个提醒,用户可以随时添加、编辑或删除他们 下面是一个用 Python 编写的简单点子时钟程序,可以供你参考: ```python import time import tkinter as tk from tkinter import messagebox class Reminder: def __init__(self, task, due_time): self.task = task self.due_time = due_time def get_reminder_message(self): return f"It's time to {self.task}!" class Clock: def __init__(self): self.reminders = [] self.root = tk.Tk() self.root.geometry("300x150") self.root.title("DotClock") self.label = tk.Label(text="") self.label.pack() self.add_button = tk.Button(text="Add Reminder", command=self.add_reminder) self.add_button.pack() self.root.mainloop() def add_reminder(self): top = tk.Toplevel() top.geometry("300x150") top.title("Add Reminder") task_label = tk.Label(top, text="Task:") task_label.pack() task_entry = tk.Entry(top) task_entry.pack() time_label = tk.Label(top, text="Due Time:") time_label.pack() time_entry = tk.Entry(top) time_entry.pack() save_button = tk.Button(top, text="Save", command=lambda: self.save_reminder(task_entry.get(), time_entry.get())) save_button.pack() def save_reminder(self, task, due_time): reminder = Reminder(task, due_time) self.reminders.append(reminder) self.update_label() def update_label(self): now = time.strftime("%H:%M:%S") reminder_messages = [] for reminder in self.reminders: if reminder.due_time == now: reminder_messages.append(reminder.get_reminder_message()) if reminder_messages: messagebox.showinfo("Reminder", "\n".join(reminder_messages)) self.label.configure(text=now) self.root.after(1000, self.update_label) if __name__ == "__main__": clock = Clock() ``` 这个程序使用了 tkinter 库来创建 GUI,使用了 time 库来获取当前时间。用户可以通过点击 "Add Reminder" 按钮来添加提醒,程序会在每秒钟更新现在的时间,并检查是否有提醒需要触发,如果有则弹出提醒窗口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值