昨天日期竟然写错了
洗心革面啊
mmp,今天这是怎么了,早上比赛莫名其妙连接不上不说,今天晚上写博客又死活打不开md编辑器
果然还是万年AB,好在越来越好了,虽然离理想的一天的安排还有很大差距
真.英语阅读课
A
简单读了下题目,树的值是相同颜色两点的距离的和
颜色给定的范围,求所有可能的值
感觉可能要bfs?
感觉暴力也许能做,比较麻烦,pass
竟然真用了bfs,不过看不大懂,唉
以后补题不随便pass了
太浮躁了
B
3种操作:移动一步,带兵移动一步,解除陷阱
带最多的兵到终点
求能带的最多士兵
条件比较多,应该不是前三题,pass
01背包问题变形?可能要dp
看来对于二分的理解还是太弱,大数据范围的题目(穷举解决不了)还要注意可能是二分法;注意构造
while(l<r){
int mid=(l+r)>>1;
c=n+1,mx=0;
for(int i=0;i<k;i++){
if(b[i].d<=mid||b[i].r<=mx) continue;
mx=max(mx,b[i].l-1);
c+=(b[i].r-mx)*2;
mx=b[i].r;
}
if(c>t) l=mid+1;
else r=mid;
}————————————————
版权声明:本文为优快云博主「一米の阳光」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_43627100/article/details/103300822
水题,贪心,不解释
D
贪心,水题,找出小的,然后找便宜的,总共lg2n场比赛
好吧,以为是水题,结果还要考虑其他对手能出线才行,重新考虑
应该是递归?
附上错误解
策略选择有问题,贪心策略太复杂,应该没法选,考虑bfs
int a[263000];
int p1 = 0, p2 = 0, cs;
long long ans = 0;
void zhaoruoji() {
sort(a, a + p1);
if (p2 > 0) {
ans += 0;
p2--;
p2 /= 2;
if (p1 % 2 == 1) {
for (int i = 0; i < p1 / 2; i++)
a[i] = a[2 * i + 1];
p1 = p1 / 2;
} else {
for (int i = 0; i < (p1 + 1) / 2; i++)
a[i] = a[2 * i];
p1 = (p1 + 1) / 2;
}
sort(a, a + p1);
} else {
ans += a[0];
cout << a[0] << "\t";
for (int i = 0; i < (p1 + 1) / 2; i++)
a[i] = a[2 * i + 2];
p1 = (p1 + 1) / 2;
sort(a, a + p1);
}
}
int main() {
\#ifdef LOCAL
freopen("zz_in.txt", "r", stdin);
freopen("zz_op.txt", "w", stdout);
\#endif
int t, i, j, k;
int n, shu = 0;
cin >> n;
cs = log(n) / log(2);
int p = 0, temp, ok = 0;
for (i = 0; i < n; i++) {
scanf("%d", &temp);
if (temp == -1) {
ok = 1;
continue;
}
if (ok == 0) {
p2++;
continue;
}
a[p1] = temp;
p1++;
}
while (cs--) {
zhaoruoji();
}
cout << ans << endl;
还是太菜,就是贪心+暴力
E
C题,竟然连看都没看,唉
第x块如果是x是r的倍数,则涂一种颜色,是b的倍数,则涂另一种颜色。如果既是r又是b的倍数,那么两种颜色都可以涂
利用gcd,模拟即可
F
水题,找规律,比较好找,反正就是-2,-1