题意:
t组输入,给出一个n代表接下来一串长为n的数字,删除其中任意的数字,使其成为各个为数字和为偶数且本身也为偶数的数。
题解:
把所有奇数全部找出来(因为偶数加偶数还是偶数,删除掉所有偶数对结果无影响),若他们的和为偶数则直接输出就好了,若为奇数少输出一个奇数即可(注意此时若奇数数为1则要输出-1),若无奇数输出-1。
代码:
https://codeforces.com/contest/1291/submission/70042464
题意:
定义一个数组中严格上升再严格下降或只严格上升或只严格下降的数组为shrapend。
t组输入,给出一个n代表接下来给出一个长为n的数组,若该数组为shrapend则输出Yes,否则输出No。
题解:
首先,我们要明确什么条件下输出Yes,再想Yes的最基础最基础要满足什么才行,不满足该条件的话就就是No,我们先假设这个数组一直上升,最基础你要满足0,1,2,3,...,不然不是上升,直到不满足a[i]<i-1,标记上升最多到pos1。然后倒过来,看下降最多到哪里,从尾出发,和上一步大致相同,得到最多下降到pos2。最后判断pos1+pos2-1是否大于等于n就可以了,若大于等于则代表他们可以用最基础的序列来构成shrapend,反之则不行。
代码:
https://codeforces.com/contest/1291/submission/70112731
题意:
t组输入,给出n,m,k分别代表n个人,我排在第m个,我可以说服k个人,接下来给出一个长为n的数组,由于按顺序来选(每次只能选数组首和尾的数字),我是第m个,我可以说服k个人选择首或尾,其余我不能说服的随机选,问我一定能拿的数字的最大值为多少。
题解:
有一点是可以确定的,我能说服k个人,那我一定会说服k个人,毕竟能利用都利用这肯定有利于我,对k做个处理,k=min(k,m-1),k超过m-1的部分也没用了,因为我已经选完了,控制后面的人已经改变不了我拿到的数字了。然后暴力枚举我控制i个人选首,剩下的人选择尾,然后继续暴力枚举轮到我的时候有多少个人不受我控制,j个人选首,剩下选尾,最小化我得到得数(因为在我选择i人选首,剩下人选尾得情况下,不受我控制的人会乱选,所以我至少能选到的数一定是他们选剩下的最小的数),然后不断跟新变大我所得到的值。
代码: