当前位置: 首页 > wzjs >正文

做网站上饶手机上可视化编程app

做网站上饶,手机上可视化编程app,同和网站建设,网站开发项目分析模板题意如下图 思路: 考虑一种贪心策略, 假设最大的物品体积为2^v,那么我每个背包都至少要有2^v的体积,那么假设有m个背包,我的容量就增加了m*2^v,如果此时最大的物品有k个,那么现在可以支配给后面小物品的体…

题意如下图

思路:
考虑一种贪心策略,

假设最大的物品体积为2^v,那么我每个背包都至少要有2^v的体积,那么假设有m个背包,我的容量就增加了m*2^v,如果此时最大的物品有k个,那么现在可以支配给后面小物品的体积就就有(m-k)*2^v也就是(m-k)个2^v,但是这个可支配体积难以表示,所以可以逐位考虑,如果在2^v对应的这个位置有a个可以支配给后面物品的体积,那么在2^(v-1)对应的位置就有2*a个可以支配给后面物品的体积,这样逐位计算,可以做到不用计算体积也能把体积分配下去

用一个简单的图示可以表示这种做法

如图1:2^i下面的1的个数对应物品这一位对应物品个数(这个样例k也就是背包数量为4)

此时只能把背包容量从0扩到2^4

图2,'-'表示背包扩容之后可以支配的体积,用了3个,还剩一个可支配的体积,乘2给到下一位

 图三,刚好抵掉2^3这一位

图四:背包容量从2^4扩容到2^4+2^2,多四个2^2的可支配的体积,用了三个剩一个

 图五:乘二

图六:乘二刚好抵掉,所以这个样例答案为2^4+2^2=20

按照这个思路,可以初步实现代码,但是还有一种情况就是2^m级别的体积向下转移到2^(m-1e9),也就是如果可以支配的有剩余,就会不断*2转移到下一位,但是根据数据范围可以发现可能会出现转移1e9次的情况,这种情况可以发现,转移32次以上,可支配的体积已经达到了2*32级别,那么可支配的体积一定容得下剩余的体积,于是提前结束循环得出答案即可

但是要注意,初始的某一位的物品个数如果超过了背包个数k,那么多余部分要除以二向高位转移,确保每一位的物品个数<=k

代码实现:

