目录
1.蘑菇炸弹
2.构造数字
3.小蓝的金牌梦
4.合并石子加强版
5.简单的LIS问题
6.期望次数
1.蘑菇炸弹
我们直接依照题目 在中间位置的数进行模拟即可
void solve(){ cin>>n; vectora(n+1); for(int i=1;i<=n;i++) cin>>a[i]; int ans=0; for(int i=2;i =a[i-1]+a[i+1]) ans++; } cout<
2.构造数字
我们需要构造的数字最大,由于数位已经告诉我们,所以明显的有一个贪心的策略:从最高位置开始从最大的数开始遍历是否可以填可以填减去看下一位即可
void solve(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=9;j>=0;j--){ if(m>=j){ cout<3.小蓝的金牌梦
我们有一个错误的想法就是找出最大的质数x然后直接求长度x的即可,为什么是错误的呢?因为题目中的元素带有负数,所以我们要求出所有满足的来比较最大值,我们可以考虑使用线性筛来求出所有的质数然后前缀和来求解即可
vectorprimes; int cnt; void solve(){ cin>>n; vector a(n+5); for(int i=1;i<=n;i++) cin>>a[i],a[i]+=a[i-1]; auto get = [&](){ vector st(n+5); for(int i=2;i<=n;i++){ if(!st[i]){ primes.push_back(i); cnt++; } for(int j=0;primes[j]<=n/i;j++){ st[i*primes[j]]=true; if(i%primes[j]==0) break; } } }; get(); LL ans=-1e18;// 注意初始化防止过小 for(int i=1;i<=n;i++){ for(auto&v:primes){ if(i 4.合并石子加强版
首先我们不要直接先入为主认为是区间dp,区间dp的时间复杂度一般是
也不现实,我们接着找是不是具有什么性质找最简模型
a b c ->
1: 先左后右 a*b+(a+b)*c = a*b+a*c+b*c
2: 先右后左 b*c+(b+c)*a = a*b+a*c+b*c
我们可以发现无论左右结果不会变的那么也就是我们这个结果是不受操作所影响的,所以我们选择最优的操作直接从左到右即可,注意数据范围很大所以我们考虑要使用__int128来处理
void solve(){ cin>>n; vectora(n+5); __int128 res=0; for(int i=1;i<=n;i++) cin>>a[i]; LL pre=a[1]; for(int i=2;i<=n;i++){ res+=a[i]*pre; pre+=a[i]; } function print = [&](__int128 res){ if(res>9) print(res/10); putchar(res%10+'0'); }; print(res); return ; } 5.简单的LIS问题
题目意思很简单修改一个数然后为
然后求最长上升子序列,我们可以发现数据范围是
3e3可以使用
的
接着就是找一个数修改 我们明显的可以划分为前面和后面来区别,所以
我们求一个前面的最长上升子序列,倒着求一个最长下降子序列拼接,接着考虑单独的最长子序列操作,对于上升子序列把后面的一个数改成比自己大即可,对于改前面的数就需要注意是不是>0(题目特殊限制)
void solve(){ cin>>n; vectora(n+5),dp1(n+5,1),dp2(n+5,1); for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) for(int j=1;ji;j--) if(a[i] 考虑提升数据范围就使用nlogn同时需要存在来这个时候的最大或者最小值以及数量
void solve(){ cin>>n; vectora(n),A(n),B(n),cp(n),cl(n); for(auto&v:a) cin>>v; vector pre,last; for(int i=0;i pre.back()) pre.push_back(v); else pre[lower_bound(pre.begin(),pre.end(),v)-pre.begin()]=v; A[i]=pre.back();// 表示到这个点的时候的最大值是多少 cp[i]=pre.size();// 表示到这个点的时候最长上升子序列的长度都是多少 } reverse(a.begin(),a.end()); int ans=pre.size(); for(int i=0;i ())-last.begin()]=v; B[n-i-1]=last.back();//表示到这个点的最小值是多少 cl[n-i-1]=last.size();// 表示这个点的长度是多少 } for(int i=0;i 6.期望次数
我们可以知道和是一个概率dp,依照题目意思我们定义状态为当前 为x是期望为dp[x](x==i)
1.当i>=m 时 dp[i]=0;
2.当i
进行变形之后得到答案
其中sum是
之和,接着就可以按照公式倒着递推即可(注意逆元之类的操作)
LL qmi(LL a,LL b,LL p){ LL res=1; while(b){ if(b&1) res=res*a%p; b>>=1; a=a*a%p; } return res; } LL inv(LL x){ return qmi(x,mod-2,mod); } void solve(){ cin>>n>>m; vectordp(m); vector a(n); LL sum=0; for(int i=1;i<=n;i++) cin>>a[i],sum+=a[i]; for(int i=m-1;i>=1;i--){ for(int j=2;j<=n&&i*j
猜你喜欢
- 16天前(大理悦云雅阁酒店电话)雅阁酒店集团|端午佳节礼遇,大理悦云雅阁度假酒店
- 16天前(fender japan hybrid)Fender东京旗舰店盛大开幕在即,开售商品和店内服务提前揭晓
- 16天前(艾美酒店连锁)艾美酒店全球夏日计划回归,联手Wishbone主厨推出创新冰饮
- 16天前(兵团猛进秦剧团持续开展“戏曲进校园”活动)兵团猛进秦剧团持续开展“戏曲进校园”活动
- 16天前(甘肃文化旅游宣传片)甘肃文旅推介走进重庆
- 16天前(花王伴你乐享五一好“趣”处)花王伴你乐享五一好“趣”处
- 16天前(中国最好的避暑山庄)2025中国十大避暑山庄评选揭晓,澳涞山庄夺魁
- 16天前(希尔顿集团2021年筹建的酒店)希尔顿集团两大重点项目亮相第四届上海旅游投资促进大会
- 16天前(锦州新增两家国家aaa级旅游景区有哪些)锦州新增两家国家AAA级旅游景区
- 16天前(大黄山景区高质量发展联盟成立多少年)大黄山景区高质量发展联盟成立
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章