这么快就 8 月了呢…
8/1
CF875F
又一道想出结论之后就非常简单的题。
考虑把王子当成点,公主当成边,然后就求个最大生成基环树就好了。
求法魔改一下 Kruskal
就完事了。
8/2
打了人生第一场 atcoder 。
ABC 174
T1
sb 题。
1 2 3 4
| int x; scanf("%d",&x); if(x>=30)puts("Yes"); else puts("No");
|
T2
sb 题。
1 2 3 4 5 6 7 8
| scanf("%d%d",&n,&d); rep(i,1,n) { int x,y; scanf("%d%d",&x,&y); double k=sqrt(1.0*x*x+1.0*y*y); if(k<=d)++ans; } printf("%d\n",ans);
|
T3
考虑模数周期性,然后这就是道 sb 题了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| scanf("%d",&k); if(k%2==0) puts("-1"); else { mo=7%k; used[mo]=1;bool flg=0; while(mo!=0) { ++ans; mo*=10;mo+=7; mo%=k; if(used[mo]) {flg=1;printf("-1\n");break;} used[mo]=1; } if(!flg)printf("%d\n",ans+1); }
|
T4
考虑贪心。把所有的 R 移到它该移的位置(前面)即可。根本用不上改变颜色的操作。
1 2 3 4 5 6 7 8 9
| scanf("%d%s",&n,s+1); rep(i,1,n) { if(s[i]=='R') ++r; } k=r; rep(i,1,r) { if(s[i]=='R') --k; } printf("%d\n",k);
|
T5
二分。二分完了 check
随便写写。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| bool check(int x) { int now=0; rep(i,1,n) { int kk=a[i]/x; if(a[i]%x==0) kk--; now+=kk; if(now>k) return false; } return true; } signed main(){ scanf("%lld%lld",&n,&k); rep(i,1,n) scanf("%lld",&a[i]),mx=max(mx,a[i]); int l=1,r=mx; while(l<r) { int mid=(l+r)>>1; if(check(mid)) r=mid; else l=mid+1; } printf("%lld\n",r); return 0; }
|
T6
HH 的项链。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| scanf("%d%d",&n,&m); rep(i,1,n) scanf("%d",&a[i]); rep(i,1,m) asks[i].id=i,scanf("%d%d",&asks[i].l,&asks[i].r); sort(asks+1,asks+m+1,cmp); int now=1; rep(i,1,m) { rep(j,now,asks[i].r) { if(used[a[j]]) modify(used[a[j]],-1); modify(j,1); used[a[j]]=j; } ans[asks[i].id]=query(asks[i].r)-query(asks[i].l-1); now=asks[i].r+1; } rep(i,1,m) printf("%d\n",ans[i]);
|
切题顺序:A-B-D-E-F-C
就这样愉快地 AK 了。
8/3
CF165D
树剖裸题,只是因为有点忘记树剖怎么写了来练练手而已。
8/5
晚上 CF 爆炸了。。。
8/6
愉快的叉了几个同学昨天 CF 的 C 题。
P3950
裸树剖题,很久以前写了但一直没调出来,今天调出来了。
原来是在跳重链的时候出了点锅。
8/7
P2787
开 26 棵线段树即可,但是不知道哪里写炸了全 WA。。。
另外,这题本来我想用珂朵莉树水的,结果发现它卡珂朵莉树。。。
8/8
P2837
不要说我做水题,是老师布置的
简单的线性 dp,设 fi,0 表示前 i 头奶牛,第 i 头奶牛是 1 时需要改的最小数量, fi,1 则反之。
8/9
P2642
预处理一下前缀的最大子段和、后缀的最大子段和,然后枚举断点统计一下答案即可。
P1982
人生苦短,我用 python
按照题意求一下前缀最大子段和,然后模拟一下。
但是会爆 long long
,于是我们用 python 高精就能解决这道题目。
P1043
简单区间 dp。
断环成链,设 fi,j,k 表示从第 i 位到第 j 位,分 k 段得到的最大值。
然后设 gi,j,k 表示从第 i 位到第 j 位,分 k 段得到的最小值。
随便转移转移就好了。
Codeforces Round 663 (Div. 2)
今天打了场 CF。
CF1391A
发现 1∼n 即是合法的序列,直接输出即可。
CF1391B
找到右侧的 R
与下侧的 D
,统计一下。
CF1391C
OEIS nb!
手玩一下,然后在 OEIS 上查 0,0,2,6
即可(
然后发现答案是 n!−2n−1。
8/10
P5662
哈哈哈我发现我居然还没把去年 PJ AK掉。
大水题,对于每天都与后一天做差跑个完全背包就好了。
P2871
背包裸题。
P1164
背包裸题。
P2639
背包裸题。话说老师为啥留这么多裸题
P1802
还是背包裸题。。。
P1877
bool
数组的背包 dp。
P1510
还是背包裸题。。
P1504
用背包看看哪些高度所有的城堡都能达到,然后取个最高的。