这是跟学长学姐组队来打的最爽的一次比赛了,也可能是互相组队最后一次比赛了,南哥和楼学姐,省赛之后就退役了,祝他们能考研和面试都有happy ending!

虽然最后没有把F题的n^2约数的数学题写完,但体验了好久没有思考尽力的感觉,超级超级棒!!

A跳台阶

签到题:直接输出1<<(n-1)

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
int t,n;
cin>>t;
while(t--){
cin>>n;--n;
printf("%d\n",<<n);
}
}

D: psd面试

思路:最长回文子序列模板题啦,网搜一个随便都能找到的,f(i,j)代表从i到j的最长回文子序列。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=;
int n,dp[N][N];
char s[N];
int main(){
while(~scanf("%s",s)){
n=strlen(s);
for(int i=;i<n;i++){
if(s[i]>='A'&&s[i]<='Z'){
s[i]=s[i]-'A'+'a';
}
}
for(int i=n-;i>=;i--){
dp[i][i]=;
for(int j=i+;j<n;j++){
dp[i][j]=dp[i+][j];
if(s[i]==s[j]){
dp[i][j]=dp[i+][j-]+;
}
else {
dp[i][j]=max(dp[i+][j],dp[i][j-]);
}
}
}
printf("%d\n",n-dp[][n-]);
} }

 

F:等式

思路:做以下解释:

  首先考虑打表:由于x>=y,有1/x<=1/y,因此1/n-1/y<=1/y,即y<=2*n.这样,只需要在2*n范围之内枚举y,然后根据y尝试计算出x即可。这就是TOJ的4686题。但是!这里不行,因为n太大,每次循环如果数据都的是1e9,肯定会超时。

  那么换种思路?

  先看看暴力做的代码吧!

int sum = 0;
for(i=n+;i<=*n;i++)
{if((i*n)%(i-n)==)
{
sum++;
}
}

注意看,是从n+1到n*2枚举(n*i)能否整除i-n;

那么做以下转化:

n*(n+k)/k  k属于[1,n],求n*(n+k)/k是整数的k的个数。  发现式子可以化简为 n*n/k+1  。到这里,就好做了。 问题就转化为求n^2 中,在n之内的约数个数。

考虑到n^2是1e18次级,不太容易求。我们求n的约数即可。

做以下解释:12 = 2^2 * 3^1 约数个数为 指数+1的乘积。即(2+1)*(1+1) = 6

12^2 = 144 = 2^4 * 3 ^2  约数个数为 (4+1)*(2+1) = 15

      可以看到,平方数的每一项都是原来的 (2倍指数值+1)

接下来就是欧拉函数+约数公式的问题了。最后注意一点。是如果最后剩下来的数如果是个大素数,那么别忘了乘以3。

#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
long long x,n,ans = ;
cin>>n;
x=n;
for(long long i = ;i*i <= n;i++){
if(n%i==){
long long c = ;
while(x%i == ){
c++;
x/=i;
}
ans *= (*c + );//需要乘以2倍的指数
}
}
if(x != )ans *= ;//最后留下来是个大素数
cout<<(ans+)/<<endl;
}
return ;
}

G:旋转矩阵

思路:大模拟!R可以转换为3个L,或者L可以转化为3个R,然后mod4,就算出了最后需要转几次,模拟做就行。(挺恶心的)

