洛谷
Improving!
这个作者很懒,什么都没留下…
展开
-
P7893 『JROI-3』黑白棋 (洛谷月赛div2)
题目描述白在和森精种玩黑白棋,但黑白棋的规则有所改变。有 nn 个黑白棋子,第 ii 个棋子编号为 ii。棋子初始全为黑,游戏中,仅由白一人操作,白希望尽可能多的把棋子变成白色。白要求第 kk 个棋子和第 k ×p 个不能同时变成白色。白共玩了 TT 次,每次白想知道最多能把多少棋子变成白色。每次游戏独立。为避免混淆,加粗的白是人名。输入格式第一行一个正整数 TT,表示数据组数。下面 TT 行每行两个整数 n,pn,p,同题意。输出格式共 TT 行,每行一个正整数,表示白最多能把多少枚棋原创 2021-10-12 21:17:36 · 874 阅读 · 0 评论 -
P2440 木材加工 题解
这是一道二分答案的题目,根据题目已知,我们需要找到最大的木条长度‘,使所有木头按照这个长度等分可以达到要求的木段数量,当mid所对应的木头段数少于要求的,将left=mid-1,否则就将right=mid+1;这道题如果稍不注意就会RE,注意题目说:如果连 1cm 长的小段都切不出来,输出 0。所以可以在输入时就开始求木段长度和,如果木段长度和除以要求的木段数已经大于0了,那么flag就为1,如果flag=0那么就直接输出0,跳出循环。#include <stdio.h>int main原创 2021-09-21 22:05:29 · 285 阅读 · 0 评论 -
P1678 烦恼的高考志愿
这道题采用了二分的方法,这里容易WA的是二分的部分,这里和简单的二分查找不一样,这里二分的目的是要找出比学生成绩高的,离学生成绩最近的一个值,所以当a[mid]=b[i]的时候,要left=mid+1,将比学生成绩高的最近一个成绩找出后,再在该成绩的左右查找是否有更接近的成绩。(该方法无需再讨论a[mid]=b[i]时的跳出情况)#include <stdio.h>#include <stdlib.h>#include <math.h>int cmp(cons原创 2021-09-19 09:48:07 · 313 阅读 · 0 评论 -
洛谷 P1024 [NOIP2001 提高组] 一元三次方程求解(二分法)
这是一道关于二分法求根的练习题目。#include <stdio.h>#include <math.h>double a,b,c,d;double sum(double x){ double s; s=a*x*x*x+b*x*x+c*x+d; return s;}int main(){ scanf("%lf %lf %lf %lf",&a,&b,&c,&d); int i; for(i=-100;i<=100;i++原创 2021-09-15 16:02:24 · 802 阅读 · 0 评论 -
二分答案例题 洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树
这是一道关于二分答案的例题;这里与二分查找不同的是,二分查找的目的为找到即可,但二分答案(以本题为例)所求的是满足条件的最大值。二分查找找到即可跳出循环,二分答案需要找到满足的上(或下限),所以在找到一种情况后,需要继续向上(下)限探索,不可随意跳出循环。#include <stdio.h>#include <stdlib.h>int cmp (const void*a,const void*b){ return (*(int*)a-*(int*)b);}int ma原创 2021-09-12 16:55:51 · 434 阅读 · 0 评论 -
洛谷P2249 【深基13.例1】查找
洛谷P2249 【深基13.例1】查找最后一个点超时问题:这道题采用了两次二分法;主要的二分法可以想到,但是找最小下标时也要用二分法容易忽略。如果采用代码块中的注释for循环最后一个点就会超时,整体复杂度就会变大比如说如果数列全为1,时间复杂度就会退化成o(1)#include <stdio.h>#include <stdlib.h>int main(){ int n,m; scanf("%d %d",&n,&m); int a[n+5],i;原创 2021-09-08 17:15:48 · 1531 阅读 · 0 评论