问题 A: 木棒根数

解法:把所有的情况保存下来,加一下就好

#include<bits/stdc++.h>
using namespace std;
map<char,int>q;
class P
{
public:
int cmd(string s)
{
int sum=;
for(int i=;i<s.length();i++)
{
sum+=q[s[i]];
}
return sum;
}
};
int main()
{
string s;
P solve;
q['']=;
q['']=;
q['']=;
q['']=;
q['']=;
q['']=;
q['']=;
q['']=;
q['']=;
q['']=;
q['+']=;
q['-']=;
q['=']=;
cin>>s;
cout<<solve.cmd(s)<<endl;
return ;
}

问题 B: 一个苹果都不给我

解法:三种情况,单独买,套装买,和混合买

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int n,m,p,q,ans[];
cin>>n>>m>>p>>q;
ans[]=n*m;
ans[]=n/p*q+(n%p)*m;
ans[]=(n/p+)*q;
sort(ans,ans+);
cout<<ans[]<<endl;
return ; }

问题 C: LED

解法:保存图形,然后xjb搞

include<stdio.h>
#include<string.h>
int main()
{
char num1[]={" _ _ _ _ _ _ _ _ "};
char num2[]={"| | | _| _||_||_ |_ ||_||_|"};
char num3[]={"|_| ||_ _| | _||_| ||_| _|"};
char str,a[]={"\0"};
int i,k,j,len;
scanf("%s",a);
len=strlen(a);
for(i=;i<len;++i)
{
j=a[i]-'';
k=j*;
printf("%c%c%c",num1[k],num1[k+],num1[k+]);
}
printf("\n");
for(i=;i<len;++i)
{
j=a[i]-'';
k=j*;
printf("%c%c%c",num2[k],num2[k+],num2[k+]);
}
printf("\n");
for(i=;i<len;++i)
{
j=a[i]-'';
k=j*;
printf("%c%c%c",num3[k],num3[k+],num3[k+]);
}
printf("\n");
return ;
}

问题 D: 路是自己选的

解法:应该都看出奇偶性关系了,一种是利用二进制,一种是二分,结果需要倒过来输出,所以使用了栈

#include<bits/stdc++.h>
using namespace std;
const int MAXN=;
int b[MAXN];
int main()
{
int x;
int a[];
scanf("%d",&x);
for(int i=;i<;i++)
{
scanf("%d",&a[i]);
b[a[i]]=i;
}
int u=b[x];
u=+u;
stack<char> s;
while(u!=)
{
if(u%==) s.push('L');else s.push('R');
u=u/;
}
while(!s.empty())
{
putchar(s.top());
s.pop();
}
puts("");
return ;
}

问题 E: All roads lead to rome

解法:标准解法是dp,然而可以用组合数学来做,也就是C(n,m)

#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n,m,l,r;
int a,b,c,d,ans=;
cin>>n>>m>>a>>b>>c>>d;
l=abs(a-c),r=abs(d-b);
for(int i=l+r;i>l;i--){
ans=ans*i/(l+r-i+);
}
cout<<ans<<endl;
}

问题 F: 找不到北

解法:求最短路最好利用bfs,当然dfs也能做到(一道基础的搜索题)

#include<bits/stdc++.h>
using namespace std;
int inf=(<<)-;
int Mx;
char m[][]={
"##########",
"#**#***#*#",
"#*#**##*##",
"#***##***#",
"##**#*#**#",
"#***#*#**#",
"#**#*****#",
"#****###*#",
"#***#**#*#",
"##########",
};
int a,b,c,d;
void dfs(int x,int y,int s)
{
if(m[x][y]=='#')
{
return;
}
else if(x==c&&y==d)
{
Mx=min(Mx,s);
}
s++;
m[x][y]='#';
dfs(x,y-,s);
dfs(x,y+,s);
dfs(x+,y,s);
dfs(x-,y,s);
m[x][y]='*';
}
int main()
{
int t;
cin>>t;
while(t--)
{
Mx=inf;
cin>>a>>b>>c>>d;
if(m[a][b]=='#'||m[c][d]=='#')
{
cout<<"-1"<<endl;
continue;
}
else if(a==c&&b==d)
{
cout<<""<<endl;
continue;
}
else
{
dfs(a,b,);
if(Mx==inf)
{
cout<<"-1"<<endl;
}
else
{
cout<<Mx<<endl;
}
}
}
return ;
}

