题目链接

Rank:67 / 297  (不过榜单好像不是现场的榜单)

这次韩巍有课没来,我和程磊两个人做的,这次做的是女生赛,沃老师出的题,题面都是中文题,比较友好,题目都比较简单,都是思维题,一共做出来6个题(终于破了做不出第六题的魔咒......)

HDU 6544

签到题。

HDU 6545

签到题。写出前几项找规律就行了。

HDU 6550

签到题。可以发现,当第n+1个点是“圆心和某两个点之间的中点的连线与圆的交点”时面积最大,推公式就行了。

HDU 6553

推公式。第一次加6,第二次加7,第三次加8......

HDU 6554

只有当n和m都是4的倍数的时候才能拼凑成,至于怎么拼成,把样例一粘就行了。

HDU 6551

这个题我过的时候感觉还挺惊奇的......就是把这n个时间看作n个点,每个点的值就是把时刻转换成秒(如果小时大于等于12,那么就让h-=12),然后每个点连出去两条边,构成一个n个点n条边的环,然后初始时刻往环里切入,至于从哪切入,for一遍取最小值就是答案。刚才说的每个点都向外连两条边是连向离它最近的两个点连边,每条边的大小就是顺时针和逆时针到达那个点的的距离取最小值。说的不太清楚,反正就这样。

ACcode:

#include<bits/stdc++.h>
typedef long long ll;
const ll N=90000;
const ll inf=1e15+10;
using namespace std;
ll n,H,M,S;
ll h[N],m[N],s[N];
ll a[N],b[N];
int main()
{while(scanf("%lld",&n)!=EOF){scanf("%lld%lld%lld",&H,&M,&S);if(H>=12)H-=12;ll num=H*3600+M*60+S;for(int i=1;i<=n;i++){scanf("%lld%lld%lld",&h[i],&m[i],&s[i]);if(h[i]>=12)h[i]-=12;a[i]=h[i]*3600+m[i]*60+s[i];}ll ans=inf;if(n==1){if(num>a[1])ans=min(num-a[1],a[1]+12*3600-num);elseans=min(a[1]-num,num+12*3600-a[1]);double anss=ans;anss*=6;printf("%.2f\n",anss);continue;}sort(a+1,a+n+1);for(int i=1;i<=n-1;i++)b[i]=min(a[i+1]-a[i],a[i]+12*3600-a[i+1]);b[n]=min(a[n]-a[1],a[1]+12*3600-a[n]);ll sum=0;for(int i=1;i<=n;i++)sum+=b[i];for(int i=1;i<=n;i++){if(a[i]>num){if(i==1)ans=min(ans,min(a[i]-num,num+12*3600-a[i])+sum-max(b[1],b[n]));elseans=min(ans,min(a[i]-num,num+12*3600-a[i])+sum-max(b[i],b[i-1]));}else{if(i==1)ans=min(ans,min(num-a[i],a[i]+12*3600-num)+sum-max(b[1],b[n]));elseans=min(ans,min(num-a[i],a[i]+12*3600-num)+sum-max(b[i],b[i-1]));}}double anss=ans;anss*=6;printf("%.2f\n",anss);}return 0;
}

HDU 6547

树链刨分+线段树区间开方区间求和模板题。

详见一下两篇博客:

https://blog.csdn.net/flyzer/article/details/102487521

https://blog.csdn.net/flyzer/article/details/102477838

HDU 6546

啊,这个题就是贪心一下(感觉这场题都很妙)。

f(x+1)-f(x)=a*(x+1)*(x+1)+b*x+c-(a*x*x+b*x+c)=a*(2*x+1)+b。

然后用set存,每次贪心的选择增加的最少的那个。详见代码。

