高弗雷勋爵

这个题很水,但是半个小时都读错题,就很伤了,先把敌人的血量从小到大排序,用一个sum记录我当前已经扣除的血量,如果对于一个敌人,hp高于我的sum,我就看我还需要多少发子弹res,使得sum+res*2>=hp即可,然后杀死一个敌人,答案就加res,我又获得一发子弹(子弹继续伤害暂时理解为奖励获得一发子弹),先别急着sum+=2,先杀死后面我不用奖励的子弹也能杀死的敌人,再将sum+=2即可。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<cmath>
#include<vector>
#include<set>
#include<queue>
#include<stack>
#include<cstdlib>
using namespace std;
typedef long long ll;
const int maxn=1e5;
int a[maxn];
int main()
{char c;while(~scanf("%d",&a[1])){int tot=1;while(~scanf("%c",&c)&&c!='\n'){tot++;scanf("%d",&a[tot]);}int ans=0;sort(a+1,a+1+tot);int sum=0,flag=0;for(int i=1;i<=tot;i++){if(a[i]<=sum)continue;//不用奖励的子弹也能杀死 if(flag)sum+=2,flag=0;//用奖励的子弹 if(a[i]<=sum)//奖励的子弹把敌人杀死 {flag=1;//标记是否有奖励的子弹 continue;}int t=(a[i]-sum);int res=t/2;if(t%2)res++;sum+=res*2;flag=1;ans+=res;}printf("%d\n",ans);}
}

打羽毛球的小爱同学

吉老师出的杭电6425原题(多校9),首先不看a只看b,c,d,因为a无球无拍,对于b,c,d,可以一个人都不用来,初始ans=1,然后b只有拍,从b中任意组合都打不了球,因此ans+=2^b-1,为什么减一,初始化就算了一个人都不用来,因此b个人的组合去掉一个人都不来的情况,同理,c只有球,任意c的组合也打不了球,ans+=2^c-1,d有球有拍,但是d只能来一个人也是不行的,所以ans+=d,两球一拍或者只有一球一拍也不行,所以ans+=(b+d)*(2^c-1)。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e7+10;
const int mod=998244353;
int n,m,a,b,c,d;
ll p[maxn];
int main()
{p[0]=1;for(int i=1;i<maxn;i++)p[i]=p[i-1]*2%mod;while(~scanf("%d%d%d%d",&a,&b,&c,&d)){ll ans=1;ans+=p[b]-1;ans+=p[c]-1;ans+=(b+d)*(p[c]-1)%mod;ans=(ans+d)%mod;ans=ans*p[a]%mod;printf("%lld\n",ans);   }
}

共边三角形

这个题是hdu6447(ccpc网络赛)的升级版,思路一模一样,不过这题的角度排序比较恶心。

分析一下这张图,我们先按照角度k1从小到大排序(三角形顶点和x轴以及原点构成的角),定义角度k2为三角形顶点和x轴以及点(n,0)构成的角度,我们按照k1从小到大处理三角形,先看A,A里面显然没有三角形,d[ A ]答案就是1,接下来看B,因为只有A的k2小于B的k2,d[ B ]=d[ A ]+1=2,看C也是一样,看E也是d[ E ]=d[ A ]+1=2,再看F,发现E和A的k2都小于F,那我们就看d[ A ]和d[ E ]谁大,显然d[ E ]大,那么d[ F ]=d[ E ]+1=3。该题数据小,可以用暴力过(n*n复杂度),若是数据大,可用线段树过(nlogn复杂度),线段树维护区间最大的d[ i ]值。

线段树代码:(很丑陋...)

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=1e5;
int tree[maxn*4];
ll n;
struct node
{ll x,y;int id,num;bool operator<(const node& t)const{if(x>n){if(t.x<=n)return false;return y*(t.x-n)>t.y*(x-n);}else{if(t.x>n)return true;return y*(n-t.x)<t.y*(n-x);}}bool operator==(const node& t)const{return (n-x)*t.y==(n-t.x)*y;}
}b[maxn];
struct node1
{ll x,y;int id,pos,v;bool operator<(const node1& t)const{return t.x*y<t.y*x;}bool operator==(const node1& t)const{return x*t.y==y*t.x;}
}a[maxn],V[maxn];
int d[maxn];
int query(int o,int l,int r,int k)
{if(k==0)return 0;if(r<=k)return tree[o];int ls=o*2,rs=o*2+1,m=(l+r)/2;int res=0;res=max(res,query(ls,l,m,k));if(k>m)res=max(res,query(rs,m+1,r,k));return res;
}
void update(int o,int l,int r,int k,int v)
{if(l==r){tree[o]=max(tree[o],v);return;}int ls=o*2,rs=o*2+1,m=(l+r)/2;if(k<=m)update(ls,l,m,k,v);else update(rs,m+1,r,k,v);tree[o]=max(tree[ls],tree[rs]);
}
int main()
{int k;while(~scanf("%lld",&n)){scanf("%d",&k);for(int i=1;i<=k;i++){int x,y;scanf("%d%d",&x,&y);b[i].x=x,b[i].y=y,b[i].id=i;a[i].x=x,a[i].y=y,a[i].id=i;}sort(a+1,a+1+k);sort(b+1,b+1+k);int sz=0,tot=0;b[1].num=++sz;for(int i=2;i<=k;i++)if(b[i]==b[i-1])b[i].num=b[i-1].num;else b[i].num=++sz;for(int i=1;i<=k;i++)d[b[i].id]=b[i].num;memset(tree,0,sizeof(tree));for(int i=1;i<=k;i++){if(a[i]==a[i-1]){V[++tot]=a[i];int pos=d[a[i].id];int v=query(1,1,k,pos-1);V[tot].pos=pos,V[tot].v=v+1;}else{for(int j=1;j<=tot;j++)update(1,1,k,V[j].pos,V[j].v);tot=0;V[++tot]=a[i];int pos=d[a[i].id];int v=query(1,1,k,pos-1);V[tot].pos=pos,V[tot].v=v+1;        }}for(int j=1;j<=tot;j++)update(1,1,k,V[j].pos,V[j].v);printf("%d\n",tree[1]);}
}

小米全国高校编程大赛 正式赛题解相关推荐

  1. 全国计算机技术大赛获奖名单,【大科·数院】荣光数院,满载而归——2019年全国计算机设计大赛省赛成绩斐然...

    原标题:[大科·数院]荣光数院,满载而归--2019年全国计算机设计大赛省赛成绩斐然 2019年全国计算机设计大赛辽宁省决赛由辽宁省教育厅.辽宁省财政厅主办,沈阳师范大学承办,于2019年5月17日- ...

  2. 广州校区2015android传智,2018年传智播客广州校区“黑马杯”高校编程大赛圆满落幕...

    为了进一步丰富校园文化生活,充分展示大学生良好的精神面貌,培养学生IT创新与实践能力,提高大学生综合素质和程序编码水平. 2018年11月11日,传智播客广州校区首届"黑马杯"高校 ...

  3. 长沙理工计算机竞赛黑马,2018年传智播客首届“黑马杯”高校编程大赛圆满落幕...

    原标题:2018年传智播客首届"黑马杯"高校编程大赛圆满落幕 传智播客首届"黑马杯"高校编程大赛于2018年9月10日正式举办.本次大赛是面向高校大学生开放的I ...

  4. 1985年全国计算机编程大赛,关于举办2021年“中国高校计算机大赛-团体程序设计天梯赛”校内选拔赛的通知...

    程序设计能力是大学生利用计算机分析问题.解决问题的重要基础能力.为了推进该能力的培养,同时培养学生的团队合作精神,提高其综合素质,丰富校园学术气氛,促进校际交流,提高全国高校程序设计课程教学水平,教育 ...

  5. 中国高校计算机大赛(天梯赛)官网,我校获2019年“中国高校计算机大赛-团体程序设计天梯赛”全国三等奖...

    2019年3月30日,由北京大学等283所高校.775支队伍.7750人参加的第四届中国高校计算机大赛-团体程序设计天梯赛胜利举行.我校计算机科学与技术学院代表队进行了长达3小时紧张编程.奋勇拼搏,最 ...

  6. 2017全国高校计算机大赛,我校在2017中国高校计算机大赛中获全国高校银奖

    本网讯(通讯员 朱凌)近日,2017中国高校计算机大赛-团体程序设计天梯赛决赛在杭州举行.来自北京大学.浙江大学.电子科技大学.西安交通大学等全国206所高校组成的488支队伍近5000名学生参赛.我 ...

  7. 第26届中学生计算机大赛,南京中学生自编APP获全国高校计算机大赛一等奖

    英文打字速度和正确率是国际高中的学生需要经常练习的一项能力,在各种标化考试中非常重要.目前,练习.测试这项能力比较普遍的软件乱码频现."作弊"诀窍,让其功能性大打折扣.近日,南外仙 ...

  8. 全国高校人工智能高级研修班正式启动招募,互动式教学期待你的加入

    通     知 各高校教务处.各相关院系负责人: 依据<教育部高等学校教学指导委员会章程>规定,教育部高等学校教学指导委员会的任务之一是组织师资培训,沟通信息,交流教学课程建设和教学改革经 ...

  9. 中国高校计算机大赛(天梯赛)官网,中国高校计算机大赛——团体程序设计天梯赛校内辅导通知...

    程序设计能力是大学生利用计算机分析问题.解决问题的重要基础能力.为了推进该能力的培养,提高综合素质,丰富校园学术气氛,在教务处和信息学院的支持下,拟组队参加 2018 年3月至5月举办的第三届&quo ...

最新文章

  1. VScode配置CMAKE文件
  2. hdoj-2039-三角形
  3. 隐马尔科夫模型HMM自学 (3)
  4. 解决windows系统80端口被占用问题
  5. c# 整数类型转byte_C#中数据类型的整数类型
  6. python win10 连接hive_使用win10+python3.5+impyla 连接大数据平台hive表的步骤与问题解决...
  7. java w3c xml_org.w3c.dom(java dom)解析XML文档
  8. mysql 126_MySQL教程126-MySQL事务隔离级别
  9. 如何检查Windows网络通信端口占用
  10. 在不安装oracle,在linux上安装oracle 10g上还是不顺利
  11. selenium IDE下载及使用
  12. 飞机大战游戏微信小程序源码
  13. 从零开始学写脚本【第一天】
  14. 将一个数组划分成总和相等的两部分
  15. Asp.net Web Api开发Help Page配置和扩展
  16. spotlight ios_如何禁用iOS 10的Spotlight搜索历史记录
  17. 中国经济刺激计划将提振大宗商品
  18. 疫情之下要不要转行?
  19. Send Automatic Out Of Office replies from Outlook
  20. 查看mysql数据库所占内存,以及每个表所占内存

热门文章

  1. 平面机构创意组合及分析实验QY-JX09
  2. Word2vec简单整理
  3. MTK6735 android 驱动修改模块
  4. 子串子序列常见算法面试题
  5. 直播公司转让,转让直播文网文-网络文化经营许可证
  6. vue输入空格符 以及空字符串在页面不显示或者只显示一个的问题
  7. C# 关于类的继承的总结
  8. 阿里企业云邮箱怎么申请?企业云邮箱登录界面在哪?
  9. Java实现 蓝桥杯 算法训练 Beaver's Calculator
  10. HEVC视频编码技术概述