![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
信息学奥赛一本通(提高版)
CSCS啊
这个作者很懒,什么都没留下…
展开
-
平板涂色 抬手次数
#include <bits/stdc++.h> using namespace std; struct block { int x1, y1, x2, y2, c; }a[16]; int N; int color[21] = {0}; int m; int ans=16; bool f[16][16] = { false }; int b[16] = {0};//砖块被涂的次数 bool cmp(block a,block b) { if (a.x1 != b.x1) re.原创 2021-07-12 01:07:09 · 125 阅读 · 0 评论 -
埃及分数 单位分数
#include <bits/stdc++.h> using namespace std; typedef long long LL; const LL BIG=1000; LL a, b; LL ans[BIG],now[BIG],maxd; LL gcd(LL a, LL b) { return b == 0 ? a : gcd(b, a % b); } LL find_best(LL a, LL b)//满足1/i<=a/b的最小i,i>=b/a { return.原创 2021-07-11 16:13:47 · 160 阅读 · 0 评论 -
weight 前后n项和
#define _CRT_SECURE_NO_DEPRECATE #include <bits/stdc++.h> using namespace std; int ST[2001];#保存S[]和T[] bool v[501]; int ans[1001];//存结果 int n,m; int k,x; bool flag=false; int all; void dfs(int cur,int si,int ei,int sz,int ez) { //ST从小到大排序,cur从.原创 2021-07-10 02:46:56 · 239 阅读 · 0 评论 -
拼接木棍
转载 https://blog.csdn.net/weixin_45485187/article/details/103490709 这位老哥的解析写得很好了,书上错了两个地方都被他找到了 感谢! 没有回溯 导致错误 没有成功后马上回到停止 导致超时 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc++.h> using namespace std; int n; int a[61]; int f; int sum = 0; int used转载 2020-11-06 02:03:00 · 427 阅读 · 0 评论 -
生日蛋糕
书上剪枝得很详细了 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc++.h> using namespace std; int N, M; int minV[21] = { 0 }, minA[21] = {0}; int min_area=1<<30; int area = 0; void Read() { scanf("%d%d", &N, &M); for (int i = 1; i <= M原创 2020-11-05 23:02:33 · 134 阅读 · 0 评论 -
传送带(二重三分)
开始自然想到在平地上的路径做文章,平地的起点和终点的改变就是是影响结果的全部因素。但是这是两个可变的东西,最后没想到真的要用二重三分,当积累经验了 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc++.h> using namespace std; int Ax, Ay, Bx, By, Cx, Cy, Dx, Dy; int P, Q, R; void Read() { scanf("%d%d%d%d%d%d%d%d%d%d%d",&a原创 2020-11-04 15:55:00 · 289 阅读 · 0 评论 -
灯泡(三分)
转载 https://www.cnblogs.com/ljy-endl/p/11393814.html 解释得很清楚 其实我是不知道影子是什么转载 2020-11-03 23:31:17 · 229 阅读 · 0 评论 -
扩散连通
一开始想象两点的之间的扩散距离就是max(abs(a[i].x-a[j].x),abs(a[i].y-a[j].y)) 但是实际的情况是每个点的扩散范围是以该点为中心,斜边为2t的菱形,为了在t时间内让两个菱形有交集,需要横竖方向上都填补上差距,由于是一步一步来的,所以这个差距就是曼哈顿距离,差距使用2t填补的,所以让2*t>曼哈顿距离就行 ...原创 2020-11-03 12:28:35 · 117 阅读 · 0 评论 -
浮点数二分结果
给定一个长度为 n 的非负整数序列 ,求一个平均数最大的,长度不小于 L 的子段。 在最后是输出ans还是right之间实验,最终还是只能用right 用ans会精度缺失 猜想可能是mid=(l+r)/2的时候精度被吞了 ,都是double,只能赋小数点后6位,更多赋不了,可能得知道double的存储结构后在研究吧 目前我还没找到原因 ...原创 2020-10-30 02:30:54 · 145 阅读 · 0 评论 -
糖果传递
原创 2020-10-29 14:35:25 · 64 阅读 · 0 评论 -
钓鱼贪心解法
起先可以想到的贪心就是每次取所有湖中每个机会可以钓到的最多的鱼 网上说刘佳汝黑书《算法艺术与信息学竞赛》中有对这题有分析,但是黑书上没有代码,我在网上找到了对黑书中的部分题目的样例和代码,幸好里面有这题 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc++.h> using namespace std; int main() { int n, h; while (cin >> n) { if (n == 0) break原创 2020-10-28 13:03:00 · 262 阅读 · 0 评论 -
流水作业调度问题
P13 流水作业调度问题 因为min{bj,ai}<=min{bi,aj}成立是作业J1在J2前面的条件 所以 ○1若min{bj,ai}=bj,则bi和aj都要大于bj才行,即对于此时a>b的,需要bi>bj, 作业J1才能在J2前面,相当于b越小越要在后面。 ○2若min{bj,ai}=ai,则bi和aj都要大于ai才行,即对于此时a<b的,需要ai<aj, 作业J1才能在J2前面,相当于a越小越要在前面。 模拟处理过程时间:若前面处理过作业后此时A的时间比B的时间少,则正原创 2020-10-03 17:43:37 · 404 阅读 · 0 评论