#include<bits/stdc++.h>
using namespace std;
typedef long long LL; struct pic{
char mp[][];
int x,y;
}P[]; int main(){
int flag=;
int t;char s[];
scanf("%d",&t);
while(t--){
int n,m;
scanf("%d %d",&n,&m);
P[].x=n;P[].y=m;
for(int i=;i<n;i++){
scanf("%s",P[].mp[i]);
}
scanf("%s",s);
P[].y=n;P[].x=m;
for(int i=;i<n;i++){
for(int j=;j<m;j++){
if(P[].mp[i][j]=='|')
P[].mp[j][n-i-]='-';
if(P[].mp[i][j]=='-')
P[].mp[j][n-i-]='|';
if(P[].mp[i][j]=='+')
P[].mp[j][n-i-]='+';
}
} P[].x=n;P[].y=m;
for(int i=;i<n;i++){
for(int j=;j<m;j++){
P[].mp[i][j]=P[].mp[n-i-][m--j];
}
}
P[].x=m;P[].y=n;
for(int i=;i<P[].x;i++){
for(int j=;j<P[].y;j++){
P[].mp[i][j]=P[].mp[m--i][n--j];
}
} int ans=,len=strlen(s);
for(int i=;i<len;i++){
if(s[i]=='L')ans+=;
else ans+=;
ans%=;
} printf("%d %d\n",P[ans].x,P[ans].y);
for(int i=;i<P[ans].x;i++){
for(int j=;j<P[ans].y;j++){
printf("%c",P[ans].mp[i][j]);
}
printf("\n");
}
printf("\n");
}
}

I题:

全场最水啦,直接输出字符串 ac 就行了,注意不要有空格。不附加代码了~

J:强迫症的序列

思路:找到最小的数Minnum,并且求个所有数的和sum。次数就是 sum 减去 n*Minnum;最后的数就是sum+次数*(n-1)

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL n,m,a[];
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%lld",&n);
LL sum=,mi=;
for(int i=;i<n;i++){
scanf("%lld",&a[i]);
mi=min(mi,a[i]);
sum+=a[i];
}
LL c=sum-mi*n;
LL x=sum+c*(n-);
printf("%lld %lld\n",c,x/n);
}
}

K题:密码

思路:前排吐槽千万别用数组存数什么的,直接输出!存下来再输出会超内存的说。

   大概就是找规律了,就是找这行的第一个跟下一个之间的规律,反正我找的就是:假设第一行第一个元素的位置是1,那么下一个就是1+(2*n-2),再下一个就是1+2*(2*n-2)。。。最后是1+k*(2*n-2)。最后一行也是这样的

   中间的n-2行,规律是2*(n-i)和2*(i-1)交替着出现吧。具体可以看代码

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
string s;
int main(){
int n;
int t;
for(scanf("%d",&t);t--;){
scanf("%d",&n);
cin>>s;
if(n == ){
cout<<s<<endl;continue;
}
s.insert(,"&");
int su = ;
int ard = ,j = ;
while(ard+j*(*n-) < s.size()){
printf("%c",s[ard+j*(*n-)]);j++;
su++;
}
for(int i = ; i <= n - ; i++){
int k[] = {*(n-i),*(i-)};
int sum = ,flag = ;
while(i + sum < s.size()){
printf("%c",s[i+sum]);
if(!flag){
sum+=k[];
flag = ;
}
else{
sum+=k[];
flag = ;
}
su++;
}
}
ard = n;j = ;
while(ard+j*(*n-) < s.size()){
printf("%c",s[ard+j*(*n-)]);j++;
su++;
}
//printf("\n%d\n",su);
puts("");
}
}

L题:用来作弊的药水

思路:好佩服学姐!思维转的超级快,题目就是让我们求x的a次 等不等于 y的b次。学姐秒看出,直接两边同时求个对数,然后变成了aln(x) 是不是等于 bln(y)。这样就非常非常好做了。

    随便写个long double判断一下就好了。代码附上!

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
long double x,y;
int n,a,b,c,d;
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d %d %d %d",&b,&a,&d,&c);
x=a*log10(b);y=c*log10(d);
if(fabs(x-y)<1e-){
puts("Yes");
}
else puts("No");
}
}

