分治/二分/递推
来源:互联网 发布:宁波易企网络 编辑:程序博客网 时间:2024/06/08 05:49
8-13
洛谷p1057传球游戏
(看到什么都像dp的毛病得改)
#include<bits/stdc++.h>using namespace std;int a[40][40]={0},n,m,l,r;int main(){scanf("%d%d",&n,&m);a[0][1]=1;for(int i=1;i<=m;i++)for(int j=1;j<=n;j++){l=j-1>0?j-1:n;r=j+1<=n?j+1:1;a[i][j]=a[i-1][l]+a[i-1][r];//本次的方案数等于上一次附近两同学的方案数之和}printf("%d",a[m][1]);return 0;}p1025数的划分
写了dfs的版本,第二类string数什么的。。。以后再说吧(flag)
dfs+剪枝,暴力出奇迹
ps:c++的计时真的不准。。。
#include<bits/stdc++.h>using namespace std;int a[10]={0},n,k,s=0;void dfs(int deep,int sum){if((deep==k)&&(n-sum>=a[deep-1])){ s++; return;}if(deep==k||sum>=n)return;for(int i=a[deep-1];i<=n-sum;++i){a[deep]=i; dfs(deep+1,sum+a[deep]);}return;}int main(){scanf("%d%d",&n,&k);a[0]=1;dfs(1,0);printf("%d",s);return 0;}明天:写完作业,质检员
8-16
p1314聪明的质监员
二分,智障错误耽误了一天。。。
#include<bits/stdc++.h>using namespace std;long long n,m,ss,w,now=40000000000000LL,ma=0;struct stone{long long weight,value;};stone a[200010];struct block{long long begin,end;};block b[200010];struct total{long long num,sum;};total s[200010];void in(){scanf("%d%d%lld",&n,&m,&ss);for(long long i=1;i<=n;i++)scanf("%lld%lld",&a[i].weight,&a[i].value);for(long long i=1;i<=m;i++)scanf("%lld%lld",&b[i].begin,&b[i].end);for(long long i=1;i<=n;i++)if(a[i].weight>ma)ma=a[i].weight;s[0].num=0;s[0].sum=0; return;}void first(long long w){for(long long i=1;i<=n;i++){if(a[i].weight>=w){s[i].num=s[i-1].num+1;s[i].sum=s[i-1].sum+a[i].value;}else {s[i].num=s[i-1].num;s[i].sum=s[i-1].sum;}}return;}bool check(long long w){first(w);long long temp=0,now1;for(long long i=1;i<=m;i++)temp=temp+(s[b[i].end].num-s[b[i].begin-1].num)*(s[b[i].end].sum-s[b[i].begin-1].sum);now1=temp-ss;if(now1<0)now1=now1*-1;if(now1<now)now=now1;if(temp<ss)return false;//w太大else return true;//w太小}int main(){ in();long long l=0,r=ma+1,mid;bool bit;while(l+1<r){mid=(l+r)>>1;if(check(mid))l=mid;else r=mid;}bit=check(l);bit=check(r);printf("%lld",now);return 0;}
阅读全文
0 0
- 分治/二分/递推
- 分治、贪心、递推算法的基本思路
- 递归,递推,分治,贪心,动态规划......
- uva 11384 二分/ 递推
- bzoj 1863 二分+递推
- POJ 1759(数学递推+二分)
- 递推递归练习 P 二分查找
- 递归递推之二分查找
- 递推递归练习P二分查找
- 递推递归专题 P 二分查找
- 【BZOJ2152】聪聪可可,dfs+递推/点分治
- luogu1115 最大子段和(递推/分治)
- 二分搜索(分治)
- 分治法-二分检索
- 分治法-----二分查找
- 分治算法--二分搜索
- 分治-二分查找
- 分治-二分搜索
- 过滤器和拦截器的区别
- 选择排序
- HDUoj_1115 求多边形重心
- css知识点笔记
- np.argmax()
- 分治/二分/递推
- Pandas知识点(一)
- 优先队列优化的迪杰斯特拉算法
- 怎样解决“XXX is not in the sudoers file”错误
- 折半排序
- Codeforces 835D总结
- jQuery中ready与load事件的区别
- hdu 6109 数据分割
- Linux系统学习方法——写给小白 每个人都有心中向往的一些事情,而我,刚进实验室,看到师兄师姐在电脑前面噼里啪啦的敲代码,真的好羡慕,看着他们实现一个又一个的功能满心欢喜,我也很想尝试。后来了解到师