#include<bits/stdc++.h>
#define mem(a,b) memset((a),b,sizeof(a))
#define de cout<<endl<<endl<<endl
#define IT set<nodee>::iterator
typedef long long ll;
const ll inf=0x3f3f3f3f;
const ll N=100010;
using namespace std;
ll n,m;
struct node{ll a,b,c;
}e[100010];
struct nodee{ll id;ll num;bool operator < (const nodee& bb)const{if(num!=bb.num)return num<bb.num;if(num==bb.num)return id<bb.id;//这里这么写是因为:不能有重复的元素,因为set是去重的,但我不想让它去重//return num<bb.num;}
}d[100010];
ll cnt[100010];
set<nodee> s;
int main()
{mem(cnt,0);while(scanf("%lld%lld",&n,&m)!=EOF){for(ll i=1;i<=n;i++)scanf("%lld%lld%lld",&e[i].a,&e[i].b,&e[i].c);for(ll i=1;i<=n;i++){d[i].id=i;d[i].num=e[i].a*(2*1+1)+e[i].b;s.insert(d[i]);cnt[i]++;}m-=n;while(m--){IT it=s.begin();ll id=(*it).id;cnt[id]++;s.erase(it);nodee itt=(*it);itt.num=e[id].a*(cnt[id]*2+1)+e[id].b;s.insert(itt);}ll ans=0;for(ll i=1;i<=n;i++)ans+=e[i].a*cnt[i]*cnt[i]+e[i].b*cnt[i]+e[i].c;printf("%lld\n",ans);for(int i=1;i<=n;i++)cnt[i]=0;}return 0;
}

HDU 6549

额,dp,尽管沃老师在camp上讲过了,当时我好像会了,然后又不会了......

这个题有点奇葩,同样的代码,交几遍,有时候AC,有时候T,好像其他人对这个题也是这样。

这篇博客讲的挺好的:https://www.cnblogs.com/kangkang-/p/11642022.html

下面是我有时候AC有时候T的代码:

#include<bits/stdc++.h>
#define mem(a,b) memset((a),b,sizeof(a))
#define de cout<<endl<<endl<<endl
typedef long long ll;
const int inf=1e8;
const int N=100010;
using namespace std;
int n,l,k;
int dp[N][28][12],pre[N][28][12],suf[N][28][12];
char a[N];
void init()
{for(int i=0;i<=n+1;i++)for(int j=0;j<=27;j++)for(int p=0;p<=k+1;p++)dp[i][j][p]=inf,pre[i][j][p]=inf,suf[i][j][p]=inf;
}
int main()
{scanf("%d%d%d",&n,&l,&k);scanf("%s",a+1);init();for(int j=1;j<=26;j++){if(a[1]-'a'+1==j)dp[1][j][1]=0;elsedp[1][j][1]=1;}for(int j=1;j<=26;j++)for(int p=1;p<=k;p++)pre[1][j][p]=min(pre[1][j-1][p],dp[1][j][p]);for(int j=26;j>=1;j--)for(int p=1;p<=k;p++)suf[1][j][p]=min(suf[1][j+1][p],dp[1][j][p]);for(int i=2;i<=n;i++){for(int j=1;j<=26;j++)for(int p=1;p<=k;p++){if(a[i]==j+'a'-1)dp[i][j][p]=min(min(dp[i-1][j][p],pre[i-1][j-1][p-1]),suf[i-1][j+1][p-1]);else{int q=max(i-l,1);dp[i][j][p]=min(min(dp[q][j][p],pre[q][j-1][p-1]),suf[q][j+1][p-1])+1;}}for(int j=1;j<=26;j++)for(int p=1;p<=k;p++)pre[i][j][p]=min(pre[i][j-1][p],dp[i][j][p]);for(int j=26;j>=1;j--)for(int p=1;p<=k;p++)suf[i][j][p]=min(suf[i][j+1][p],dp[i][j][p]);}int ans=inf;for(int j=1;j<=26;j++)for(int p=1;p<=k;p++)ans=min(ans,dp[n][j][p]);printf("%d\n",ans);return 0;
}

2019 CCPC 女生赛相关推荐

  1. 第二届CCPC女生赛 粗略题解(要做重现的不要看哦)

    因为再不全力投入华为软件精英挑战赛就来不及了! 而且直播时讲过题了,所以只能粗略写一个题解,希望大家包涵>.< 基本可以参考代码,可以画图模拟加思考脑补其原理与过程23333~~ 会后续有 ...

  2. 2019 CCPC 女生专场重现赛 Circle

    Problem Description 在半径为 1 的圆上有 n 个点,它们也是圆的 n 等分点,将每个相邻的 n 等分点相连,组成了一个正 n边形,现在你可以在圆上再增加一个点,使得新的 n + ...

