学数位DP还是要从搜索开始学才容易懂,一开始就丢DP的转移方程式90%的人都学不会。
B站上有一个视频讲得很好:https://www.bilibili.com/video/BV1gA411h7XC
他已经给出了模板,一个搜索的模板,代码精炼,只要把条件判断修改一下就可以套进去,非常好用,比DP好多了。
最后,所有讲解都在上面的视频里,请自行观看。
学数位DP还是要从搜索开始学才容易懂,一开始就丢DP的转移方程式90%的人都学不会。
B站上有一个视频讲得很好:https://www.bilibili.com/video/BV1gA411h7XC
他已经给出了模板,一个搜索的模板,代码精炼,只要把条件判断修改一下就可以套进去,非常好用,比DP好多了。
最后,所有讲解都在上面的视频里,请自行观看。
A - Vanishing Pitch:刚开始题目都没看懂......群中老师解释后才lijie了,第一题还真hand就行。
B - Remove It:尽管谷歌翻译不给力但是这题简直就是白送。输入如果与m相等就赋值为0,if(a[i]!=0)就输出。Attention:数据范围是10^9。
C - Digital Graffiti:这题题目都没看懂......谷歌吧输入的s全翻译成“小号”讲评时学长解释后才明白,不过学长那方法还真妙
D - Circle Lattice Points:ceil(x)是把x向上取整,floor(x)是把x向下取整
E - Come Back Quickly:用dijkstra。
F - GCD or MIN:
A
有手就行
用乘法比较靠谱
B
不会的话,自断手脚吧
C
输出肾都看不懂
不过经过了今早的讲题
还是懂了一丢丢
熟悉的中文经过百度翻译我居然看不懂
A 青木君和他的好基友玩棒球
https://atcoder.jp/contests/abc191/tasks/abc191_a
有手就行
1
2
3
4
5
6
7
8
9
10
11
12
13 #include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int v,t,s,d;
cin>>v>>t>>s>>d;
if(d<v*t||d>v*s)
printf("Yes");
else
printf("No");
return 0;
}
B 不玩球了玩删数
有手就行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include<bits/stdc++.h>
using namespace std;
const int MAXN=100000005;
int main()
{
int n,x,a[MAXN],upset=0;
cin>>n>>x;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
if(a[i]!=x)
{
a[upset]=a[i];
cout<<a[upset]<<" ";
upset++;
}
}
}
C 玩方块
AtCoder家的虾可以一半好吃一半放生吗
WA
D 玩圈
???
E 玩最短路
先试了试Floyd直接超时,然后Dijkstra依旧超时
听了讲解说要堆优化
?
F 共cd和比较小的那个
我寻思这看上去挺简单的,结果发现我太年轻了
100+200=300
???
这次yy不知道又从哪里搜到一个奇奇怪怪的网站,日本的,叫啥AtCoder,在这网站打题,首先,英语过了十级再说,或者日语十级也行,实在不行的话也要找个靠谱的翻译,不然会翻译出一些奇奇怪怪的东西,其次呢,要选对语言,(苦逼的我编译错误了N次才发现选成C++了),然后要学习前十名的大佬那打字速度,可能你刚把题目看完,别人就全A了
任务A
没什么好讲的
题目看得懂就能打出来(有手就行)
任务B
这也就是一个删除数组元素一题,也没什么好讲的,不过要注意它的范围1e9 数组的话会超时,所以直接读一个判断一下,然后输出
任务C
这题就有点小难了,思路不好想,代码实现很简单,我是7号早上学长讲完后才A的(妙,妙,妙啊!) 具体的看直播回放吧
任务D没懂
任务E
dijkstra打,但是我不会,堆优化都不会(出大问题)
任务F
没听,当时去改C了,所以亿脸懵
https://blog.csdn.net/zmxSuperIT/article/details/103948498
使用map函数将上面代码整理为一行
读入a,b以空格隔开
1
2 a,b = map(int,input().split())#这样就很简明了
print(a,b)
1
2
3
4
5
6 a,b,c=input().split() #输入三个整数
b=int(b) #进行强制类型转换
c=int(c)
a=int(a)
ans=b*b-4*a*c #计算方程结果
print(ans) #输出
python 打印/输出元素,用 逗号/空格 分隔
如果有个列表list1=[a,b,c]
用print打印后:
a
b
c
如果不想换行:
print(list,end="")
如果想用逗号分隔:
print(list,end=",")
但输出:a,b,c,
多了一个逗号
这时可以用:print(",".join(str(i)for i in list1))
在每个元素之间加入一个逗号,可以换成空格
1
2
3
4
5 a=int(input())
b=int(input())
for i in range(a,b+1):
print(i,end=" ")
一维数组:
arr = input("") #输入一个一维数组,每个数之间使空格隔开
num = [int(n) for n in arr.split()] # //将输入每个数以空格键隔开做成数组
print(num) #打印数组
二维数组:
(以n*n的二维数组为例)
n = int(input()) #输入二维数组的行数和列数
line = [[0]*n]*n #初始化二维数组
for i in range(n):
line[i] = input().split(" ") #输入二维数组,同行数字用空格分隔,不同行则用回车换行
print(line) #打印二维数组
https://www.php.cn/python-tutorials-427886.html
T1:一看题目好像右手就行打着打着......时间过了1小时,结果才得60,大意了啊,比赛后该一下直接A
T2:诶题目理解错了
T3:诶输入都有问题
T4:没来及得打完就时间到了,主要还是文件读写还错了,还是大意了啊
T1
简单有手就行
A了A了.
T2
QAQ,要用桶排序
用了快排,
超时....
50分
T3
什么玩意...
T4
似曾相识,却打不出..
骗了5分
总分160,省二(可以省一的,排序题要小心)
emmmm
省赛前一天的代码没背下来
如果背下来了,那么我就180了
第三题题目是真的没看懂
第二题的话
想法还是要改进一下
不能一直用快排,要换一种想法
桶排的话是可以做出来的
哎呀
还是要努力一点
下次希望能拿个省一
奥利给
第一题:用二进制转换,然后记录,直接输出。
第二题:其实懂得有手就行,但是看到题目几乎都是第一时间想到快排,不然可AC的。
第三题:不懂就是不懂,骗到了5分。
第四题:不懂就是不懂,通过爆搜和骗分,骗到了25分。