【教学类-43-20】20240113 数独(二)4宫格、9宫格 无空行A4模板

2024-01-14 10:44

本文主要是介绍【教学类-43-20】20240113 数独(二)4宫格、9宫格 无空行A4模板,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作品展示:

4宫格 9宫格 题目连在一起

40f1a1b1ebb241c5b5e2eeb1e2a5a00c.png

61d6bcc91c2243cdab7a5c1bf36cb6da.png

背景需求:

制作十宫格数独模板,为了凑满20行,删除了每个数独题之间的行列分割线

【教学类-43-18】A4最终版 20240111 数独11.0 十宫格X*Y=Z套(n=10),套用没有分割行列的A4横版模板-CSDN博客文章浏览阅读194次,点赞6次,收藏5次。【教学类-43-18】A4最终版 20240111 数独11.0 十宫格X*Y=Z套(n=10),套用没有分割行列的A4横版模板https://blog.csdn.net/reasonsummer/article/details/135537227375e5328ba5142868984ca391795e640.png

然后我想到平时打印的宫格题有空行空列,虽然看起来清晰,但是剪开后,根本不想再精细修边,有时候让做完题目的孩子把这张数独题目当手工纸,孩子们感觉它不是正方形,大多折叠纸飞机。

bfa90679b8aa4156b6b19f1f8f77b694.png

因此,我希望3-9宫格模板也改成没有分割线的连在一起的样式。

在3、5、6、7、8、10宫格模板(只能横纵判断)的基础上,

CSDNhttps://mp.csdn.net/mp_blog/creation/editor?spm=1011.2124.3001.6192

这里制作 4、9宫格模板(横纵判断,小格子判断)

0aafb6e6ddcf4fee818335103b2eba40.png

 

WORD模板修改

2c7b6bf48d7e495fba1ab74924918ecd.png

0aafb6e6ddcf4fee818335103b2eba40.png

 

7115b3e6afbf4d028367d9f0c841abe7.pnge54ceebae24a4f478806ea92d7aa196b.png

代码展示:

 

