POJ 2018 Best Cow Fences (二分答案构造新权值 or 斜率优化)

$ POJ~2018~Best~Cow~ Fences $(二分答案构造新权值)

emLtVf.png



$ solution: $

题目大意:

给定正整数数列 $ A $ ,求一个平均数最大的长度不小于 $ L $ 的子段

  1. 这道题首先我们如果没有长度限制,直接扫一遍数组即可
  2. 而有了长度限制之后我们的候选集合发生改变,很容让我们想到DP
  3. 事实上这一道题可以DP,用斜率优化复杂度极小,就是有点常数(事实上最优)
  4. 但是我们可以参考类似01规划的做法,因为答案具有单调行。
  5. 我们让数组中每一个数都减去我们二分答案枚举的值,然后求前缀和,我们只要扫描一遍即可
  6. 因为我们们可以从后往前,求出以每一个数为左端点的最大字段和,然后我们只需要知道将后面离它距离大于\(L\)的最大值即可,这个可以边扫描边维护(就是更新最大值)。


$ code: $

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>#define ll long long
#define db double
#define rg register intusing namespace std;const int mod=9901;int n,m,ans;inline int qr(){register char ch; register bool sign=0; rg res=0;while(!isdigit(ch=getchar()))if(ch=='-')sign=1;while(isdigit(ch))res=res*10+(ch^48),ch=getchar();if(sign)return -res; else return res;
}inline int ksm(ll x,int y){ll res=1;while(y){if(y&1)res=res*x%mod;x=x*x%mod; y>>=1;}return res;
}inline int ask(int x,int y){if(y==1)return x;if(y&1) return ((ll)ask(x,y>>1)*(ksm(x,y>>1)+1)%mod+ksm(x,y)%mod)%mod;else return (ll)ask(x,y>>1)*(ksm(x,y>>1)+1)%mod;
}int main(){//freopen(".in","r",stdin);//freopen(".out","w",stdout);while(~scanf("%d%d",&n,&m)){if(m==0){puts("1");continue;}ans=1;for(rg i=2;i*i<=n;++i){if(n%i)continue;rg x=0; while(!(n%i))++x,n/=i;ans=(ll)ans*(ask(i%mod,x*m)+1)%mod;}if(n!=1)ans=(ll)ans*(ask(n%mod,m)+1)%mod;printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/812-xiao-wen/p/11248810.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode—剑指 Offer 59 - I、59 - II

剑指 Offer 59 - I. 滑动窗口的最大值、59 - II. 队列的最大值 题目描述&#xff1a; [59 - I] 给定一个数组 nums 和滑动窗口的大小 k&#xff0c;请找出所有滑动窗口里的最大值。 [59 - II] 请定义一个队列并实现函数 max_value 得到队列里的最大值&#xff0c;要求函数max_…

在WinForm中实现省市级联的效果

在WinForm通过连接数据库来实现省市级联的效果首先&#xff0c;在数据库中创建两个表,省份表(Province)和城市表(City),两个表之间需建立外键约束&#xff0c;主键是省份Id&#xff0c; 外键是城市表中的省份Id&#xff0c;从而建立起省份和城市之间的从属关系。示例代码&#…

.net常用的方法

//用javascript判断是否去那个页面Response.Write("<script language\"javascript\" type\"text/javascript\">");Response.Write("if(confirm(是否去那个页面。)){ document.URLLookContent.aspx}");Response.Write("<…

hdu 2531 Catch him

Catch him Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 124 Accepted Submission(s): 49 Problem Description在美式足球中&#xff0c;四分卫负责指挥整只球队的进攻战术和跑位&#xff0c;以及给接球员传球…

AE 模板 天使之城

http://p2p.uying.com/html/20061206/20491895751.stmhttp://www.yxdmt.net/bbs/dispbbs.asp?boardid17&ID1716 转载于:https://www.cnblogs.com/jackcovey/archive/2007/02/05/640858.html

POJ 3889 Fractal Streets(逼近模拟)

$ POJ~3889~Fractal~Streets $&#xff08;模拟&#xff09; $ solution: $ 这是一道淳朴的模拟题&#xff0c;最近发现这种题目总是可以用逼近法&#xff0c;就再来练练手吧。 首先对于每个编号我们可以用逼近法求出它在各个图上是处于左上&#xff0c;右上&#xff0c;左下&a…

LeetCode—剑指 Offer 37、38

剑指 Offer 37. 序列化二叉树、38. 字符串的排列 题目描述&#xff1a; [37] 请实现两个函数&#xff0c;分别用来序列化和反序列化二叉树。 你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑&#xff0c;你只需要保证一个二叉…

linux:将job放在后台执行的方法

本文转自http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 我自己在工作需要远程连到公司的开发机&#xff0c;在开发机上运行程序时&#xff0c;一旦退出终端就会导致运行的程序被终止&#xff0c;该如何解决呢&#xff1f; 答案就是让程序在后台运行&#xff0c;不受…

GMapbook中文版上线

详细信息及下载地址http://blog.gmap2.net/gmapbook_release/测试地址http://www.gmap2.net/guestbook/转载于:https://www.cnblogs.com/ejk/archive/2007/02/16/651678.html

$2019$ 暑期刷题记录 $2$(基本算法专题)

$ 2019 $ 暑期刷题记录 $ 2 $ &#xff08;基本算法专题&#xff09; $ by~~wch $ $ BZOJ~1958~Strange~Towers~of~Hanoi $ &#xff08;动态规划&#xff0c;递推&#xff09; 题目大意&#xff1a; 求有 $ n $ 个盘子和 $ 4 $ 座塔的汉诺塔问题。 $ solotion: $ 首先需要参考…

LeetCode—<动态规划专项>剑指 Offer 19、49、60

剑指 Offer 19. 正则表达式匹配、49. 丑数、60. n个骰子的点数 题目描述&#xff1a; [19] 请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符&#xff0c;而’表示它前面的字符可以出现任意次&#xff08;含0次&#xff09;。在本题中…

java并发编程-Executor框架

http://www.iteye.com/topic/366591 一、创建线程池 Executors类&#xff0c;提供了一系列工厂方法用于创先线程池&#xff0c;返回的线程池都实现了ExecutorService接口。 public static ExecutorService newFixedThreadPool(int nThreads) 创建固定数目线程的线程池。 public…

我,只关心接口

我们去饭店吃饭&#xff0c;坐下。然后叫&#xff1a;服务员&#xff01;好&#xff0c;服务员来了。你会说&#xff1a;倒茶。或说&#xff1a;点菜。是吧。你不会说&#xff1a;来&#xff0c;我们讨论一下什么是面向对象吧。这是为什么呢&#xff1f;很简单&#xff0c;对你…

java实现颜色Color对象和16进制之间的转换

package com.tsxs.test;import java.awt.Color;public class TestColor {public static void main(String[] args) {System.out.println(toHexFromColor(Color.BLUE));System.out.println(toColorFromString(toHexFromColor(Color.BLUE)));}/*** Color对象转换成字符串* param …

POJ 2054 Color a Tree (贪心)

$ POJ~2054~Color~a~Tree $ $ solution: $ 我们先从题中抽取信息&#xff0c;因为每个点的费用和染色的次数有关&#xff0c;所以我们可以很自然的想到先给权值大的节点染色。但是题目还说每个节点染色前它的父亲节点也必须被染色&#xff0c;这就有了很多的后效性。 暂时没有办…

LeetCode—剑指 Offer 51. 数组中的逆序对

剑指 Offer 51. 数组中的逆序对 题目描述&#xff1a; [51] 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组&#xff0c;求出这个数组中的逆序对的总数。 考察重点&#xff1a; 第51题归并排序实现。在…

Callable与Future的介绍

Callable与Future的介绍Callable与 Future 两功能是Java在后续版本中为了适应多并法才加入的&#xff0c;Callable是类似于Runnable的接口&#xff0c;实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。 Callable的接口定义如下&#xff1b; public interfa…

使用Null Object设计模式[转]

在ESFramework的设计实现中&#xff0c;很多地方都用到了Null Object设计模式。Null Object模式的含义在于&#xff0c;提供一个对象给指定的类型&#xff0c;用以代替这个对象为空的情况。 Null Object提供了“什么也不做”的行为,隐藏来自它的合作者的细节。对于如何理解和应…

angular input使用输入框filter格式化日期

最近使用angular日期选取器。只需要把所选的输出迄今input输入框&#xff0c;根据默认的假设&#xff0c;显示是在时间的形式的时间戳。不符合规定。需要格成一个特定的公式格公式。但input上ng-model不能直接对用于filter。因此内容需要一种方法来在这里显示格式化。 网上寻找…

CH0805 防线 (二分值域,前缀和,特殊性质)

$ CH~0805~ $ 防线 (二分值域&#xff0c;前缀和&#xff0c;特殊性质) $ solution: $ 注意博主所给题面的输出和原题有些不同 这道题当时想了很久很久&#xff0c;就是想不到怎么写。果然还是太 $ vegetable $ 了。首先我们可以肯定的是&#xff0c;我们不能暴力枚举&#xff…