自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 C/C++:实现象棋游戏

采用面相过程的设计方式实现,类似于我们平时做的课程设计,实现这样的小游戏无非就是多了图形处理库。这里使用的是acllib图形库。设计这种小游戏,首先要从宏观上去认识:象棋,要有棋盘,要有棋子,棋子要移动。对于棋盘,十行九列画出即可。对于棋子,分黑红两方,按照指定位置画出。如何移动棋子,我们有mouseEvent函数。初始化棋盘棋子:initmap,initpaint利用鼠标实现棋子移动分两步:第一次点击,记录点击棋子的信息第二次点击,将第一次点击记录的棋子信息移动到第二次点击的位置。最后在

2022-05-30 10:15:19 6491 10

原创 C/C++:实现精灵游戏

采用面向过程的遍程思想,通过acllib图形库来实现。acllib下载地址:acllibtom,jerry,dog,heart以及开始图片,结束图片这些可以自己找,图片的格式必须为BMP、JPEG、GIF这三种。创建win32项目创建方式游戏效果如下:#include"acllib.h"#include<time.h>#include<malloc.h>#include<stdio.h>const int winWidth = 960, winH

2022-05-10 22:17:30 3317 18

原创 通过visual studio创建win32项目

通过visual studio(这里用的visual studio 2022)创建win32项目以及添加我们所需要的资源码文件。1、选择Windows桌面向导2、修改项目名称3、选择空项目4、将我们所需要的图片以及acllib.h,acllib.c复制到此文件夹中5、添加新建项,即.cpp程序单击添加即可。6、根据第五步添加现有项,即把资源文件夹里的acllib.c,acllib.h以及各种图片添加到程序中来。添加后如下图至此win32项目创建完成。...

2022-05-10 22:14:00 6251

原创 Codeforces Round #775 ( Div.2)

A. Game只有一个地方,读题的时候一句英文理解错了You can jump between adjacent locations for free, as well as no more than once jump from any location with land i to any location with land i+x, spending x coins (x≥0)。如果需要花费,那么只能跳跃一次。#include <bits/stdc++.h>//dfs 大法师#

2022-03-07 00:13:39 270 4

原创 Codeforces Round #766 (Div. 2)D - Not Adding

D - Not Adding题意:给出n个互不相同的数,每次操作找任意两个不同的数进行gcd,其中得到的数也不能在该数组中,每次gcd得到一个数就将其加在原数组中,问这种操作最多能执行几次。分析:n个互不相同的数进行gcd得到x,那么这n个数一定都是x的倍数,由于题目中说所有的数都不能相同,另外我们还知道数据的范围,那我们可以直接枚举所有在范围中的数,看其是否在该数组中,若不在,是否能用该数组中的两个数gcd得到。所以从1枚举到1000000,将数组中出现的该数的所有倍数gcd,如果得到的数等于该数,并

2022-03-06 00:50:10 120

原创 Codeforces Round #766 (Div. 2)C. Not Assigning

C. Not Assigning题意:给出n个节点,n-1条路经,给每条路径赋上初值(这里的值必须为素数),使得每两条路径权值之和为素数,且对于每条路径,每个节点只能访问一次(即判断是否为线性结构)。分析:找头节点,依次赋值,根据路径输出答案。#include <bits/stdc++.h>//dfs 大法师#define ll long longusing namespace std;const int mod=20100403;const int Inf=0x3f3f3f3f

2022-03-05 16:36:06 92

原创 Codeforces Round #774 (Div. 2)C - Factorials and Powers of Two

C - Factorials and Powers of Two题意:d的阶乘,2的d次方都属于powerful number,现给出一个数n,求n能用powerful number和表示的最少powerful number的个数。其中每个powerful number只能用一次。分析:根据二进制,我们能发现每个数n都能用若干个2的d次方的和表示,所以一定会有答案。求最小个数,我们可以枚举所有情况,求其中最小的那个就可以了。dfs(i,j,d,n)——i代表那个数的阶乘,j代表i-1的阶乘,d代表用了

2022-03-05 09:47:02 271 1