第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛----随手记录帖的更多相关文章

  1. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛

    拖了好久了 链接:https://www.nowcoder.com/acm/contest/90/A来源:牛客网 跳台阶 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K, ...

  2. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--L-用来作弊的药水

    链接:https://www.nowcoder.com/acm/contest/90/L 来源:牛客网 1.题目描述 -- 在一个风雨交加的夜晚,来自异世界的不愿透露姓名的TMK同学获得了两种超强药水 ...

  3. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--E-回旋星空

    链接:https://www.nowcoder.com/acm/contest/90/E 来源:牛客网 1.题目描述 曾经有两个来自吉尔尼斯的人(A和C)恋爱了,他们晚上经常在一起看头上的那片名为假的 ...

  4. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--D-psd面试

    链接:https://www.nowcoder.com/acm/contest/90/D 来源:牛客网 1.题目描述 掌握未来命运的女神 psd 师兄在拿了朝田诗乃的 buff 后决定去实习. 埃森哲 ...

  5. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--G-旋转矩阵

    链接:https://www.nowcoder.com/acm/contest/90/G 来源:牛客网 1.题目描述 景驰公司自成立伊始,公司便将“推动智能交通的发展,让人类的出行更安全,更高效,更经 ...

  6. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--A-跳台阶

    链接:https://www.nowcoder.com/acm/contest/90/A 来源:牛客网 1.题目描述 小明在坐景驰科技研发的无人车到达了目的地. 景驰科技(JingChi.ai)是一家 ...

  7. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 G 旋转矩阵 【模拟】

    链接:https://www.nowcoder.com/acm/contest/90/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  8. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛.B.跳一跳,很简单的(Hash 倍增)

    题目链接 首先变换的周期是\(26\),而所有字符是同时变的,所以一共就只有\(26\)种树,我们对\(26\)棵树分别处理. 求某节点到根路径上的字符串,可以从根往下哈希,\(O(n)\)预处理出. ...

  9. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-等式(求$N^2$的因子个数)

    一.题目链接 https://www.nowcoder.com/acm/contest/90/F 二.题面 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言655 ...

随机推荐

  1. nosql数据库:mongodb,redis,memcached,其优缺点和使用应用场景

    1.mongodb (1)是文档型的非关系型数据库,使用bson结构.其优势在于查询功能比较强大,能存储海量数据,缺点是比较消耗内存. (2)一般可以用来存放评论等半结构化数据,支持二级索引. 适合存 ...

  2. 关于npm 包的发布

    注册一个npm 账号,打开命令行输入 npm add user 然后登录 npm login 发布npm 包,在你要发布的包的目录下,在创建账号后需要认证邮箱,否则无法发布,发布同一个包,每次的版本需 ...

  3. Java安全编码标准

    Java安全编码标准 具体参考Rules 输入验证和数据净化(IDS)规则风险评估概要 IDS00-J净化穿越受信边界的非受信数据 IDS01-J验证前标准化字符串 IDS02-J在验证之前标准化路径 ...

  4. js 弹窗的实现

    原理: 1. 点击按钮,触发窗口显示,遮罩层显示,并设置窗口的位置 2. 为弹出的窗口绑定鼠标滚动事件和视窗改变事件 3.点击关闭按钮,弹窗消失,遮罩层消失 html 代码: <!DOCTYPE ...

  5. Linux命令:sshpass

    sshpass介绍 sshpass是一款凡是为凡是使用ssl方式访问的操作提供一个免输入密码的非交互式操作,以便于在脚本中执行ssl操作,如ssh,scp等.sshpass是一家以色列公司Lingnu ...

  6. Linux后门入侵检测工具

    一.rootkit简介 rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现 ...

  7. git release功能

    命令行: git tag -a v3. -m "这是4.0版本" git push origin v3. //git tag -a 标签名称 -m "说明" / ...

  8. linux 3.10的list_del

    最近看到一个page的数据比较奇怪: crash> page ffffea002c239c58 struct page { flags = , _count = { counter = 34-- ...

  9. Kubernetes 1.8.x 全手动安装教程----转自Kubernetes中文社区(部分内容根据实验环境做了些修改,特此感谢Kubernetes中文社区)

    Kubernetes 提供了许多云端平台与操作系统的安装方式,本章将以全手动安装方式来部署,主要是学习与了解 Kubernetes 创建流程.若想要了解更多平台的部署可以参考 Picking the ...

  10. Windows命令行打开常用界面

    本文主要介绍Windows下命令行操作打开常用界面,使用方法为在DOS命令行下输入相关命令.可以减少多次操作界面.可以尝试在命令行执行下面提到的命令感受下,快捷键主要内容包括: 1.查看计算机的基本信 ...