正题

比赛链接:https://ac.nowcoder.com/acm/contest/1221


成绩



总结

好难,就拿了一些水题分


T1:Forsaken喜欢数论\texttt{T1:Forsaken喜欢数论}T1:Forsaken喜欢数论

题目大意

f(i)f(i)f(i)表示iii的最小质因子,求∑i=2nf(i)\sum_{i=2}^nf(i)∑i=2n​f(i)

解题思路

线性筛就是用每个数的最小质因子把这些数筛掉,所以筛的时候统计就好了

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
ll n,cnt,prime[6893911*3],ans;
bool v[10000001*3];
int main()
{scanf("%lld",&n);v[1]=1;for(ll i=2;i<=n;i++){if(!v[i]) prime[++cnt]=i,ans+=i;for(ll j=1;j<=cnt&&i*prime[j]<=n;j++){v[prime[j]*i]=1;ans+=prime[j];if(!(i%prime[j])) break;}}printf("%lld",ans);
}

T2:Forsaken喜欢字符串\texttt{T2:Forsaken喜欢字符串}T2:Forsaken喜欢字符串

题目大意

对于一个字符串的子串的价值是在其他字符串里有多少个和它相同的子串。

给nnn个字符串,每次询问第xxx个字符串长度为lenlenlen的子串的价值之和是多少

解题思路

我们发现每个字符串的长度都很小,所以我们可以暴力字符串hash+maphash+maphash+map库来统计

要注意的是不能算上自己这个字符串,所以每次询问时在开一个mapmapmap,再用两个相减

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
const int N=5e4+10;
int n,k,m;
map<int,int> v,now;
char s[N][6];
int main()
{scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){scanf("%s",s[i]);for(int l=0;l<k;l++){int z=0;for(int r=l;r<k;r++){z+=s[i][r]-'a'+1;z*=27;v[z]+=r-l+1;}}}scanf("%d",&m);while(m--){int x,len;scanf("%d%d",&x,&len);now.clear();int ans=0;for(int l=0;l<k;l++){int z=0;for(int r=l;r<k;r++){z+=s[x][r]-'a'+1;z*=27;now[z]+=r-l+1;}}for(int l=0;l<k;l++){int z=0;if(l+len>k) continue;for(int r=l;r<min(l+len,k);r++)z+=s[x][r]-'a'+1,z*=27;ans+=v[z]-now[z];}printf("%d\n",ans);}
}

T3:Forsaken给学生分组\texttt{T3:Forsaken给学生分组}T3:Forsaken给学生分组

题目大意

将nnn个数分为kkk组,每组的价值是最大的数减去最小的数。求最大价值和

解题思路

显然我们可以贪心选取,需要注意的是若k>n2k>\frac{n}{2}k>2n​,那么有些就得单独一组

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1e5+10;
ll n,k,a[N],ans;
int main()
{scanf("%lld%lld",&n,&k);for(ll i=1;i<=n;i++)scanf("%lld",&a[i]);sort(a+1,a+1+n);if(k>n/2) k=n-k;for(ll i=1;i<=k;i++)ans+=a[n-i+1]-a[i];printf("%lld",ans);
}

T4:Forsaken喜欢正方形\texttt{T4:Forsaken喜欢正方形}T4:Forsaken喜欢正方形

题目大意

求四个点能不能组成正方形,或者微调之后能不能组成正方形。

解题思路

