当年用python写的代码
193.18pts TLE 3/22 WA 2/22
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=70565258
1 | from collections import deque |
当年用python写的代码
193.18pts TLE 3/22 WA 2/22
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=70565258
1 | from collections import deque |
60pts TLE 可能是check函数复杂度太高了
1 | #include <iostream> |
可以二分里套二分,当然那个二分我们就不写了,直接上stl
不过我仔细分析了一下时间复杂度,以及这个样例(另一道题目https://www.luogu.com.cn/problem/P2884)
1 | 7 5 |
1 | 500 |
会使上面这个程序死循环,让我确信不是check()的问题
仔细分析过后,发现还是check()的问题,check死循环了。
1 | while (s<=n) { |
解决起来倒也简单
ll l=maxa,r=maxans;
让左端点比数组中最大的元素大,就可以了,这样可以保证cnt的前进。
1 | // https://www.luogu.com.cn/problem/P2884 |
1 | // https://www.acwing.com/problem/content/791/ |
给定 n 条线段,每条线段有两个端点坐标。移动时分为两种速度:移动到某条线段的起点/终点使用速度 s,沿着线段绘制使用速度 t。需要选择绘制线段的顺序及每条线段从哪一端开始,求完成全部绘制的最短总时间。
Pass 10/74 WA https://atcoder.jp/contests/abc374/submissions/58484468 赛时代码
1 | #include <iostream> |
只改了一个地方就AC了
dfs(i,4-j,cnt+1); // 进入点和终止点不是一个,这条线段的终止点就是下一条线段的起始点
1 | #include <iostream> |
给定一个数组,通过若干次“除以 2 取整”的操作把元素压到一定范围内,要求最终能覆盖 0 到 x-1 的所有数(每个数至少出现一次),求最大的可行 x。通常用二分答案 + 贪心检查。
AC 代码 二分答案 相比于那个过了93.33%的还是修改了很多。
总体的check函数的贪心思路是 ≥x 的没用,之前就到过的(vis中有的)也没用。
没用,那怎么让他有用那?那当然是>>1才有用,不断的>>1,直到有用(注意条件,不要死循环了)。
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=71786526
1 | #include <iostream> |
TLE pass 2/30
1 | #include <iostream> |
int l=0,r=n+1; // 如果n个数连续,那么就是n
for(int i=1;i<=n+1;i++)
vis[i]=ovis[i];
把上界换成n+1过了53.33% https://ac.nowcoder.com/acm/contest/view-submission?submissionId=71785676
但出现了WA
1 | #include <iostream> |
WA pass93.33% https://ac.nowcoder.com/acm/contest/view-submission?submissionId=71785979
应该是快了
增加了
1 | for(int i=2;i<=n;i++) { |
1 | #include <iostream> |