题解
Problem - A - Codeforces
1.这道题很简单,找出将当前数字放入字符串的最大值。
2.分情况讨论,有俩种情况,一种是大于等于数字d,那么这个数字d需要插入到最后字符串的位置。否则这个数字需要插入到第一次比它小的位置。
代码如下:
#include
#include
#define N 200100
char str[N];
char a[N],b[N];
int main()
{
int t,n,d,i,j,min,flag;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&d);
scanf("%s",str);
min=99;
flag=0;
j=0;
for(i=0;istr[i])
{
min=str[i];
}
if(flag==0&&str[i]=d+'0')
{
printf("%s%c\n",str,d+'0');
}
else
{
strcpy(a,str);
a[j]=0;
strcpy(b,str+j);
printf("%s%c%s\n",a,d+'0',b);
}
}
return 0;
}
P1656 炸铁路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
1.这道题目时tarjan算法加桥的知识点。
可以看看我之前关于tarjan算法的一孔之见——2023/1/8总结_lxh0113的博客-CSDN博客
和桥——2023/1/12总结_lxh0113的博客-CSDN博客
tarjan算法是强连通算法,桥又叫割边,就是说去掉这条边,这条边对应的俩个顶点是否还有其他路径相连,如果没有,那么说这是桥。
2.在tarjan算法的基础上,有一个爷爷节点,父节点,儿子节点。桥的特点是,如果父节点的dfn值小于儿子节点的low值,说明儿子节点在这个图当中只能通过父节点。那么这个就是桥
3.会出现俩种情况,儿子节点访问过了,此时访问过了我们需要去刷新当前节点的low值,也就是出现的最早时间,如果儿子节点已经访问过了很有可能出现了强连通,它们在一个环里面。另外一个情况就是儿子节点没有被访问,此时,我们需要在这个儿子节点继续往下搜索(因为不确定儿子节点是否能回到父亲节点以上或者父亲节点)
4.然后就是排序啦,用的是c++的sort函数。
#include
#include
#define Maxn 5100
#define N 160
using namespace std;
int mymap[N][N];
int dfn[N],low[N],time=1,n,m;
int len=0;
struct node
{
int u,v;
}res[Maxn];
int minz(int a,int b)
{
if(a>b) return b;
return a;
}
bool cmp(node a,node b)
{
if(a.u==b.u) return a.vdfn[x])
{
res[len].u=x;
res[len].v=y;
len++;
}
}
}
}
return 0;
}
int main()
{
int i,j,u,v;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&u,&v);
mymap[u][v]=1;
mymap[v][u]=1;
}
for(i=1;i<=n;i++)
{
if(dfn[i]==0)
{
dfs(0,i);
}
}
sort(res,res+len,cmp);
for(i=0;i
MySQL注释
单行注释:--或#
多行注释 /**/
creat database 名称;
在navicat中创建:
下面是创建一个数据库里面的表,表里面包含了这些元素。
最后一行的primary key的意思是把id作为主键。
表示在student这个表里面添加score字段。
上面这些操作是可以在新建表当中搞:(如果想要修改,就点击你想要修改的表,右击选择设计表)
查询一列数据(指定的列)。
如果要查询多个指定的列,那么在from前面用逗号隔开即可。
使用别名查询:(把字段变成别名,以便于查看)
concat语句,合并列字段
查询时可以进行加减乘除运算
查询去重操作,用distinct语句即可。
条件查询,在后面加where语句,可以结合运算符使用。
比如:
如果想按照自己想要的字段顺序:
可以只插入自己想要的字段,但是必须插入主键的值,并且主键不能重复插入。主键值是整数并且是增长的,如果没有填写,就是默认自动增长。
如果要插入多组数据,那么需要在values后面加逗号批量插入。
下面这段代码表示,创建一个student1表格,主键是id,并且是默认自然增长的,name的初始值是666. 插入的时候如果不插入主键值,那么就会自然增长,不插入其他值,其他值就是我们所设的初始值。在navicat里面,字符串可以用单引号。这个自动增长永远是按照上一次的值来增长的,即使之前装满了数据,然后又清空了,自动增长还是会从上一次的开始,除非
修改所有行的字段数据 ,修改多个则添加逗号。
下面代表用where语句修改特定的数据,修改的是where语句后面id=2,修改的是id=2的数据的gender和name值
删除某行的数据,会删除where语句后面匹配的值。
删除整个表格,直接写delete from student;即可。
%代表像文件的通配符”*“,可以匹配多个字符,下面代表了,删除name以elios结尾的数据。