文章目录
9.12 Div 2
Dashboard - Codeforces Round 968 (Div. 2) - Codeforces
A. Turtle and Good Strings(首尾不同)
能否将一个字符串,拆成若干个字符串 t i t_i ti。 1 ≤ i < j ≤ k 1\le i<j \le k 1≤i<j≤k , t i t_i ti的第一个字符,不等于 t j t_j tj的最后一个字符。
思路
怎么拆自己决定,可以尽可能的避免相同。但至少要拆成两个,也就是s[0]和s[s.size()-1]是一定会进行比较,他们肯定不能相同。
代码
void solve()
{
int n;
cin>>n;
string s;
cin>>s;
if(s[0]!=s[s.size()-1])
cout<<"yes\n";
else
cout<<"no\n";
}
B. Turtle and Piggy Are Playing a Game 2(min,max变换)
小乌龟:将 a i a_i ai设置为 m a x ( a i , a i + 1 ) max(a_i,a_{i+1}) max(ai,ai+1)
小猪:将 a i a_i ai设置为 m i n ( a i , a i + 1 ) min(a_i,a_{i+1}) min(ai,ai+1)
同时移除 a i + 1 a_{i+1} ai+1
思路
为了使最后留下的数满足希望。
对于小乌龟,每次需要消除min
对于小猪,每次需要消除max
我们要求的是最后留下的数字,不需要考虑消除完, a [ i ] a[i] a[i]将变成多少。因为操作实质就是消除某个数字
反正小乌龟和小猪都按照自己的最优策略走,目的是消除。
先排序,一个从前消一个从后消,最终留下的就是n/2+1
奇数,操作偶数次,留下中间n/2+1
偶数,操作奇数次,留下 n/2+1
代码
void solve()
{
int n;
cin>>n;
fir(i,1,n)
cin>>a[i];
sort(a,a+n+1);
int i=1,j=n;
cout<<a[n/2+1]<<'\n';
}
C. Turtle and Good Pairs(好对子)
当且仅当存在一个整数 k,令我不解。而我再去深思这个题也没必要了
9.13 Div 2
Dashboard - Codeforces Round 955 (Div. 2, with prizes from NEAR!) - Codeforces
A. Soccer(是否平局)
给出初始比分a,b。最终比分c,d。
有没有可能从未出现过平局
思路
没审清题,以为问的是,能否出现平局
比较a,b分两种考虑
a>b
为什么会出现平局?
后者反超
那我们将大的加分到最大,增大后者反超难度,再比较c,d看能否反超
代码
void solve()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
if(a>b)
{
if(c>d) cout<<"yes\n";
else cout<<"no\n";
}
else
{
if(c<d)cout<<"yes\n";
else cout<<"no\n";
}
}
实质
- cin >> a >> b >> c >> d;
- cout << ((a < b) == (c < d) ? “YES” : “NO”) << ‘\n’;
某队比分的大小是否具有一致性
B. Collatz Conjecture(k次操作求终值)
- 将 x 增加 1 ,然后
- 当数字 x能被 y整除时,再除以 y 。
思路
- 当x<y时
1→2→…→(y−1)→1→2→…→(y−1)→1→…
在 [ 1 , y − 1 ] [1,y-1] [1,y−1] 中循环,因此
将x归为1,k变为k+x-1
循环周期为y-1
所以x=k%(y-1)+1
- x ≤ \le ≤ y时
在k允许范围内,直接进行y-x%y次加一操作
h=min(k,y-x%y);
通过上述两个优化,求解
代码
void solve()
{ int x,y,k;
cin>>x>>y>>k;
while(x>=y&&k>0)
{ int h=min(k,y-x%y);
x+=h;
k-=h;
while(x%y==0)
x/=y;
}
if(x<y)
{ k+=x-1;
x=k%(y-1)+1;
}
cout<<x<<'\n';
}
实质
找个数字模拟可得,此题不存在规律,而数据范围较大,应该考虑优化。
- x<y,循环
- x ≤ \le ≤ y,跳跃操作
时间复杂度:
分析可得,影响循环的主要的是x/=y
所以时间复杂度大致为** l o g y x log_yx logyx**
9.13 总结
打这一段codeforces,感觉非常垃圾。
- 没看透问题实质
- 思维受限
- 知识匮乏
- 临场发挥能力不好
- 纠结细枝末节
这两天Div 2,都只补了2题。昨天又有一种不知道怎么打比赛,怎么做题,无从下手。黑暗中才会生出光明的希望。也不急。
如昨天一般,纠结的意义何在呢,心理安慰?不过是身心俱疲罢了
学而不思则罔,思而不学则殆