2018 湘潭邀请赛 题解 A C F G K .其它题解,后续添加

A 题

没啥好讲的,签到题 从后面往前面数,大于个数的时候直接输出就行了。

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<cstdio>
#include<cmath>
#include<queue>
#include<map>
#include<set>
using namespace std;
typedef long long LL;
typedef unsigned long long uLL;const long long mod=1e9+7;
const int maxn=2e5+25;
const int INF=0x7fffffff;
const int inf=0x3f3f3f3f;
const double eps=1e-8;int main() {int n,a[maxn];long long sum=0;while(scanf("%d",&n)!=EOF) {sum=0;for(int i=0; i<=n; i++) {scanf("%d",&a[i]);}for(int i=n; i>=0; i--) {sum+=a[i];if(sum>=i) {printf("%d\n",i);break;}}}return 0;
}

C题

题目的意思就是找一个区间比 一个数大的数的个数要不小于这个数。求这个数最大是多少。

这一题就是一个区域树(大佬们告诉我也叫主席树,然而我这个菜鸡不知道啥是主席树),一般线段树维护的是一个值。这题每个节点维护的是一个数组,这个题没有修改只有查询。

1.     每次查询在包含这个区间就二分查找大于这个数的个数,

2.     如果 不包含返回零。

3.     如果有一部分在这个区间就继续往下找,然后返回两个儿子的个数和。

复杂度是(nlogn+m log^3 n);

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<cstdio>
#include<cmath>
#include<queue>
#include<map>
#include<set>
using namespace std;
typedef long long LL;
typedef unsigned long long uLL;const long long mod=1e9+7;
const int maxn=1e7+25;
const int INF=0x7fffffff;
const int inf=0x3f3f3f3f;
const double eps=1e-8;
const int sz=(1<<18)-1;int n,m;
int a[maxn];
vector<int> dat[sz];void init(int k,int l,int r) {dat[k].clear();if(r-l==1)dat[k].push_back(a[l]);else {int lch=k*2+1,rch=k*2+2,md=(l+r)/2;init(lch,l,md);init(rch,md,r);dat[k].resize(r-l);merge(dat[lch].begin(),dat[lch].end(),dat[rch].begin(),dat[rch].end(),dat[k].begin());}
}int query(int i,int j,int x,int k,int l,int r) {if(j<=l||r<=i)return 0;else if(i<=l&&r<=j) {return dat[k].end()-lower_bound(dat[k].begin(),dat[k].end(),x);} else {int lch=2*k+1,rch=2*k+2,md=(l+r)/2;return query(i,j,x,lch,l,md)+query(i,j,x,rch,md,r);}
}int main() {while(~scanf("%d%d",&n,&m)) {for(int i=0; i<n; i++) {scanf("%d", &a[i]);}init(0,0,n);int l,r,R,L,x;for(int i=0; i<m; i++) {scanf("%d%d",&l,&r);l--;L=1;R=n;while(R-L>1) {x=(R+L)/2;int c=query(l,r,x,0,0,n);if(c>=x)L=x;else R=x;}printf("%d\n",L);}}return 0;
}

F题

一个sort 就过了没啥难的,就是注意值爆了double 要用long double。

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<cstdio>
#include<cmath>
#include<queue>
#include<map>
#include<set>
using namespace std;
typedef long long LL;
typedef unsigned long long uLL;const long long mod=1e9+7;
const int maxn=1e3+25;
const int INF=0x7fffffff;
const int inf=0x3f3f3f3f;
const double eps=1e-8;struct two {long double val;int id;
} k[maxn];bool cmp(two & a,two &b) {if(a.val==b.val)return a.id<b.id;return a.val<b.val;
}int main() {int n;long long a,b,c,d;while(~scanf("%lld",&n)) {for(int i=0; i<n; i++) {scanf("%lld%lld%lld",&a,&b,&c);long double t=0;t=a*1.0;t+=b*1.0;t=t/(t+c*1.0);k[i].id=i;k[i].val=t;}sort(k,k+n,cmp);for(int i=0; i<n; i++) {printf("%d%c",k[i].id+1,i+1==n?'\n':' ');}}return 0;}

G题

找规律,这个变化可以保证 两个a,b一定可以消去,a,b,的位置可以交换,所以题目就变成了找两个字符串对应的,c ,左右两边的a,b奇偶是不是一样的。