2016年江西理工大学C语言程序设计竞赛(初级组)的更多相关文章

  1. 2018年江西理工大学C语言程序设计竞赛(初级组)一

     C语言竞赛初级组第一.二场答案:https://www.cnblogs.com/xingkongyihao/p/10046918.html  A: 逆序对 时间限制: 1 s      内存限制:  ...

  2. 2017年江西理工大学C语言程序设计竞赛(初级组)

    问题 A: Petr的盒子(初) #include <iostream> #include <stdio.h> #include <algorithm> using ...

  3. 2016年江西理工大学C语言程序设计竞赛(高级组)

    问题 A: jxust 解法:争议的问题(是输入整行还是输入字符串),这里倾向输入字符串,然后判断是否含有jxust就行 #include<bits/stdc++.h> using nam ...

  4. 2014江西理工大学C语言程序设计竞赛高级组题解

    1001 Beautiful Palindrome Number 枚举回文数字前半部分,然后判断该数字是否满足,复杂度为O(sqrt(n))! 1002 Recovery Sequence  本题的核 ...

  5. 2017年江西理工大学C语言程序设计竞赛(高级组)

    问题 A: 求近似值 #include <stdio.h> #include <time.h> #include <stdlib.h> using namespac ...

  6. 2018年江西理工大学C语言程序设计竞赛(高级组) 三角平方数

    题目描述 三角数:形如图a,圆点摆放成等边三角形的数字,则为三角数. (图a) 平方数:形如图b,小方块摆放成正方形的数字,则为平方数. (图b) 那么如果一个数字既是三角形数又是平方数,则称为三角平 ...

  7. 2018年江西理工大学C语言程序设计竞赛高级组部分题解

    B Interesting paths 考察范围:组合数学 此题是机器人走方格的变种,n*m的网格,从(1,1)走到(n,m),首先可以明确,水平要走m-1格,竖直要走n-1格,则走到目的地的任意一条 ...

  8. 2014江西理工大学C语言程序竞赛初级组

    坐公交 解法:略 #include<stdio.h> #include<string> #include<iostream> #include<math.h& ...

  9. 2015年江西理工大学C语言程序设计竞赛(高级组)

    A 解法:DP+二分 dp[i]=max(dp[i],dp[j]+p[i].v)(i>j) dp[i]表示建立i点之后能够获得的最大值 int n,M; struct node { int l, ...

随机推荐

  1. spring security使用数据库管理用户权限

    <authentication-provider> <user-service> <user name="admin" password=" ...

  2. 执行JDBC的executeUpdate()方法时,报错:数据类型不一致,应为number,但却为binary

    该原因是因为,在拼写update语句的时候将一个number类型的字段的值赋为了null导致的,如果想将一个number类型的字清空,不能使用null,可以使用“”来替代.

  3. Python 脚本 监控数据库状态

    打算用这个脚本通过zabbix 监控Mariadb的,无奈要等Mariadb完全上线才行,所以先写一个粗略大致功能的版本. #coding:utf-8 #author:shiyiwen #versio ...

  4. BizTalk开发系列(十六) XML命名空间

    BizTalk开发过程中如果有对XML进行开发操作,比如在自定义代码里操作XML消息或者在Mapping的时候使用Xpath对XML进行操 作.则有机会遇到XML命名空间的问题.常见的是使用Xpath ...

  5. k-折交叉验证(k-fold crossValidation)

    k-折交叉验证(k-fold crossValidation): 在机器学习中,将数据集A分为训练集(training set)B和测试集(test set)C,在样本量不充足的情况下,为了充分利用数 ...

  6. 使用LVM对硬盘在线扩容

    初始状态: root@control:/dev/nova-volumes# vgdisplay --- Volume group --- VG Name nova-volumes System ID ...

  7. Java String类型数据的字节长度

    问题描述: 向Oracle数据库中一varchar2(64)类型字段中插入一条String类型数据,程序使用String.length()来进行数据的长度校验,如果数据是纯英文,没有问题,但是如果数据 ...

  8. 奥迪--A4L

    -型号:A4L -价格:30-41W -动力:2T -变速箱:7挡双离合 -长宽高:4.81,1.84,1.43 -油箱:54L -发动机:EA888 -大灯:氙气(选装LED)

  9. 采用CSS3的动态元素(动画)设计div块的层级式展现

    此练习作品是为学习HTML5+CSS3而设计的(如有不好请大家批评指教~~~). 操作:当页面加载时,点击网页中的绿色块(一层),则有其他几块(二层)从其中央出现并向外延伸并旋转,点击这几块中任意一个 ...

  10. ecshop增加新字段及相应编辑器

    一.在数据库添加字段,会手写的就后台添加,不会就进入phpmyadmin默认的就行.      这是通用的写法:(这里是增加类似商品描述的字段,其他字段自行更改) ALTER TABLE `ecs_g ...