没有简单的方法,就是直接模拟,硬核模拟题,按照题目的描述输入输出就能解决
解题代码#include#includeusing namespace std;
int main()
{int lx=0,lw=0,lz=0,ls=0;
int rs=0,rz=0,rw=0,rx=0;
string s;
cin>>s;
for(int i=0;iif(s[i]=='`'||s[i]=='1'||s[i]=='Q'||s[i]=='A'||s[i]=='Z')
{ lx++;
}
else if(s[i]=='2'||s[i]=='W'||s[i]=='S'||s[i]=='X')
{ lw++;
}
else if(s[i]=='3'||s[i]=='E'||s[i]=='D'||s[i]=='C')
{ lz++;
}
else if(s[i]=='4'||s[i]=='R'||s[i]=='F'||s[i]=='V'||s[i]=='5'||s[i]=='T'||s[i]=='G'||s[i]=='B')
{ ls++;
}
else if(s[i]=='6'||s[i]=='Y'||s[i]=='H'||s[i]=='N'||s[i]=='7'||s[i]=='U'||s[i]=='J'||s[i]=='M')
{ rs++;
}
else if(s[i]=='8'||s[i]=='I'||s[i]=='K'||s[i]==',')
{ rz++;
}
else if(s[i]=='9'||s[i]=='O'||s[i]=='L'||s[i]=='.')
{ rw++;
}
else rx++;//此处的else可以省去大量代码
}
cout<
7-2 分香肠
题目描述解题方法可以看出,以下切割策略是最佳的。
我们将香肠排列成一条直线,一条接着一条(从而获得由N个较短线段组成的线段)。将这条线切割成M个相等的线段可以得到所需的解。虽然我们在概念上做的是M-1切,但其中一些不是真正的切,而是落在香肠之间(较短的线段)。
因此,我们可以简单地使用for循环来检查,对于对于每一次切割,它是真切割还是原本中间就是分开的。
其实,通过数学思想归纳,可以得出一个明确的公式:解=M-gcd(N,M) (gcd即大公约数)
带入此公式则最为简单。
解题代码#include#includeusing namespace std;
int gcd(int a,int b)//得出大公约数
{if(b==0) return a;
return gcd(b,a%b);
}
int main()
{int n,m;
cin>>n>>m;
n%=m;//多出的部分拿来切,其余可以直接整个分给客人
int ans=m-gcd(n,m);//运用公式
cout<
7-3 h0145. 会议安排
题目描述阅读此题,能够了解到此为经典的贪心算法中的区间问题。
我们要使参加的活动大,则要使每前一个活动的时间越早举行完,后一个活动就能越早开始,则空余时间就能多出来给后面的活动,此为本题的贪心思想。
所以区间从小到大排序,每次取一个最早开展的活动,如果遇到下一个活动时间结束的早,就更新此时最晚的活动时间,但此时的活动数目不变。
解题代码#include#include
using namespace std;
struct tt{int x,y;
}a[10005];
int cmp(tt a,tt b)//比大小
{return a.xint m,n;
cin>>m;
while(m--)
{int tmax=0,ans=0;
cin>>n;
for(int i=0;i cin>>a[i].x>>a[i].y;
}
sort(a,a+n,cmp);
for(int i=0;i if(tmax<=a[i].x)
{ ans++;//活动数目增加
tmax=a[i].y;//更新活动结束最晚时间
}
else if(tmax>a[i].y)//如果遇到下一个活动结束时间更早,则更新时间,但是活动数目不会发生改变
{ tmax=a[i].y;
}
}
cout<
7-4 神秘密码
题目描述解题方法看到此题,我们的想法就是用栈,但是过程未免太过于繁杂,所以我们可以想着递归能不能解决。
每当我们遇到 ′ [ ′ '[' ′[′时,直接递归寻找里面的字符串,进行之类的运算,再遇到 ′ ] ′ ']' ′]′时返回所得到的部分字符串。
解题代码#include#includeusing namespace std;
string print()
{string str,s;
char c;
int n;
while(cin>>c)
{if(c=='[')
{cin>>n;
s=print();//递归寻找括号里的字符串
while(n--) str+=s;//按照题目要求扩大字符串
}
else
{if(c==']') return str;//遇到反括号则返回本次递归的字符串
else str+=c;
}
}
return str;
}
int main()
{cout<
7-5 h0114.国王游戏
题目描述本题看似是贪心算法,实则是已经按照数学思想可以把队伍的中大臣从小到大顺序排序,按照题目算法,则可以形成关系式
A
i
∗
B
i
<
A
i
+
1
∗
B
i
+
1
Ai*BiAi∗Bi 其余则是按照高精度算法进行两数之间的乘法。 你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧#include
文章名称:NEUQACM第三次双周赛-创新互联
文章来源:http://cdweb.net/article/degsdi.html