#include <map>
#include <set>
#include <queue>
#include <deque>
#include <cmath>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
#define fi first
#define se second
#define u1 (u<<1)
#define u2 (u<<1|1)
#define pb push_back
#define pp pop_back()
#define int long long
#define laile cout<<"laile"<<endl
#define lowbit(x) ((x)&(-x))
#define double long double
#define sf(x) scanf("%lld",&x)
#define sff(x,y) scanf("%lld %lld",&x,&y)
#define sd(x) scanf("%Lf",&x)
#define sdd(x,y) scanf("%Lf %Lf",&x,&y)
#define _for(i,n) for(int i=0;i<(n);++i)
#define _rep(i,a,b) for(int i=(a);i<=(b);++i)
#define _pre(i,a,b) for(int i=(a);i>=(b);--i)
#define all(x) (x).begin(), (x).end()
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
typedef unsigned long long ULL;
typedef pair<int,int>PII;
const int N=6e6+10,INF=4e18,P=998244353;
int n,m;
int qmi(int a,int b,int P){int res=1;while(b){if(b&1)res=res*a%P;a=a*a%P;b>>=1;}return res;
}
vector<PII>v(N);
void solve()
{map<int,int>mp;cin>>n>>m;_rep(i,1,n){int a,b;cin>>a>>b;mp[b]+=a;}int idx=0;for(auto i:mp){if(i.se>m){int sub=i.se-m;mp[i.fi]-=sub;if(sub&1){sub++;mp[i.fi]--;}mp[i.fi+1]+=sub/2;}if(mp[i.fi]){v[++idx]={i.fi,mp[i.fi]};}}int pre=-1,res=0,fu=0;_pre(i,idx,1){if(pre==-1){res+=qmi(2,v[i].fi,P);fu=m-v[i].se;}else{if(fu&&pre-v[i].fi>40){cout<<res<<'\n';return ;}else{if(fu){for(int j=pre;j>v[i].fi;j--){//2^jfu*=2;if(fu>2*m){cout<<res<<'\n';return ;}}}if(fu>=v[i].se)fu-=v[i].se;else {v[i].se-=fu;//剩res=res+qmi(2,v[i].fi,P);res%=P;fu=m-v[i].se;}}}pre=v[i].fi;}cout<<res<<'\n';return ;
}
signed main()
{IOS;int T=1;cin>>T;while(T--)solve();return 0;
}


文章转载自:

http://At0qjT3S.nkrmh.cn
http://jL9kTSKD.nkrmh.cn
http://jSsLGoJC.nkrmh.cn
http://Sv5hKejs.nkrmh.cn
http://irEDORt4.nkrmh.cn
http://vcfslAmF.nkrmh.cn
http://nRaMv3kB.nkrmh.cn
http://nUGjkGXh.nkrmh.cn
http://56Owu791.nkrmh.cn
http://VOpNLbrg.nkrmh.cn
http://pvSUd2mq.nkrmh.cn
http://KT1buIje.nkrmh.cn
http://IE5tGehd.nkrmh.cn
http://zblQf41g.nkrmh.cn
http://7O7W1Tjq.nkrmh.cn
http://kuCYmC9N.nkrmh.cn
http://Jv8enuPg.nkrmh.cn
http://CbKPsbf5.nkrmh.cn
http://49kepQB0.nkrmh.cn
http://G8Q8kNIs.nkrmh.cn
http://oeMEgx3v.nkrmh.cn
http://kFWyBSYr.nkrmh.cn
http://w5CDpEhT.nkrmh.cn
http://p2SeZ5jV.nkrmh.cn
http://ECa9wUrf.nkrmh.cn
http://Fw6HzvS1.nkrmh.cn
http://tQMaexpV.nkrmh.cn
http://QRixVncS.nkrmh.cn
http://T8xd6ybS.nkrmh.cn
http://FA3jU6aG.nkrmh.cn
http://www.dtcms.com/wzjs/634101.html

相关文章:

  • 阜阳恒亮做网站多少钱新材建设局网站
  • 毕设做网站什么能过万网网站发布
  • 滨江做网站抖音代运营 深圳
  • 西安免费做网站哪家好网站建设方案书是什么意思
  • golang 做网站网页模板版权申请
  • wordpress主题模板仿东莞seo整站优化火速
  • 怎么上传网站图片的链接网站微场景代码
  • 怎么在阿里云服务器上建设网站桂林网站网站建设
  • 网站服务器慢瑞安市住房和城乡建设局网站
  • 像优酷平台网站是怎么做的wordpress 4.8 php版本
  • 綦江建站哪家正规常州市新北区城乡建设局网站
  • 成交功能网站一个域名可以绑定几个网站
  • 内蒙古建设厅网站删除腾讯邮箱网页版登录入口
  • 门户网站建设模板新乡seo网站推广工具
  • 舟山公司做网站上海网站建设培训学校
  • seo站内优化公司建设网站的费用入什么科目
  • 凤山县网站建设圣耀做单网站
  • 怎么建设素材网站wordpress编辑页面打不开
  • 数字货币交易网站开发专门做饥饿营销的网站
  • 中山做网站推广公司宝塔wordpress固定连接
  • 网站开发入门书籍2018东莞网络营销十年乐云seo
  • seo建站还有市场吗不断加强门户网站建设
  • 做音乐网站要求张氏万家网站建设
  • 网站后台如何登陆手机网站seo教程
  • 网站的关键词策略建湖做网站价格
  • 网站优化千牛帮黄石下陆区建设局网站
  • 个人备案网站类型个人申请注册公司需要多少钱
  • 伍佰亿营销型网站查看网站有多少空间
  • 个人网站一年多少钱十大网页游戏排行
  • nodejs做后端的网站10_10_微信里网站怎么做的