考试的时候直接匹配了444条边相等(没有判断菱形)就过了,如果要判断菱形就加一个判断对角线是不是边长的2\sqrt22​倍就好了,这里就不加先了

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int x[5],y[5];
const int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int get_dis(int a,int b)
{return (x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b]);}
bool check()
{int l1=get_dis(1,2),l2=get_dis(2,3),l3=get_dis(3,4),l4=get_dis(4,1);if(l1==l2&&l2==l3&&l3==l4) return 1;l1=get_dis(1,2),l2=get_dis(2,4),l3=get_dis(4,3),l4=get_dis(3,1);if(l1==l2&&l2==l3&&l3==l4) return 1;l1=get_dis(1,3),l2=get_dis(3,2),l3=get_dis(2,4),l4=get_dis(4,1);if(l1==l2&&l2==l3&&l3==l4) return 1;l1=get_dis(1,3),l2=get_dis(3,4),l3=get_dis(4,2),l4=get_dis(2,1);if(l1==l2&&l2==l3&&l3==l4) return 1;l1=get_dis(1,4),l2=get_dis(4,2),l3=get_dis(2,3),l4=get_dis(3,1);if(l1==l2&&l2==l3&&l3==l4) return 1;l1=get_dis(1,4),l2=get_dis(4,3),l3=get_dis(3,2),l4=get_dis(2,1);if(l1==l2&&l2==l3&&l3==l4) return 1;return 0;
}
int main()
{for(int i=1;i<=4;i++)scanf("%d%d",&x[i],&y[i]);if(check()){printf("wen");return 0;}for(int i=1;i<=4;i++){for(int k=0;k<4;k++){x[i]+=dx[k];y[i]+=dy[k];if(check()){printf("hai xing");return 0;}x[i]-=dx[k];y[i]-=dy[k];}}printf("wo jue de bu xing");
}

T7:Forsaken的三维数点\texttt{T7:Forsaken的三维数点}T7:Forsaken的三维数点

题目大意

一个三维空间以(0,0,0)(0,0,0)(0,0,0)为中心,每次两个操作

  1. 加入一个能量球在(x,y,z)(x,y,z)(x,y,z)
  2. 以中心半径为kkk的球能够包括xxx个能量球,求kkk的最小整数值

解题思路

因为是kkk的最小整数值,所以我们直接对于小数向上取整,然后二分+树状数组即可

codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define lowbit(x) x&-x
using namespace std;
const int N=2e5+10;
int n,t[N+10],l,r;
void change(int x,int z)
{while(x<=N){t[x]+=z;x+=lowbit(x);}
}
int ask(int x)
{int ans=0;while(x){ans+=t[x];x-=lowbit(x);}return ans;
}
double get_dis(double x,double y,double z)
{return sqrt(x*x+y*y+z*z);}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){int op;double x,y,z;scanf("%d%lf",&op,&x);if(op==1){scanf("%lf%lf",&y,&z);double dis=get_dis(x,y,z);dis+=(((int)dis)!=dis);change((int)dis,1);}else{l=0;r=N;while(l<=r){int mid=(l+r)/2;if(ask(mid)<(int)x) l=mid+1;else r=mid-1;}if(ask(l)<(int)x) printf("-1\n");else printf("%d\n",l);}}
}

