摘要: 不完整,系统,没营养,不要点呀,写给自己的 阅读全文
posted @ 2018-11-23 21:35 ZYacmer 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 使用前提: 这个数列是一个有序数列,也就是0,1,4,6,7,88这样的 原理: 给出一个范围l到r,然后不断利用mid=(l+r)缩小范围,每次只取分成两半后的其中一边减一点(减一点的意思是减1,比如说既然array[mid]不是答案,那么下一次边界不用mid而用mid旁边的那个) 时间复杂度:O 阅读全文
posted @ 2018-11-23 19:51 ZYacmer 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 就是说输入一行用空格隔开的函数,可是它没说用回车符结束,所以一定要用EOF了 第一种方法: 第二种方法: 总之就是伤心,它就不能说用回车符结尾吗,非要搞那么麻烦,Orz 阅读全文
posted @ 2018-11-22 08:39 ZYacmer 阅读(2288) 评论(0) 推荐(0) 编辑
摘要: 相关例题:NOIP 1999导弹拦截 遇到这题不会去网上搜Dilworth定理,太难受了,看不懂证明 但是,我知道怎么使用了,管那么多,会用就完事了 学习自这篇文章 -1.为什么我不想学证明这个定理 Dilworth定理 在数学理论中的序理论与组合数学中,Dilworth定理根据序列划分的最小数量的 阅读全文
posted @ 2018-11-20 22:43 ZYacmer 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 一.题目链接:P1064 金明的预算方案 二.思路 1.一共只有五种情况 @1.不买 @2.只买主件 @3.买主件和附件1(如果不存在附件也要运算,只是这时附件的数据是0,也就是算了对标准的结果也没影响) @4.买主件和附件2 @5.买主件和两个附件 2.因为要求的是重要度*价格,那么数组就直接存重 阅读全文
posted @ 2018-11-20 20:05 ZYacmer 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 先上题目链接:P1616 疯狂的采药 然后放AC代码: #include<bits/stdc++.h> #define ll long long using namespace std; ll f[100010]; ll timee[10010]; ll w[10010]; int main() { 阅读全文
posted @ 2018-11-20 09:27 ZYacmer 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 题目链接:P1006 传纸条 PS:伤心,又想不出来,看了大神的题解 AC代码: #include<bits/stdc++.h> #define ll long long using namespace std; ll n,m,f[210][210],a[210][210]; int main() 阅读全文
posted @ 2018-11-19 21:40 ZYacmer 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 先上题目: P1004 方格取数 下面上ac代码: ///如果先走第一个再走第二个不可控因素太多 #include<bits/stdc++.h> #define ll long long using namespace std; ll f[11][11][11][11]; ll a[11][11]; 阅读全文
posted @ 2018-11-18 20:52 ZYacmer 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ll long long using namespace std; ll num[350+100]; ll p[ 阅读全文
posted @ 2018-11-18 09:59 ZYacmer 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 题目链接:P1060 开心的金明 基本思路: 基本上和01背包原题一样,不同点在于这里要的是最大重要度*价格总和,我们之前原题是 f[j]=max(f[j],f[j-v[i]]+p[i]); 那么这里直接改成f[j]=max(f[j],f[j-v[i]]+v[i]*p[i]);就好了 其中f[j]代 阅读全文
posted @ 2018-11-17 15:19 ZYacmer 阅读(182) 评论(0) 推荐(0) 编辑