# 测试11*11格,2*2一共4套3*3 宫格
'''
目的:数独24 4宫格9宫格3小格正好等于1-9,6题都连在一起
作者:阿夏(参考)
时间:2024年1月12日 13:35'''import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
import os,timeimport docx
from docx import Document
from docx.shared import Pt 
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qnfrom docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor# 生成题库
import random
import copynum=int(input('生成几份\n'))
kk=int(input('空格数量,输入5,就是50%,就是空一半)\n'))
# 制作"单元格"# 几宫格
for hs in [4,9]:
# hs=int(input('请输入宫格数量(3,5.6,7,8,)\n'))# 因为有3-9的不同word模板,其中3-4模板一页生成9套,5-9模板一页生成6套,这里直接生成边长ll=['4','9'] # 如果输入345mm=['43','32']# 3对应的套数是4*3套nn=['24','24']# 3对应的写入单元格的数字大小36磅 for r in range(len(ll)):if hs ==int(ll[r]):# 底边几套.底边看有2份db=int(mm[r][0])# int(input('底边几套? 3\n'))# 侧边几套 侧边看也是2份print(db )        cb=int(mm[r][1])# int(input('侧边几套? 2\n'))print(cb)size=int(nn[r])print(size)        # 写入单元格数字的大小(撑满格子)# 新建一个”装N份word和PDF“的临时文件夹imagePath1=r'C:\Users\jg2yXRZ\OneDrive\桌面\数独\零时Word'if not os.path.exists(imagePath1):  # 判断存放图片的文件夹是否存在os.makedirs(imagePath1)  # 若图片文件夹不存在就创建# 计算不同模板中的单元格坐标,放在bg里# 棋盘格子数量,# 如果正方形:底边2*侧边2,就是3*3宫格 2*2=4套,底边边格子数量就是3*2+1=7,侧边格子数量就是3*2+1=7,# 如果长方形:底边3*侧边2,就是3*3宫格,3*2=6套 底边格子数量就是3*3+2=11,侧边格子数量就是3*2+1=7,# if db==cb:db_size = hs*dbcb_size=  hs*cbprint('{}宫格排列底{}侧{}共{}套,底边格子数{}'.format(hs,db,cb,db*cb,db_size ))print('{}宫格排列底{}侧{}共{}套,侧边格子数{}'.format(hs,db,cb,db*cb,cb_size ))# 确定每个宫格的左上角坐标 00 04 40  44bgszm=[]for a in range(0,cb_size,hs):    # 0-11每隔4,写一个坐标  侧边yfor b in range(0,db_size,hs):  # 0-11每隔4,写一个坐标  侧边xbgszm.append('{}{}'.format('%02d'%a,'%02d'%b))print(bgszm)# 3宫格排列底3侧2共6套,底边格子数11# 3宫格排列底3侧2共6套,侧边格子数7# ['0000', '0004', '0008', '0400', '0404', '0408']# 转为元祖start_coordinates = [(int(s[0:2]), int(s[2:4])) for s in bgszm]cell_coordinates = []# 推算每个起始格子后面的单元格数字for start_coord in start_coordinates:i, j = start_coordsubgrid_coordinates = []for x in range(hs):for y in range(hs):subgrid_coordinates.append((i + x, j + y))cell_coordinates.append(subgrid_coordinates)# 打印结果(元祖样式)bg=[]for coordinates in cell_coordinates:# print(coordinates)     # [(4, 8), (4, 9), (4, 10), (5, 8), (5, 9), (5, 10), (6, 8), (6, 9), (6, 10)]for c in  coordinates:print(c)        # 元组 (1, 2) 样式s = ''.join(str(num).zfill(2) for num in c)   # zfill将元组 (1, 2) 转换为字符串 '0102' 特别是(5,10)这种必须转成2个数字0510print(str(s))        #  '12'bg.append(s)  #  '0102'print(bg)# 生成PDfP=[] for z in range(num):  P.clear()#    制作4份数据for j in range(db*cb):    #  3宫格,4*3=12套# ————————————————# 版权声明:本文为CSDN博主「Vaeeeeeee」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。# 原文链接:https://blog.csdn.net/m0_46366547/article/details/131334720def generate_sudoku_board():# 创建一个9x9的二维列表,表示数独棋盘board = [[0] * hs for _ in range(hs)]# 递归函数,用于填充数独棋盘的每个单元格def filling_board(row, col):# 检查是否填充完成整个数独棋盘if row == hs:return True# 计算下一个单元格的行和列索引next_row = row if col < hs-1 else row + 1next_col = (col + 1) % hsimport mathr = int(math.sqrt(hs))print(r)# 获取当前单元格在小九宫格中的索引box_row = row // rbox_col = col // r# 随机生成1到9的数字numbers = random.sample(range(1, hs+1), hs)for num in numbers:# 检查行、列、小九宫格是否已经存在相同的数字if num not in board[row] and all(board[i][col] != num for i in range(hs)) and all(num != board[i][j] for i in range(box_row*r, box_row*r+r) for j in range(box_col*r, box_col*r+r)):board[row][col] = num# 递归填充下一个单元格if filling_board(next_row, next_col):return True# 回溯,将当前单元格重置为0board[row][col] = 0return False# 填充数独棋盘filling_board(0, 0)return board# 定量出现空白格子def create_board(): # level数字越大代表游戏难度越大"""生成一个随机的数独棋盘,空白格少"""board = generate_sudoku_board()board1 =  copy.deepcopy(board)blanks = random.sample(range(hs*hs), int(hs*hs*kk/10))for i in blanks:row = i // hscol = i % hsboard[row][col] = 0# if random.randint(0, hs) < level:#     board1[row][col] = 0return boardv = create_board() # 数字越小,空格少# 数字大,空格多# 这里无法控制空格的数量# 提取每个元素for a1  in v:         # 第一次读取,[a,b][c,d][e,f]的内容-列表for a2 in a1:    # 第二次读取,[a,b,c,d,e,f]的内容-元素if a2==0:                # 如果某个元素==0,就替换成空P.append('')else:      # 如果某个元素非0,就写入本身的数字P.append(a2)print(P)print(len(P))Q=P# 四宫格有2个模板,一个是每页12份,格子稍微大,一个是每页15份,格子稍微小,这里选大一点if hs==4:       doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\数独\数独长方形({}宫格)合并版 12.docx'.format(hs)) else: doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\数独\数独长方形({}宫格)合并版.docx'.format(hs))     #    table = doc.tables[0]          # 表0,表2 写标题用的# 标题写入3、5单元格  for t in range(0,len(bg)):             # 0-5是最下面一行,用来写卡片数字pp=int(bg[t][0:2])     # qq=int(bg[t][2:4])k=str(Q[t])              # 提取list图案列表里面每个图形  t=索引数字print(pp,qq,k)# 图案符号的字体、大小参数run=table.cell(pp,qq).paragraphs[0].add_run(k)    # 在单元格0,0(第1行第1列)输入第0个图图案run.font.name = '黑体'#输入时默认华文彩云字体# run.font.size = Pt(46)  #输入字体大小默认30号 换行(一页一份大卡片run.font.size = Pt(size) #是否加粗# run.font.color.rgb = RGBColor(150,150,150) #数字小,颜色深0-255run.font.color.rgb = RGBColor(50,50,50) #数字小,颜色深0-255run.bold=True# paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER#居中  doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\数独\零时Word\{}.docx'.format('%02d'%(z+1)))#保存为XX学号的电话号码word     time.sleep(2)from docx2pdf import convert# docx 文件另存为PDF文件inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/数独/零时Word/{}.docx".format('%02d'%(z+1))# 要转换的文件:已存在outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/数独/零时Word/{}.pdf".format('%02d'%(z+1))  # 要生成的文件:不存在# 先创建 不存在的 文件f1 = open(outputFile, 'w')f1.close()# 再转换往PDF中写入内容convert(inputFile, outputFile)print('----------第4步:把都有PDF合并为一个打印用PDF------------')# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)import osfrom PyPDF2 import PdfMergertarget_path =  'C:/Users/jg2yXRZ/OneDrive/桌面/数独/零时Word'pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]pdf_lst.sort()file_merger = PdfMerger()for pdf in pdf_lst:print(pdf)file_merger.append(pdf)file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/数独/(打印合集)05长方形数独宫格24.0 {}宫格无空{}乘{}等于{}套({}人{}份).pdf" .format(hs,db,cb,db*cb,num,num))file_merger.close()# doc.Close()# # print('----------第5步:删除临时文件夹------------')    import shutilshutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/数独/零时Word') #递归删除文件夹,即:删除非空文件夹time.sleep(3)    # 防止转换时报错,预留生成时间from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor# 生成题库
import random
import copynum=int(input('生成几份\n'))
kk=int(input('空格数量,输入5,就是50%,就是空一半)\n'))
# 制作"单元格"# 几宫格
for hs in [3,5,6,7,8,10]:
# hs=int(input('请输入宫格数量(3,5.6,7,8,)\n'))# 因为有3-9的不同word模板,所以有不同的套数和字体大小ll=['3','5','6','7','8','10',] # 如果输入345mm=['53','32','32','32','32','32',]# 3对应的套数是4*3套nn=['36','36','36','24','24','22']# 3对应的写入单元格的数字大小36磅 for r in range(len(ll)):if hs ==int(ll[r]):# 底边几套.底边看有2份db=int(mm[r][0])# int(input('底边几套? 3\n'))# 侧边几套 侧边看也是2份print(db )        cb=int(mm[r][1])# int(input('侧边几套? 2\n'))print(cb)size=int(nn[r])print(size)        # 写入单元格数字的大小(撑满格子)# 新建一个”装N份word和PDF“的临时文件夹imagePath1=r'C:\Users\jg2yXRZ\OneDrive\桌面\数独\零时Word'if not os.path.exists(imagePath1):  # 判断存放图片的文件夹是否存在os.makedirs(imagePath1)  # 若图片文件夹不存在就创建# 计算不同模板中的单元格坐标,放在bg里# 棋盘格子数量,# 如果长方形:底边3*侧边2,3*2=6套 ,就是10*10宫格,底边格子数量就是10*3=30,侧边格子数量就是10*2=20,# if db==cb:db_size = hs*dbcb_size=  hs*cbprint('{}宫格排列底{}侧{}共{}套,底边格子数{}'.format(hs,db,cb,db*cb,db_size ))print('{}宫格排列底{}侧{}共{}套,侧边格子数{}'.format(hs,db,cb,db*cb,cb_size ))# 确定每个宫格的左上角坐标 00 04 40  44 中间没有分栏的空格了,所以hs不用+1bgszm=[]for a in range(0,cb_size,hs):    # 0-11每隔4,写一个坐标  侧边yfor b in range(0,db_size,hs):  # 0-11每隔4,写一个坐标  侧边xbgszm.append('{}{}'.format('%02d'%a,'%02d'%b))print(bgszm)# 10宫格排列底3侧2共6套,底边格子数30# 10宫格排列底3侧2共6套,侧边格子数20# 10宫格排列底3侧2共6套,侧边格子数20# ['0000', '0010', '0020', '1000', '1010', '1020']# 转为元祖start_coordinates = [(int(s[0:2]), int(s[2:4])) for s in bgszm]cell_coordinates = []# 推算每个起始格子后面的单元格数字for start_coord in start_coordinates:i, j = start_coordsubgrid_coordinates = []for x in range(hs):for y in range(hs):subgrid_coordinates.append((i + x, j + y))cell_coordinates.append(subgrid_coordinates)# 打印结果(元祖样式)bg=[]for coordinates in cell_coordinates:# print(coordinates)     # [(4, 8), (4, 9), (4, 10), (5, 8), (5, 9), (5, 10), (6, 8), (6, 9), (6, 10)]for c in  coordinates:print(c)        # 元组 (1, 2) 样式s = ''.join(str(num).zfill(2) for num in c)   # zfill将元组 (1, 2) 转换为字符串 '0102' 特别是(5,10)这种必须转成2个数字0510print(str(s))        #  '12'bg.append(s)  #  '0102'print(bg)# 生成PDfP=[] for z in range(num):  P.clear()#    制作4份数据for j in range(db*cb):    #  3宫格,4*3=12套# ————————————————生成随机宫格,按比例空缺格子# 版权声明:本文为CSDN博主「Vaeeeeeee」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。# 原文链接:https://blog.csdn.net/m0_46366547/article/details/131334720def generate_sudoku_board():# 函数体生成数独库表盘# 创建一个9x9的二维列表,表示数独棋盘board = [[0] * hs for _ in range(hs)]# 递归函数,用于填充数独棋盘的每个单元格def filling_board(row, col):# 检查是否填充完成整个数独棋盘if row == hs:return True# 计算下一个单元格的行和列索引next_row = row if col < hs-1 else row + 1next_col = (col + 1) % hs# 获取当前单元格在小九宫格中的索引box_row = row box_col = col# 随机生成1到9的数字numbers = random.sample(range(1, hs+1), hs)for num in numbers:# 检查行、列、小九宫格是否已经存在相同的数字if num not in board[row] and all(board[i][col] != num for i in range(hs)) and all(num != board[i][j] for i in range(box_row, box_row) for j in range(box_col, box_col)):board[row][col] = num# 递归填充下一个单元格if filling_board(next_row, next_col):return True# 回溯,将当前单元格重置为0board[row][col] = 0return False# 填充数独棋盘filling_board(0, 0)return boarddef create_board(): # level数字越大代表游戏难度越大"""生成一个随机的数独棋盘,空白格少"""board = generate_sudoku_board()board1 =  copy.deepcopy(board)blanks = random.sample(range(hs*hs), int(hs*hs*kk/10))for i in blanks:row = i // hscol = i % hsboard[row][col] = 0# if random.randint(0, hs) < level:#     board1[row][col] = 0return boardv = create_board() # 81空34、46# 提取每个元素for a1  in v:         # 第一次读取,[a,b][c,d][e,f]的内容-列表for a2 in a1:    # 第二次读取,[a,b,c,d,e,f]的内容-元素if a2==0:                # 如果某个元素==0,就替换成空P.append('')else:      # 如果某个元素非0,就写入本身的数字P.append(a2)print(P)print(len(P))Q=P# 三宫格有2个模板,一个是每页15份,格子稍微大,一个是每页20份,格子稍微小,这里选大一点if hs==3:       doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\数独\数独长方形({}宫格)合并版 15.docx'.format(hs)) else: doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\数独\数独长方形({}宫格)合并版.docx'.format(hs))     #    table = doc.tables[0]          # 表0,表2 写标题用的# 标题写入3、5单元格  for t in range(0,len(bg)):             # 0-5是最下面一行,用来写卡片数字pp=int(bg[t][0:2])     # qq=int(bg[t][2:4])k=str(Q[t])              # 提取list图案列表里面每个图形  t=索引数字print(pp,qq,k)# 图案符号的字体、大小参数run=table.cell(pp,qq).paragraphs[0].add_run(k)    # 在单元格0,0(第1行第1列)输入第0个图图案run.font.name = '黑体'#输入时默认华文彩云字体# run.font.size = Pt(46)  #输入字体大小默认30号 换行(一页一份大卡片run.font.size = Pt(size) #是否加粗# run.font.color.rgb = RGBColor(150,150,150) #数字小,颜色深0-255run.font.color.rgb = RGBColor(50,50,50) #数字小,颜色深0-255run.bold=True# paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER#居中  doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\数独\零时Word\{}.docx'.format('%02d'%(z+1)))#保存为XX学号的电话号码word     time.sleep(2)from docx2pdf import convert# docx 文件另存为PDF文件inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/数独/零时Word/{}.docx".format('%02d'%(z+1))# 要转换的文件:已存在outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/数独/零时Word/{}.pdf".format('%02d'%(z+1))  # 要生成的文件:不存在# 先创建 不存在的 文件f1 = open(outputFile, 'w')f1.close()# 再转换往PDF中写入内容convert(inputFile, outputFile)print('----------第4步:把都有PDF合并为一个打印用PDF------------')# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)import osfrom PyPDF2 import PdfMergertarget_path =  'C:/Users/jg2yXRZ/OneDrive/桌面/数独/零时Word'pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]pdf_lst.sort()file_merger = PdfMerger()for pdf in pdf_lst:print(pdf)file_merger.append(pdf)file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/数独/(打印合集)05长方形数独宫格23.0 {}宫格无空{}乘{}等于{}套({}人{}份).pdf" .format(hs,db,cb,db*cb,num,num))file_merger.close()# doc.Close()# # print('----------第5步:删除临时文件夹------------')    import shutilshutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/数独/零时Word') #递归删除文件夹,即:删除非空文件夹time.sleep(3)    # 防止转换时报错,预留生成时间

终端输入:

输入分数,和抽空数量

293aaad800bf45b2862ec66f48da8b8b.png

已经设置好,直接套用模板 ,生成4.9宫格1份。。

cf4dfb6893614de5be795858a2eaa7e7.png

 

结果展示:

d456c9eb0d0c4429b43faaab4cf4ee82.png

 

 

 

40f1a1b1ebb241c5b5e2eeb1e2a5a00c.png

 

61d6bcc91c2243cdab7a5c1bf36cb6da.png

 

 

这篇关于【教学类-43-20】20240113 数独(二)4宫格、9宫格 无空行A4模板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/604889

相关文章

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

最大流、 最小费用最大流终极版模板

最大流  const int inf = 1000000000 ;const int maxn = 20000 , maxm = 500000 ;struct Edge{int v , f ,next ;Edge(){}Edge(int _v , int _f , int _next):v(_v) ,f(_f),next(_next){}};int sourse , mee

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param