题目详情(修改数列):
我们有1个数列。我们可以把其中的任意1些项替换成其他的正整数,但是我们不能删掉项,也不能交换项的顺序。请问最少需要几次替换,才能把数列变成严格单调递增的?
输入格式
多组数据,每组数据第1行1个正整数n (n<=1000000)
每组数据第2行是n个空格分隔的非负整数,每一个不超过10^9,表示数列中的数。
输出格式
对每组数据,输出1行,包括其最少的替换次数。
答题说明:
输入样例
3
4 10 20
5
1 7 2 20 22
输出样例
0
1
先说下思想:鉴戒最长递增子序列(LIS)的思想,添加限制条件:元素值>=元素下标;元素之间的差值>=元素下标之间的差值。
举例:A[0…8] = {2, 1, 5, 3, 6, 4, 8, 9, 7}
设置两个数组:B记录最长递增子串(符合本题题意的条件下的),Pos记录子串中各元素在原数组中的下标。设置变量:len记录子串长度。
(1)从后往前找数组A,第1个满足:元素值>=下标的元素。应当为9,所以有B[0]=9, Pos[0]=7,len=1;
(2)再看9之前的元素8,先判断它是不是>=下标,可知成立。再判断(B[len⑴]-A[6] = 9⑻) >= (1=Pos[len⑴]⑹),成立,因此子串中加入元素8。那末B[0,1] = {9,8}, Pos[0,1] = {7,6}, len=2;
(3)再看8之前的元素4,由于它<下标,因此直接跳过;
(4)再看4之前的元素6,它>=下标,(B[len⑴]-A[4] = 8⑹) >= (2 = Pos[len⑴] – 4),因此子串加入元素6,那末B[0,1,2] = {9,8,6},Pos[0,1,2]={7,6,4}, len = 3;
(5)再看6之前的元素3,>=下标,6⑶>=1,那末B[0,1,2,3]={9,8,6,3},Pos[0,1,2,3]={7,6,4,3},len=4;
(6)再看3之前的5,>=下标,不符合3⑸>=1,由于5>3,得看是不是要取代B中已有的元素。在B中从后往前找到,恰好大于5的数,那就是6。接下来就要判断是不是应当让5来取代6后面的元素3的位置。由于6⑸=1>=(2=Pos[2]⑵)不成立,因此不能让5来替换,所以还是跳过;
(7)再看5之前的1,均符合要求,因而B[0,1,2,3,4]={9,8,6,3,1},Pos[0,1,2,3,4]={7,6,4,3,1},len=5;
(8)再看1之前的2,>=下标,不符合1⑵>=1,由于2>1,得看是不是要取代B中已有元素。一样找到3,由于3⑵>=3不成立,所以跳过。
至此,得到符合要求的最长不需要改动的子串,那末元数组总长度―len就是最少需要替换的个数。
要求用java,基本输入输出也不会,只得求助百度了,下面是小菜鸡的代码:
<pre name="code" class="java">import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n; int[] num; while(in.hasNext()){ n = in.nextInt(); num = new int[n]; for(int i = 0; i < n; i++) num[i] = in.nextInt(); int len = 0; for(int i = n; i > 0; i--){//暴力破解!! int tmp = lis(num, i); len = tmp > len ? tmp : len; } System.out.println(n-len); } } private static int lis(int[] num, int n) { // TODO Auto-generated method stub int[] bnum = new int[n]; int[] bpos = new int[n]; int init; //从后到前,第1个元素值大于等于下标(从0开始)的元素为首 int len; //最长严格单音调串长度 for(init = n - 1; init >= 0; init--){ if(num[init] >= init){ bnum[0] = num[init]; bpos[0] = init; break; } } len = 1; if(init < 0){ return 1; } for(int i = init - 1; i >= 0; i--){ if(num[i] >= i){ //值大于等于下标才有比较的意义 if(bnum[len - 1] - num[i] >= bpos[len - 1] - i){ //值的差大于等于下标的差才可以添加 bnum[len] = num[i]; bpos[len++] = i; }else if(num[i] > bnum[len - 1]){ int pos = find(bnum, bpos, len, num[i], i); //寻觅替换位置 if(pos != ⑴){ bnum[pos] = num[i]; bpos[pos] = i; } } } } return len; } private static int find(int[] bnum, int[] bpos, int len, int number, int pos) { // TODO Auto-generated method stub int i = 0; for(i = len - 1; i > 0; i--){ //找到恰好比number大的元素位置 if(bnum[i - 1] > number){ break; } } if(i <= 0) return 0; else{ if(bnum[i - 1] - number >= bpos[i - 1] - pos) //判断替换可行否 return i; else return ⑴; } } }
波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
波比源码 » 翼支付编程大赛――修改数列
波比源码 » 翼支付编程大赛――修改数列
levofloxacin 500mg drug levaquin over the counter
dutasteride without prescription purchase celebrex for sale order ondansetron 8mg without prescription
buy spironolactone 100mg online buy finasteride generic fluconazole 200mg us
ampicillin 250mg ca buy ampicillin 500mg without prescription buy erythromycin for sale
purchase fildena generic order robaxin buy robaxin 500mg generic
cost sildenafil 100mg sildenafil 50mg pill order estradiol 2mg pill
order lamictal 200mg for sale lamotrigine pills retin cream ca
tadalafil 20mg price tadalis 10mg over the counter diclofenac brand
accutane medication order azithromycin 250mg for sale buy zithromax
indocin over the counter indocin 75mg pills trimox 250mg usa
generic cialis cost buy cialis usa viagra sale
purchase arimidex pills viagra for women pink pill cheap generic sildenafil
pharmacie en ligne tadalafil 20mg cialis 5mg prix sildenafil 200mg comprimГ©
prednisone 10mg canada generic cialis tadalafil 120 tabs oral viagra
tadalafil 10mg bestellen viagra ohne rezept sildenafil 100mg kaufen ohne rezept
isotretinoin 20mg oral stromectol pills ivermectin 6 mg without prescription
buy altace 10mg cost temovate purchase astelin generic
buspirone 10mg cost oxybutynin 2.5mg cheap oxybutynin uk
order fosamax 35mg pill buy fosamax 35mg online cheap famotidine brand
order olmesartan 10mg online cheap buy divalproex online cheap order acetazolamide 250 mg without prescription
order generic prograf 1mg buy tacrolimus 1mg without prescription purchase ursodiol without prescription
bupropion order quetiapine 100mg over the counter seroquel order online
molnupiravir 200 mg oral naprosyn uk purchase prevacid generic
tadalafil tablet order cialis 20mg online canadian viagra
naltrexone 50mg price order albenza online buy aripiprazole generic
order avlosulfon 100mg pill perindopril 8mg cheap buy aceon 4mg sale
medroxyprogesterone 5mg over the counter buy provera 5mg order periactin 4 mg for sale
modafinil 200mg ca order stromectol 3mg online cheap buy ivermectin 3mg for humans
brand fluvoxamine 100mg glipizide 5mg usa glipizide 5mg cost
isotretinoin 20mg drug buy accutane 40mg pill deltasone 40mg brand
piracetam over the counter piracetam for sale online viagra 25mg price
buy azithromycin 250mg online cheap order zithromax 250mg buy gabapentin 100mg without prescription
buy tadalafil 5mg pill cost viagra 100mg sildenafil 50 mg
how to get cialis clomipramine 50mg oral clomipramine online order
buy chloroquine online order cenforce 50mg pill olumiant oral
order clozaril for sale buy combivent 100 mcg sale order generic dexamethasone 0,0,5 mg
order viagra lisinopril usa buy lisinopril generic
omeprazole brand slots games online blackjack free
metoprolol 100mg cost metoprolol medication vardenafil 10mg price
do my term paper help with research paper bonus poker online
clomid 50mg drug online casino games real money online gambling real money
generic aristocort 10mg claritin 10mg brand order clarinex sale
order dapoxetine sale order dapoxetine 30mg generic synthroid 150mcg cost
tadalafil liquid brand viagra sildenafil us
orlistat cost diltiazem 180mg oral acyclovir 400mg tablet
order cialis 20mg sale inderal 20mg for sale order clopidogrel 150mg sale
zyloprim 300mg price cost rosuvastatin 20mg zetia price
order domperidone online order tetracycline 250mg for sale buy flexeril generic
order ranitidine 300mg online purchase celebrex without prescription celecoxib 100mg pills
tadalafil brand tadalafil 20mg cheap purchase ciprofloxacin pill
order keflex 500mg keflex 125mg ca purchase erythromycin generic
order viagra 100mg for sale cheap generic sildenafil cialis 10mg usa
buy ceftin 250mg without prescription buy cefuroxime brand methocarbamol 500mg
blackjack online money casino gambling cialis tadalafil 5mg
desyrel 100mg pill sildenafil pill buy aurogra 50mg pill
free poker online games female cialis tadalafil cialis 20mg
order lasix 40mg pill order hydroxychloroquine without prescription hydroxychloroquine 400mg pill
buy sildenafil 50mg sale budesonide us brand budesonide
order deltasone 10mg for sale mebendazole for sale online vermox 100mg ca
cost retin avanafil us order avana 100mg sale
purchase tadalafil generic purchase tadalafil sale order indomethacin sale
lamisil cheap purchase cefixime online trimox canada
biaxin order online order clonidine generic meclizine over the counter
buy naproxen for sale omnicef 300mg oral order lansoprazole 30mg pills
purchase albuterol generic protonix 40mg buy ciprofloxacin 1000mg without prescription
order singulair viagra uk viagra sildenafil 200mg
online casino usa online blackjack for real money usa online blackjack spins website
purchase adalat for sale generic aceon 4mg fexofenadine 120mg price
ramipril tablet cheap altace 10mg arcoxia ca
essays help order leflunomide pill sulfasalazine order online
doxycycline usa cleocin cost order cleocin 150mg pills
olmesartan buy online divalproex 500mg without prescription buy depakote 500mg pill
oral temovate buy temovate pill cost amiodarone
order carvedilol 6.25mg generic oxybutynin 2.5mg canada buy elavil 50mg generic
order famotidine 40mg generic buy famotidine 20mg generic buy remeron 15mg
order requip 2mg online cheap ropinirole drug purchase labetalol online cheap
tricor order online sildenafil 20mg sildenafil 50mg usa
nexium cheap buy generic esomeprazole buy generic furosemide
order provigil for sale brand modafinil 200mg order generic promethazine 25mg