牛客小白月赛18-记录相关推荐

  1. 牛客小白月赛65个人题解A-E

    1. 牛客小白月赛65 A. 牛牛去购物 题意:给定n元,购买价格为a元的篮球和价格为b的篮球,数量不定,要使得花掉的钱最多,也就是剩余的钱数最少,求这个值 (1 <= n, a, b < ...

  2. 牛客小白月赛60(A~C)题解

    原题地址:牛客小白月赛60_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 题目A:小竹与妈妈 题意:输出(x-b)/a即可,没什么好说 代码: #include< ...

  3. 牛客小白月赛23(A、B

    牛客小白月赛 A.膜法记录 题意: 给n行m列的矩阵,矩阵中的每个位置都可能有敌人 现在你能消灭a行和b列的敌人,问是否有可能将所有敌人都消灭. 数据范围:n<=20,m<=1e5 思路: ...

  4. 牛客小白月赛4 I.合唱队形

    牛客小白月赛4 I.合唱队形 题目链接 题目描述 铁子的班级在毕业晚会有一个合唱节目,到了毕业晚会的时候,他们必须排成一排一起合唱"认错","当然是选择原谅他" ...

  5. 牛客小白月赛20 E.区区区间

    牛客小白月赛20 E.区区区间 题目描述 Keven 特别喜欢线段树,他给你一个长度为 n 的序列,对序列进行m 次操作. (略) 输入描述: 第一行两个整数 n.m,表示序列的长度和操作次数(1&l ...

  6. 牛客小白月赛28 D.位运算之谜

    牛客小白月赛28 D.位运算之谜 题目链接 题目描述 a+ba + ba+b 的值为 xxx,a&ba\&ba&b 的值为 yyy,首先需要判断能否有一组 a,ba,ba,b ...

  7. 牛客小白月赛20 D.3的倍数

    牛客小白月赛20 D.3的倍数 题目描述 给你 n 个字符串,每个字符串最多包含 A - Z 这26个字母,Keven 现在取了一些字符串,发现每个字母出现的次数都是 3 的倍数,Keven 现在想要 ...

  8. 牛客小白月赛73F Kevin的哈希构造

    原题链接:F-Kevin的哈希构造_牛客小白月赛73 (nowcoder.com)​​​​​ dp[i][j][k] : 前i位,相同字符个数为j,哈希值为k,表示的状态为0.1,0表示不可行,1表示 ...

  9. 牛客小白月赛16 小石的签到题(博弈)

    牛客小白月赛16 小石的签到题 链接:https://ac.nowcoder.com/acm/contest/949/A来源:牛客网 题目描述 输入描述: 共一行,输入一个数 nnn . 输出描述: ...

  10. F.孤独(牛客小白月赛39)

    F.孤独(牛客小白月赛39) 题意: 给定一棵树,寻找一个路径,将断掉所有与这个路径上的点相连的边,使得剩下的最大连通块的大小最小 题解: 这题有点印象,感觉做过,至少这个方法肯定遇到过 设dp[u] ...

最新文章

  1. Matlab数据的可视化 -- 三维特殊图形
  2. 一句话就能让AI找到3A游戏Bug?准确率达86%,Demo在线可玩
  3. ATSAMD21-XPRO开发板 评估基于 ATSAM D21 CortexM0+ 的微控制器
  4. Linux 内核进程uid,Linux内核学习笔记: uid之ruid,euid,suid
  5. 将json字符串转换成html,根据json字符串生成Html的一种方式
  6. OLT忘记登陆密码如何修改
  7. 登录时记住密码的实现
  8. 如何打开PDF文档?必看的5种方法
  9. ### LinuxCBT VBOX Edition ###
  10. 你知道CAD中的样条曲线的绘制方法吗?
  11. 【1.2】基本逻辑运算
  12. python:实现红黑树算法(附完整源码)
  13. kafka:工具:kafkaTool 使用方法
  14. ES的创建索引和文档操作
  15. Matlab Function输入输出
  16. linux环境下php安装sqlsrv扩展连接mssql
  17. vrops vRealize Operations Manager 8云管平台部署与配置
  18. 收银系统源码演示-适合超市便利店零售等行业
  19. 用户签到功能优化竞品分析
  20. 什么是BIOS?如何进入BIOS,恢复BIOS原始设置的快捷方法

热门文章

  1. java+字节码工具64位_jclasslib 下载-jclasslib 32位64位(java字节码查看工具) 5.1 官方版 - 河东下载站...
  2. 心动的本质是什么_《心动的信号3》:在“烟火气”里嗑糖,素人恋爱究竟有多上头?...
  3. php 实现类,php 获取页面中指定内容的实现类
  4. ibm台式计算机不能自动关机,IBM X3650 M3 不定时自动关机求大神
  5. oracle leg函数,032-函数的嵌套与LEGB原则
  6. Linux系统语言教程,Linux操作系统基础及语言基础教程-麦可网张凌华
  7. leetcode707:设计链表(增删差)
  8. 7-43 字符串关键字的散列映射 (25 分)(思路+详解+不懂的兄弟们来呀)兄弟们我干了5个小时,一个一个测试点过的
  9. 高等数学下-赵立军-北京大学出版社-题解-练习10.3
  10. 洛谷 P1596 [USACO10OCT]Lake Counting S-dfs