题目链接链接
(帮学长研究一下机试题)
A 木棍,注意不能是正方形;
#include
#include
#include
#include
#include
#include
#include
B题
wa了n次,这个中南大学的oj太傻逼了!!! 输入输出很有问题,做了这么多年oj,第一次发现scanf没有返回值会导致错误的。
无力吐槽了,代码从一开始就是对的!我服了。
第一次一道简单模拟题我做了一个半小时,我都开始怀疑人生了。
幸好我没放弃,帮学长踩出坑来了,注意输入输出。而且后来用getchar()的时候也会出现诡异的错误。
#include
#include
#include
#include
#include
#include
#include
C 一开始看错了题意,后来发现是个简单dp,求每行最大值,然后再求列最大值就是答案
#include
#include
#include
#include
#include
#include
#include
D 很常见的一个贪心加二分,其实方法就是求最长上升子序列
#include
#include
#include
#include
#include
#include
#include
E.我先睡会,以前做过类似的(HDU 2717) (别人的代码)
#include
#include
#include
#include
#include
#include
#include
#define MAX 100010
using namespace std;
int n,k;
int cur,nextt;
int step[MAX];
queueq;
void bfs()
{
while(!q.empty())
{
cur=q.front();
q.pop();
if(cur==k) break;
nextt=cur-1;
if(nextt>=0&&step[nextt]==0)
{
q.push(nextt);
step[nextt]=step[cur]+1;
}
nextt=cur+1;
if(step[nextt]==0)
{
q.push(nextt);
step[nextt]=step[cur]+1;
}
nextt=cur*2;
if(nextt<=100000&&(nextt-k)<(k-cur)&&step[nextt]==0)
{
q.push(nextt);
step[nextt]=step[cur]+1;
}
}
}
int main()
{
while(scanf("%d%d",&n,&k)==2)
{
memset(step,0,sizeof(step));
if(n>k)
cout<<(n-k)<