1012刷题
P5661 公交换乘
这道题不难,用队列模拟就行了
直接开数组会爆MLE 用vector 就行了
P1678 烦恼的高考志愿
一道二分答案的题,最开始我没仔细看题,以为不能选相同的学校看了题解才做出来,我太弱了。
具体思路,我们先对a数组排序。
接着,对于每一个同学,我们二分 a 数组找到b_i的前驱,并在最后算出b_i更接近那边
P.S. 注意特判b_i<a_1的情况
P1918 保龄球
这道题是一道二分题,我用map做的,具体代码
下面说一下二分思路,先对a数组排序,二分找一下就好了
P.S. 注意存一下编号
P2920 [USACO08NOV] Time Management S
本来很水的题,就因为二分循环的终止条件写错了——本来是l \le r写成了l< r
真服了 。
P1577 切绳子
总体来说比较水(调代码的时候就调了一下输出保留两位小数,然后就水过了)。
实数范围的二分就把len_i乘eps(100)就行了其他的就没啥了。
P7243 最大公约数
看了题解,还是不太理解,需要复刷。
P1123 取数游戏
有点难的深搜
P6207 [USACO06OCT] Cows on Skates G
有亿点点难度(主要是我太蒻了)
这道题难在优化,因为只用找一条路径,所以不需要回溯,这个优化可以把时间复杂度降到O(rc) 比原来的时间复杂度少了很多,如果这道题样例强一点,我可能就爆零了(事实没有,还得了 90 分)
P1970 花匠
这道题我想到了思路,但只能拿70\%的分,没想清楚转移。
P1970 丝绸之路
这是第一道独立完成的题,虽然只得了57 分。
做法
用f_{i,j}表示前i个城市花j天到的最少疲劳值
接下来转移方程就好想了,即为f[i][j]=min(f[i][j-1],f[i-1][j-1]+d[i]*c[j])
注意初始化为 memset(f,0x3f,sizeof(f));for(int i=0;i<=m;i++) f[0][i]=0;
P1103 书本整理
又看了题解,我太蒻了。
定义状态 f_{i,j} 表示以 i 开头,长度为 j 的最小花费
核心代码:
for(int i=1;i<=n;i++){
for(int j=1;j<i;j++){
for(int l=1;l<=min(i,m);l++){
f[i][l]=min(f[i][l],f[j][l-1]+abs(a[i].w-a[j].w));
}
}
}
P3399 算式
好吧,这是没完成的题

浙公网安备 33010602011771号