1.     如果c个数不相等直接输出no;

2.     相等 判断 ,以c为分隔符的区间 a,b,的奇偶相不相等。

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<cstdio>
#include<cmath>
#include<queue>
#include<map>
#include<set>
using namespace std;
typedef long long LL;
typedef unsigned long long uLL;const long long mod=1e9+7;
const int maxn=1e4+25;
const int INF=0x7fffffff;
const int inf=0x3f3f3f3f;
const double eps=1e-8;struct two {int x,y;
} k[maxn],k2[maxn];int main() {char a[maxn],b[maxn];int flag,c;while(~scanf("%s%s",&a,&b)) {int la=strlen(a),lb=strlen(b);memset(k,0,sizeof(k));memset(k2,0,sizeof(k2));c=0;flag=1;int pa,pb;pa=pb=0;for(int i=0; i<la; i++) {if(a[i]=='a') {k[pa].x=(k[pa].x+1)%2;}if(a[i]=='b') {k[pa].y=(k[pa].y+1)%2;}if(a[i]=='c') {pa++;c++;}}for(int i=0; i<lb; i++) {if(b[i]=='a') {k2[pb].x=(k2[pb].x+1)%2;}if(b[i]=='b') {k2[pb].y=(k2[pb].y+1)%2;}if(b[i]=='c') {pb++;c--;}}int l=max(pa,pb);if(c!=0)flag=0;for(int i=0; i<=l; i++) {if(k[i].x!=k2[i].x||k[i].y!=k2[i].y) {flag=0;}if(!flag)break;}if(flag)printf("Yes\n");else printf("No\n");}return 0;
}

K题

就是一个找因子的题 2018 因子 1 ,2018 ,2 ,1009;

所以

1.  所有的 奇数可以和所有的 2018的倍数匹配。

2.  2018 可以和所有的数匹配,

3.  偶数 可以和所有 1009 的倍数匹配

4.  1009 可以和所有 偶数匹配;

注意一下,其中重复算的就行。

AC代码:

#include<iostream>#include<algorithm>#include<cstring>
#include<string>
#include<vector>
#include<cstdio>
#include<cmath>
#include<queue>
#include<map>
#include<set>
using namespace std;
typedef long long LL;
typedef unsigned long long uLL;const long long mod=1e9+7;
const int maxn=2e5+25;
const int INF=0x7fffffff;
const int inf=0x3f3f3f3f;
const double eps=1e-8;int main() {long long sum=0,a,b,c,d;while(scanf("%lld%lld%lld%lld",&a,&b,&c,&d)!=EOF) {sum=0;long long x1,x2,x1009,x2018,y1,y2,y1009,y2018;x2=x1=(b-a+1)/2;if((b-a)%2==0) {if(a&1)x1++;else x2++;}x1009=(a%1009==0)+b/1009-a/1009;x2018=(a%2018==0)+b/2018-a/2018;y2=y1=(d-c+1)/2;if((d-c)%2==0) {if(c&1)y1++;else y2++;}y1009=(c%1009==0)+d/1009-c/1009;y2018=(c%2018==0)+d/2018-c/2018;sum+=(x1-x1009+x2018)*y2018;sum+=x2018*(y1+y2);sum+=(x2-x2018)*(y1009);sum+=(x1009-x2018)*y2;printf("%lld\n",sum);}return 0;
}