  3. 秦皇岛 2019 CCPC区域赛 部分代码

    Decimal Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Sub ...

  4. 2018 ccpc 女生赛 经验总结

    去年拿了铜首,今年拿了银末,好了,恭喜我真的进步了一名!hhh 今年去比赛之前,往年和我组队的一个妹子要去看周杰伦的演唱会,同时,我们俱乐部只有一个学妹,于是我千辛万苦邀请了大三的学姐,横跨三个年级才 ...

  5. 2019 CCPC 河南省赛A:最大下降矩阵(dp)

    题目描述 我们称一个矩阵是下降矩阵,当且仅当,矩阵的每一列都是严格下降的.很显然,这个要求很苛刻,大多数矩阵都无法满足.但是显然如果消去一些行,一定可以使得这个矩阵变成下降矩阵. 现在给出一个n行m列 ...

  6. 2019CCPC女生赛总结

    赛后感言 这大概真的是我最后一场ACM现场赛了吧,每一次参加现场赛后都是难过和遗憾-(文末附上照片) 前几天刚毕业答辩结束,明天就要上班了.昨天来到南京参加CCPC女生赛,今天上午8:30-9:30热 ...

  7. 2019CCPC江苏南京女生赛 | 总结

    今年的女生专场在江苏南京晓庄学院举办 (夸一波 主办方周老师好可爱~~ 桌牌设计的很好看 志愿者小姐姐也很热心~ 第一次见到了wls.谈姐姐等巨巨 很难得在开头放队友友链 因为这一篇说的实在是太废话了 ...

  8. Jumping Monkey(CCPC网络赛重赛)

    Jumping Monkey(CCPC网络赛重赛) 题意: n个点的树,每个点有一个不同的值aia_iai​.现在一个猴子在树上,这个猴子从点u跳到点v当且仅当ava_vav​是u到v最短路径上的最大 ...

  9. (四面体)CCPC网络赛 HDU5839 Special Tetrahedron

    1 CCPC网络赛 HDU5839 Special Tetrahedron 2 题意:n个点,选四个出来组成四面体,要符合四面体至少四条边相等,若四条边相等则剩下两条边不相邻,求个数 3 思路:枚举四 ...

最新文章

  1. java动态执行逻辑_动态执行代码逻辑
  2. memcached 与 mysql_memcached 和 MySQL 的 query ?
  3. 看新闻的时间用的太多了
  4. 基于分层注意力网络的方面情感分析
  5. 彻底下载32位office2010
  6. CICD详解(一)——概念和原理
  7. javascript的offset、client、scroll使用方法
  8. [转]技术路线的选择重要但不具有决定性
  9. JavaScript高级程序设计学习总结一
  10. 《整理的艺术》读书笔记
  11. 【Linux / 数据库】项目实战:tpshop项目在Linux系统环境搭建
  12. 清华大学计算机跨考攻略
  13. 色彩可视化 | 30DayMapChallenge
  14. 多功能跑步机外观及结构设计
  15. 光模块价格由带宽还是距离决定_佛山单模光模块价格
  16. Excel之VBA编程常用语句300句
  17. element-联动下拉框
  18. 安卓 每日一题 2019年9-12月问题及答案
  19. 怎么检查计算机启动程序,如何查看电脑开机启动项
  20. 虚拟网口获取不到ipv6服务器,解决“Win 10 ipv6无网络权限/无Internet连接权限”问题...

热门文章

  1. 506分理科报计算机有什么大学,2021年理科506分能上什么大学,高考理科506分能考什么大学(100所)...
  2. IplImage与BMP相互转换
  3. anchor iview 悬浮_iView3.x Anchor(锚点)组件 导航锚点
  4. 后台登录密码绕过+sql注入+一句话木马 实验演示(盾灵)
  5. 双系统启动不了ubuntu解决办法
  6. 从触宝号码助手遇到微信 看APP平台化是大势所趋还是随波逐流
  7. minio 简介、中文文档、中英对照文档 下载
  8. 看看各个程序员是如何猎捕大象的?
  9. android recovery 模式吗,安卓(Android)手机Recovery模式各项中英文对照详细说明
  10. 为了你能愉快地积累Python项目,我做了一份手把手的GitHub教程