2018 ACM-ICPC亚洲区域赛(青岛)
Problem C---zoj 4060 Flippy Sequence
解题思路:要求进行两次操作,每次操作选择一个区间,问将s串变成t串中所选的两个区间构成的4元组有多少个。做法:找出s串与t串不同块的个数,然后做个简单的判断即可。
AC代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=1e6+;
int T,n,cnt,answer;char s1[maxn],s2[maxn];
int main(){
while(~scanf("%d",&T)){
while(T--){
scanf("%d %s %s",&n,s1,s2);cnt=;
for(int i=;i<n;++i)//统计s串与t串不同块的个数
if((i==&&s1[i]!=s2[i])||(i>&&s1[i-]==s2[i-]&&s1[i]!=s2[i]))cnt++;
if(!cnt)answer=n*(n+)/;//全部相同:1+...+n
else if(cnt==)answer=*(n-);//只有一个不同块,①不同和不同进行反转,②不同和相同进行反转
else if(cnt==)answer=;//有两个不同块,三种操作,答案肯定为6
else answer=;//至少有3个不同块,无法实现2次操作,答案只能为0
printf("%d\n",answer);
}
}
return ;
}
Problem E---zoj 4062 Plants vs. Zombies
(补)解题思路:典型的最大化最小值,二分解法再加个贪心,详解看代码。
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=1e5+;
int T,n;LL m,l,r,mid,a[maxn],d[maxn];
bool check(LL x){
///二分总防御值,对于固定的防御值x,显然花园里的每个植物都要不小于x,因此贪心地从左往右寻找每一个防御值小于x的植物,对它和它右侧的植物反复浇水。
LL step=;
for(int i=;i<n;++i)d[i]=x/a[i]+(x%a[i]?1LL:0LL);///计算每个至少需要浇水的次数
for(int i=;i<n;++i){
if(!d[i]){
if(i!=n-)step++;///如果最后一棵植物需要浇水的次数为0,说明其防御值不小于当前x,则无需计数
}else{
step+=d[i]*2LL-1LL;///累加从i-1走到i这1步+浇完第i棵植物后花费的总步数为2*d[i]-1
d[i+]-=(d[i]-1LL);///第i+1棵植物需要浇水的次数要减去(d[i]-1)
if(d[i+]<)d[i+]=0LL;///如果d[i+1]<0,说明下一棵植物的防御值早已大于x,下次只需给它浇一次水(贪心向右移动一步)即可
}
if(step>m)return false;///如果所走步数超过m,则直接返回0,找较小的答案x
}
return true;
}
int main(){
while(~scanf("%d",&T)){
while(T--){
scanf("%d%lld",&n,&m);
for(int i=;i<n;++i)scanf("%lld",&a[i]);
l=1LL,r=1e18;
while(l<=r){///[l,r],退出条件是l>r,即l-1==r
mid=(l+r)>>;
if(check(mid))l=mid+1LL;///还有满足条件的最小值,继续最大化
else r=mid-1LL;///不满足条件,往左找
///cout<<l<<' '<<r<<endl;
}
printf("%lld\n",l-);///l-1相当于r,因为l会不断被最大化,直到超过r,则可以取l-1或者r就是最大化最小值答案
}
}
return ;
}
Problem J---zoj 4067 Books
解题思路:没有理解好题意,因此赛场上丧心病狂调了2小时的bug,罚时巨多QWQ,其实就是个简单的贪心=_=。题意:DreamGrid带的钱会在1~n本书中从前往后进行挑选,如果当前剩余的钱不小于第i本书的价格,那么他就一定会买这本书,并且用剩余的钱减去第i本书的价格,直到买完m本书,否则就跳过不买第i本书籍。首先要明确的一点:从其往后有序挑选!!!分三种情况:①当m==n时,显然为"Richman";②当m<cnt_0时,此时可以买比m多的书籍,显然为"Impossible";③当m>cnt_0时,首先肯定会挑选cnt_0个价格为0的书籍,然后从前往后在价格不为0的书籍里面贪心挑选(m-cnt_0)本书籍,再加上后面不为0的最小价格-1即为DreamGrid可带的最多零钱。
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;LL ans;//注意用long long
const int inf=0x3f3f3f3f;
const int maxn=1e5+;
int T,n,m,cnt_0,pos,mina,s[maxn];
int main(){
while(cin>>T){
while(T--){
cin>>n>>m;cnt_0=;
for(int i=;i<n;++i)cin>>s[i],cnt_0+=s[i]?:;//统计0的个数
if(m==n)puts("Richman");
else if(cnt_0>m)puts("Impossible");//如果0的个数大于m,肯定可以买更多的书籍,显然此时为不可能
else{
m-=cnt_0,mina=inf,pos=,ans=;//m为剩下要挑选的本数
while(m)s[pos]?ans+=s[pos++],m--:pos++;//贪心选择价格不为0的m本,然后在后面选择一本最小的价格(不为0)-1加上来即为最优答案
for(int i=pos;i<n;++i)//从连续选择pos个不为0的数后,再从后面选择不为0的最小价格
if(s[i])mina=min(mina,s[i]);
cout<<(ans+=mina-)<<endl;
}
}
}
return ;
}
Problem M---zoj 4070 Function and Function
解题思路:签道题,注意:输入的x为0时要单独考虑。
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int T,x,k,s[]={,,,,,,,,,};
int g(int y){
int ans=;
while(y){ans+=s[y%];y/=;}
return ans;
}
int main(){
while(~scanf("%d",&T)){
while(T--){
scanf("%d%d",&x,&k);
if(!x)x=k&?:;//x为0要单独考虑
else{
for(int i=;i<=k&&x;++i){
x=g(x);
if(!x){x=(k-i)&?:;break;}
}
}
printf("%d\n",x);
}
}
return ;
}
2018 ACM-ICPC亚洲区域赛(青岛)的更多相关文章
- 2015 ACM / ICPC 亚洲区域赛总结(长春站&北京站)
队名:Unlimited Code Works(无尽编码) 队员:Wu.Wang.Zhou 先说一下队伍:Wu是大三学长:Wang高中noip省一:我最渣,去年来大学开始学的a+b,参加今年区域赛之 ...
- Known Notation括号匹配类问题(2014年ACM/ICPC 亚洲区域赛牡丹江)
题意: 给你数字或 * 的串,你可以交换一个*和数字.在最前面添1.在一个地方插入*,问你使串满足入栈出栈的(RNP)运算法则. 思路: 引用:https://blog.csdn.net/u01158 ...
- Digit sum (第 44 届 ACM/ICPC 亚洲区域赛(上海)网络赛)进制预处理水题
131072K A digit sum S_b(n)Sb(n) is a sum of the base-bb digits of nn. Such as S_{10}(233) = 2 + 3 ...
- 第42届亚洲区域赛青岛站(2017icpc青岛)经验总结以及一些感想
上一次写这种东西还是天梯赛,当时打完心里也是挺激动的,然后我们队也没有去参加省赛,但是过了一段时间我还是从那里面恢复了出来.因为我当时确实还是很菜的,当时连个暴力都不会,看着自己仅过的那些百度的题目确 ...
- 2014ACM/ICPC亚洲区域赛牡丹江站汇总
球队内线我也总水平,这所学校得到了前所未有的8地方,因为只有两个少年队.因此,我们13并且可以被分配到的地方,因为13和非常大的数目.据领队谁oj在之上a谁去让更多的冠军.我和tyh,sxk,doub ...
- 2018 ACM-ICPC 亚洲区域赛青岛现场赛 —— Problem F. Tournament
题面:http://acm.zju.edu.cn/contest-materials/qd2018/qd2018_problems.pdf 题意: n个骑士决斗K轮 要求是每个骑士只能跟另外一个骑士决 ...
- 【2018 ICPC亚洲区域赛南京站 A】Adrien and Austin(博弈)
题意: 有一排n个石子(注意n可以为0),每次可以取1~K个连续的石子,Adrien先手,Austin后手,若谁不能取则谁输. 思路: (1) n为0时的情况进行特判,后手必胜. (2) 当k=1时, ...
- 【2018 ICPC亚洲区域赛徐州站 A】Rikka with Minimum Spanning Trees(求最小生成树个数与总权值的乘积)
Hello everyone! I am your old friend Rikka. Welcome to Xuzhou. This is the first problem, which is a ...
- 【2018 ICPC亚洲区域赛沈阳站 L】Tree(思维+dfs)
Problem Description Consider a un-rooted tree T which is not the biological significance of tree or ...
- 2014ACM/ICPC亚洲区域赛牡丹江现场赛总结
不知道怎样说起-- 感觉还没那个比赛的感觉呢?如今就结束了. 9号.10号的时候学校还评比国奖.励志奖啥的,由于要来比赛,所以那些事情队友的国奖不能答辩.自己的励志奖班里乱搞要投票,自己又不在,真是无 ...
随机推荐
- Tomcat安全配置规范
第1章 账号管理.认证授权 1.1 账号 1.1.1 共享帐号管理 安全基线项目名称 Tomcat共享帐号管理安全基线要求项 安全基线编号 SBL-Tomcat-01-01-01 安全基线项说明 ...
- awk基本语法
1 awk处理的对象 1.1 record awk处理时,默认会将文件按照换行符,分隔成record.默认分隔符是换行符. 1.2 filed 对于每个record,awk自动又分隔成filed.默认 ...
- URL 下载
package URL; import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import j ...
- IOS中UIActionSheet使用方法详解
一.初始化方法 - (instancetype)initWithTitle:(NSString *)title delegate:(id<UIActionSheetDelegate>)de ...
- Delphi语言最好的JSON代码库 mORMot学习笔记1(无数评论)
mORMot没有控件安装,直接添加到lib路径,工程中直接添加syncommons,syndb等到uses里 --------------------------------------------- ...
- 织梦DEDEcms首页调用文档整篇内容
DedeCMS在首页调用内容页中的整篇文章 织梦程序是一个很强大的程序,也有很多朋友使用织梦程序来做博客,想要像是在博客中一样能在首页中调用一整篇文章,其实在织梦程序中页可以很完美的实现这个功能. 在 ...
- css盒子模型详解一
什么是CSS的盒子模式呢?为什么叫它是盒子?先说说我们在网页设计中常听的属性名:内容(content).填充(padding).边框(border).边界(margin), CSS盒子模式都具备这些属 ...
- Silverlight DataBinding Converter:根据binding对象调整显示
Silverlight DataBinding Converter:根据binding对象调整显示 我希望写一系列关于Silverlight DataBinding的文章,分别讲解Silverligh ...
- windows下编译调试nginx
typora-copy-images-to: image windows下编译调试nginx linux使用gdb跟踪代码效率不高,在通过跟踪代码进行源码分析,与定位复杂逻辑问题时,如果有一个简单易用 ...
- 「LuoguP1238」 走迷宫
Description 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个数据来描 ...