2018 湘潭邀请赛 部分题解相关推荐

  1. 2018年湘潭邀请赛小节题解—暨鶸第一次参赛

    2018年"三盟科技杯"中国大学生程序设计竞赛(湖南) 比赛小节:  说说结果,铜首没能拿银,不过因为第一次参加正式ACM现场赛感觉还okey.  长理一队怒拿金是真的666!%日 ...

  2. 2018 湘潭邀请赛 K.2018

    K. 2018 2018 的约数只有 4 个,可以算出区间内和 2018 的最⼤公约数是 1, 2, 1009, 2018 的各有⼏个,之后 4 × 4 枚举统计答案. #include <io ...

  3. 18湘潭邀请赛总结(打铁)

    题目链接(hdu复赛) 2018年湘潭邀请赛,在湘大举行,当时一起打的过去的,因为没出市就方便点.第一次参加现场赛,首先反省一下自己,比赛前算法先不说(没有好好搞过),就连普通的题,数学性质的题都很少 ...

  4. [2016湘潭邀请赛 A. 2016] 大数取模+循环节

    [2016湘潭邀请赛 A. 2016] 大数取模+循环节 1. 题目链接 XTU OnlineJudge : [2016湘潭邀请赛 A. 2016] 2. 题意描述 [图片看不清可以放大.] 给定一个 ...

  5. CCPC之湘潭邀请赛

    CCPC湘潭邀请赛 热身赛 5月11号,当天下午是打热身赛,四道题目,我本来以为是英文题,还特意让钢哥回去拿了下字典,可没想到热身赛是中文题,幸苦钢哥白跑一趟了. 再来说题目吧,几个题目意思都比较明了 ...

  6. 2016湖南湘潭邀请赛 - 2019牛客国庆集训派对day6

    2016湖南湘潭邀请赛 - 2019牛客国庆集训派对day6 A - 2016 题意:求一个2阶矩阵的n次幂,对7取模的结果 思路:可以用上面介绍的10进制倍增的方法.也可以用 n 对2016取模,还 ...

  7. 2017湘潭邀请赛E-Partical Sum | 绝对值的特性

    Partical Sum ####题意 给定一个长为n的数组,找到m组(L,R),L表示区间的起点,R表示区间的终点,使得| ∑ L R a i \sum_{L}^R a_i ∑LR​ai​| - C ...

  8. 2021CCPC湘潭邀请赛复盘

    写在前面 刚到长沙,补完作业.自然选择号八题第六,算是正常发挥,毕竟邀请赛没什么强队来打.不过赛前确实想过拿个奖杯回去- 再接再厉吧. 周六先去长沙理工打了蓝桥杯国赛,感觉比之前要简单,甚至比第一场省 ...

  9. 2018深信服java笔试题_深信服2018春招笔试题解

    原文链接:点这儿. 深信服还是一如既往的"懒",2018秋招的5个编程题在本次春招出现了三道,然后添加了一道新的编程题,且选择题和填空题基本与秋招的雷同,看来之前没看深信服2018 ...

最新文章

  1. 《C++游戏编程入门(第4版)》——1.8 Lost Fortune简介
  2. 美团第一位前端工程师竟是转行程序员!关于他的10年技术生涯
  3. sql server 连接工具_SQL on file 工具
  4. android系统电量优化,基于Android系统网络耗电量优化方法的.pdf
  5. 自定义弹框(手机端),定时消失
  6. 【干货】仪器仪表常用术语汇总
  7. matlab程序中,如何解决矢量长度必须相同的问题
  8. Spring和JSF集成:国际化和本地化
  9. html图像特征提取,图像识别之图像特征提取
  10. Error: Plugin/Preset files are not allowed to export objects, only functions……
  11. Android深入四大组件(一)应用程序启动过程
  12. 群星服务器id不显示,群星代码([群星]求助,领袖特性代号怎么查看啊 NGA玩家社区)...
  13. c# PropertyGrid 自定义属性排序
  14. 从零开始系统学习区块链
  15. MySQL性能调优的10个方法
  16. 基于FPGA的卷积神经网络加速器_余子健
  17. kotlin serialization 使用指南(一)
  18. linux获取pc指针地址,为什么pc可以看成使程序存储器的地址指针
  19. 设计递归函数模拟汉诺塔游戏
  20. 国内10大著名珠宝品牌

热门文章

  1. 智能触觉驱动器市场现状及未来发展趋势
  2. XD如何将喜欢的组件加入资源
  3. TTP224/TTP224N 4 键触摸检测 IC
  4. Django2.0+Bootstrap书籍管理系统
  5. Linux As4 u4 oracle10R2 安装
  6. python极坐标图polar角度统计可视化
  7. 新手入门新电脑安装配置orb slam2 一步到位不踩坑(ubutun18.04)
  8. 互联网舆情监测系统的发展阶段,TOOM互联网舆情监测系统有哪些?
  9. 企业微信审批功能有哪些?
  10. 【IOT数据库】tdengine学习使用,非常方便,速度十分快,开源IOT数据库,支持集群方式进行部署,支持分区,支持Topic,流式计算