原创 位运算处理n皇后

一般暴力处理n皇后,时间复杂度#include<bits/stdc++.h>using namespace std;int lowbit(int x)//寻找第一个1的位置{ return x&-x;}int jud[2002],n;int sum;int ans;void dfs(int c,int z,int y,int r){ if(c==sum){ans++;return;} int pos=sum&~(c|z|y|jud[r]

2022-03-03 15:13:43 345

原创 Educational Codeforces Round 123 (Rated for Div. 2)C、Increase Subarray Sums(求前缀和)

子段连续求最大子段和(dp)int Maxsum(int n,int *x){ int sum = 0,b = 0,ll,rr; for(int i = 1;i <= n;i++) { if(b > 0) {b += x[i];} else {b = x[i];} if(b > sum) {sum = b;} } return

2022-02-23 01:17:03 488

原创 Educational Codeforces Round 122 (Rated for Div. 2)D - Make Them Equal(完全背包+01背包)

题目链接题意:You have an array of integers a of size n. Initially, all elements of the array are equal to 1. You can perform the following operation: choose two integers i (1≤i≤n) and x (x>0), and then increase the value of ai by ⌊ai/x⌋ (i.e. make ai=ai+⌊ai/

2022-02-02 14:23:21 318

原创 768、C. Strange Test(与运算) 769、C - And Matching(或运算)

与运算0&n=01&奇数=11&偶数=0#include <bits/stdc++.h>//dfs 大法师#define ll long longusing namespace std;const int mod=20100403;const int Inf=0x3f3f3f3f;inline int read(){ int x=0,f=1;char ch=getchar(); while (!isdigit(ch)){if (ch=='-')

2022-01-31 01:24:40 921

原创 二分答案+贪心

题意:对于给定的一个长度为N的正整数数列 A ,现要将其分成 M(M≤N)段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列 4 2 4 5 1 要分成 3 段。将其如下分段:[4 2][4 5][1]第一段和为 6,第 2 段和为 9,第 3 段和为 1,和最大值为 9。将其如下分段:[4][2 4][5 1]第一段和为 4,第 2 段和为 6,第 3 段和为 6,和最大值为 6。并且无论如何分段,最大值不会小于 6。所以可以得到要将数列 4 2 4 5 1 要分

2022-01-28 23:04:28 582

原创 哈夫曼树模板

模板出处哈夫曼裸题:合并果子/******************************************************************///哈夫曼树#include <bits/stdc++.h>//#include <cstdio>//#include <cstring>using namespace std;typedef struct { int weight; // 结点权值? int

2022-01-23 11:45:04 557

原创 理解哈希函数

哈希函数#include<bits/stdc++.h>using namespace std;int mod=1000007;int head[1000012]={0},cnt=0,ans=0;string t[10000];struct data//记录节点的结构体{string s;int next,num;}a[1000007];bool find_hash(string s,int sum)//查找函数{int u=head[sum];while(u){i

2022-01-23 01:58:09 635

原创 Codeforces Round #767 (Div. 2) C. Meximum Array 计算MEX

MEX即取mex集合中没有出现过的最小非负整数如:mex{0,2,3}=1;mex{1,2,3}=0;题意:Mihai has just learned about the MEX concept and since he liked it so much, he decided to use it right away.Given an array a of n non-negative integers, Mihai wants to create a new array b that is

2022-01-23 01:57:30 384

原创 Educational Codeforces Round 118 (Rated for Div. 2) C. Poisoned Dagger(二分或搜索)

C. Poisoned Dagger题意:Monocarp is playing yet another computer game. In this game, his character has to kill a dragon. The battle with the dragon lasts 100500 seconds, during which Monocarp attacks the dragon with a poisoned dagger. The i-th attack is per

2021-12-02 11:34:31 847

原创 DP+预处理+递归输出 CF2B The least round way

来源:CF2B The least round way题目描述There is a square matrix n×n , consisting of non-negative integer numbers. You should find such a way on it thatstarts in the upper left cell of the matrix;each following cell is to the right or down from the current cel

2021-11-30 17:11:47 187

原创 拓扑排序 Codeforces Round #748 (Div. 3)E. Gardener and Tree

由于最近做了很多关于树的题目,突然想起来之前有一道题意很简单的拓扑排序的题目,索性一块写了。题意:给出一棵树,总共k次操作,每次操作删除叶子节点,问k次操作后总共还剩余多少节点。难点:如可判断操作了k次。这里我们可以用pair存节点,second存删除该节点需要的操作次数#include <bits/stdc++.h>//dfs 大法师using namespace std;const int mod=20100403;inline int read(){ int x=0,f=

2021-11-28 02:14:09 257 2

原创 Codeforces Round #756 (Div. 3)——D、E1

D. Weights Assignment For Tree Edges题意:两组数,第一组数用来确定树的形状,第二组树为遍历节点的次序,要求按照这个次序使每个节点到根节点的距离递增。首先,这道题的第一个难点就是题意的理解,当时做的时候光读题就读了半个多小时,最后看懂想出来思路时间基本上也就截止了,潦草地写完代码提交后毫无疑问的wa了。其次,用x数组表示第一组数,y数组表示第二组数。因为题目要求y数组中的节点到根节点的距离递增,所以我们需要再开一个数组来存放节点到根节点的距离,赋上值后(可以直接赋y数组

2021-11-28 01:09:54 161

原创 Educational Codeforces Round 117 (Rated for Div. 2)C. Chat Ban

You are a usual chat user on the most famous streaming platform. Of course, there are some moments when you just want to chill and spam something.More precisely, you want to spam the emote triangle of size k. It consists of 2k−1 messages. The first messag

2021-11-22 22:55:19 602

原创 2021-11-21训练周结(dfs)

1、P1018 [NOIP2000 提高组] 乘积最大题意:给n个数,k个乘号,问怎样分配乘号才能使所得的乘式最大。虽然这道题出自dp专题里,但是不管在哪都得礼让大法师三分。之前有一道0/1背包的模板题,我用大法师解决了,这又有一道比较难的dp题,大法师依旧能胜任!!!!!!dfs(已用的乘号数,当前最大乘积,上一个乘号的位置)如果不考虑高精度,这样大法师直接就能AC代码如下:#include <bits/stdc++.h>#define ll long long//dfs 大法师

2021-11-21 20:56:50 209 1

原创 2021-11-14训练周结

1、十进制数转换为负进制数首先,十进制数转换为其他正进制数都是先取余,再取除。如果是负进制,我们取模可能得到负数,例如7转换为-2进制为:1 -1 1,这样写是不符合规定的,负进制数也只能用正整数表示。为了得到正数,有如下公式:商✖除数+余数=被除数《==》(商+1)✖除数+(余数-除数)=被除数!这样余数“就变成了”(余数-除数)就是正数了;此时商也就变成了(被除数+除数-余数)/除数;也就是(被除数+除数)/余数!!!!!!!!!!!!说了这么多,其实就两点:还是先取余,再取除;如果余数为负,

2021-11-14 21:58:24 371

原创 2021-11-6训练周结

周结CF题解新知识总结洛谷刷题总结CF题解Codeforces Round #753 (Div. 3)——ABCD新知识总结洛谷刷题总结

2021-11-07 20:35:43 96

原创 Codeforces Round #753 (Div. 3)——ABCD

A、Linear Keyboard题意:给定一串字母,求出每个字母在26个英文字母中的位置,求后一个减前一个的绝对值,求他们的和。#include <bits/stdc++.h>using namespace std;#define ll long longinline int read(){ int x=0,f=1;char ch=getchar(); while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();} while (i

2021-11-03 01:27:43 198 1

原创 2021-10-31 训练周结

1、接水问题洛谷p1190虽然在贪心的模块里,但是这道题给出了接水顺序,所以直接来模拟。#include <bits/stdc++.h>using namespace std;int main(){ int n,m; cin>>n>>m; for(int a=0;a<n;a++) { cin>>pre[a]; } int ans=0; int t=m; while

2021-10-31 10:38:17 87

原创 Educational Codeforces Round 116 (Rated for Div. 2)C. Banknotes

题意:In Berland, n different types of banknotes are used. Banknotes of the i-th type have denomination 10ai burles (burles are the currency used in Berland); the denomination of banknotes of the first type is exactly 1.Let’s denote f(s) as the minimum numbe

2021-10-30 01:38:06 345

原创 Codeforces Round #750 (Div. 2) ——C - Grandma Capa Knits a Scarf

#include <bits/stdc++.h>using namespace std;char x[100001];int l,r,ans,ant,n;int main(){ int t; cin>>t; while(t--) { cin>>n>>x+1; ans=0x3f3f3f; for(char ch='a';ch<='z';ch++)

2021-10-24 22:12:39 231

原创 二叉树——Treap树(平衡树)

什么是树形结构树形结构是一层次的嵌套结构。一个树形结构的外层和内层有相似的结构,所以这种结构可以递归的表示。经典数据结构中的各种树状图是一种典型的树形结构:一棵树可以简单地表示为根、左子树、右子树。左子树、右子树又有自己的子树。什么是二叉搜索树(Binary Search Tree)每个元素有自己的键值,这些键值能比较大小。通常把键值放在BST的节点上。任意一个节点的键值,比它左子树的所有键值都大,比它右子树的所有键值都小——中序遍历就可以得到它的有序排列。树形结构的作用——这里主要讲二叉搜索树数

2021-10-24 16:19:01 1032 1

原创 Codeforces Round #748 (Div. 3)

A、Elections题意:三个候选人a,b,c,给出初始选票,问a,b,c分别胜出最少还需多少选票。#include <bits/stdc++.h>using namespace std;int main(){ int T; cin>>T; while(T--){ int a,b,c; cin>>a>>b>>c; cout<<max(0,max(b,c)+1-a)<<" "<<max(0,m

2021-10-14 11:45:34 159 1

原创 2021-10-10训练总结

1、旅行家的预算(贪心+模拟)我最开始的思路是按照价格去排序,但是这样就会把线性的结构分成好几段,处理起来很麻烦。正确的做法是按照距离排序,用当前加油站的价格与此加油站之后在最大距离之内油价最小的加油站去比较。分别判断两次,算出所花的钱数,然后把当前加油站作为起点,继续进行此过程。#include <bits/stdc++.h>using namespace std;struct s{ double d,p;}x[100];bool cmp(s x,s y){

2021-10-10 19:11:32 394

原创 Codeforces Round #744 (Div. 3)

A.Casimir’s String Solitaire题意:给定一个只包含’A’,‘B’,'C’的字符串,判断’A’的数量加’C’的数量是否等于’B’的数量。用count()直接数就可以。#include <bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; while(n--) { string s; cin>>s;

2021-09-29 18:52:22 103

原创 八数码(广搜+剪枝)

所谓八数码,就是类似上图的这种游戏。规则是给定你起始状态和终止状态,问最少要几步能从起始状态变换到终止状态。对于这道题,算法思想不难想,就是广搜,把一个棋局看成一个状态,每次移动产生新的状态,一个个遍历直至找到目标状态。如果直接这样做会出现Memory limited exceeded这样就遇到了第一个问题——剪枝,对于空格(也就是我们可移动的地方)可以有四个方向移动(上下左右),但是当我们把空格移到某个地方之后,那么在这个新的地方又有一种选择是再移回原来的地方,这样就会多出许多不必要的步骤。所以我们需.

2021-09-26 23:21:04 761

原创 暑假学习总结

上次暑假,虽然对ACM的学习完全比不上那些有训练任务的同学,但还是有在保持着学习。暑假主要学习了并查集,做了一些有关并查集的题目,将一一本通上的案例以及题目都做了一遍,但还不是很明白什么时候需要用到并查集,仅仅是了解。并查集算是学习的新算法,此外,将深搜与广搜复习了一遍,对于简单的搜索题现在可以做出来,对于一些较难的题则需要看题解。像走迷宫,八数码,八皇后等一些问题似懂非懂,虽然明白其中的道理,但是如果让我自己打出来还是有点困难的,这也说明了自己对知识的掌握度不够。另外,还打了几场cf比赛,大多是div

2021-09-19 19:36:14 73

原创 数据结构——并查集

顾名思义,首先并查集属于数据结构中的一种,属于一种集合;其次,通过合并与查找结合的方式实现对数据的处理。可以将复杂的数据简单化。个人看来,并查集与搜索有相关之处,都需要先遍历数据,找出其中的“朋友关系”,将其合并、查找。举例如:描述Today is Ignatius’ birthday. He invites a lot of friends. Now it’s dinner time. Ignatius wants to know how many tables he needs at least.

2021-08-06 16:17:29 99

原创 第十二周周结(搜索与回溯)

这周主要学习的是搜索与回溯,二分是上周的内容,但由于上周在做背包的题目,所以就没有总结二分,相较于二分,我感觉搜索与回溯更加复杂一点,所以这周就先总结搜索与回溯。搜索与回溯深度优先搜索:深度优先搜索相当于是一条直线从问题的最初找到最后,必须把问题的答案找出来;广度优先搜索:深度对立,它是从横向来找答案,把每种情况的子情况都考虑一遍。首先介绍深度优先搜索。深度优先搜索与递归分不开,我们也可以把这种算法叫做递归回溯法。这种算法的基本思想是:为求得问题的解,先选择某一种可能的情况进行探索,在探索过程中,

2021-05-23 13:36:21 117

原创 完全背包及其延申

1、最经典的完全背包有n种食物。每种食物含有的热量和带来的幸福感分别为a[i]和b[i]。一个人每天摄入的热量不超过m。求在不超过一天热量摄入量前提下,可获得的最多幸福感是多少。这是一道最简单的完全背包题,没什么好说的,我们直接套公式就可以了。#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int dp[100006];int main(){

2021-05-16 11:40:58 87

原创 第十一周周结(背包专题)

0/1背包所谓0/1,就是取或者不取。题目一般是给定n个物品,分别有价值和重量,再给定一个背包的容量,求在不超过背包容量的情况下能装的最大价值。比较简单,直接给代码模板for(int a=1;a<=n;a++)//代表前n个物品 for(int v=1;v<=m;v++)//m代表背包容量 if(v<x[a])//x[a]代表第a个物品的重量 dp[a][v]=dp[a-1][v]; else d[a][v]=max(dp[a-1][

2021-05-16 11:05:46 125

原创 0/1背包及其延申延伸

0/1背包Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave …The bone collector had a big bag with a volume of V ,and along his tr

2021-05-13 11:08:06 234

原创 十一届省赛总结

参加了这次省赛赛,可以说是赛前雄心壮志,赛后愁眉苦脸。对我来说真的是太难了!!!这次省赛我们对只做出了一道题,排名更是非常的靠后。比赛结束后发现以自己现在的实力根本不可能拿奖!不是说题目太难(当然,对我来说非常难),而是大部分题目自己别说会了,连用什么方法做都不知道。一点的思路都没有。直到现在,我们只学了贪心与dp,而且dp题一般还做不出来,除了一般的思维题,我真不知道拿啥去解那些算法题了。下面说一下自己这次比赛的感悟:1、自己的知识储备量还有很大很大的提升空间,感觉自己像是刚刚接触ACM,刚刚接触算

2021-05-10 16:01:51 277 4

原创 map与multimap的应用

一个学生成绩录入和查询系统,接受一下两种输入:Add name id scoreQuery scorename是不超过16字符的字符串,中间没有空格,代表学生姓名。di是整数,代表学号。score是整数,代表分数。学好不会重复,分数和姓名可能重复。两种输入交替出现。第一种代表要添加学生信息。第二种代表要查询信息,碰到这种输入,就要记录出分数中比score低的最高分获得者的信息,如果有多个学生满足条件,就输出那个学号最大的那个学生的信息。若果没有找到满足条件的学生,则输出“nobody”。输出样例:

2021-05-06 14:01:33 82

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除