码迷,mamicode.com
首页 > 其他好文 > 详细

考试总结 2018-5-1

时间:2018-05-12 15:09:40      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:style   存在   三次   cti   AC   int   time   open   输出   

  把考试题都放在文件里了,不知道你们能不能看到,反正就不贴题目了。

  如题,是2018年河南省青少年信息学初中组竞赛试题,很惭愧。那还有什么说的,肯定是水题啊。

  第一题以为是一个数论,看数据范围的时候找不到了,找老师问了问,-1000到1000,那没事看,直接暴力也是不会超时的。那就有了一个很直白的代码。

技术分享图片
#include <cstdio>
#include <iostream>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
int i,f  ,tx1,tx2,ty1,ty2,ans;
bool o[2100][2100];
int main()
{
freopen("t1.in","r",stdin);
freopen("t1.out","w",stdout);
    cin>>tx1>>ty1>>tx2>>ty2;
    for(i=tx1+1000;i<=tx2+1000-1;i++)
        for(f=ty1+1000;f<=ty2+1000-1;f++)
            o[i][f]=1;
    cin>>tx1>>ty1>>tx2>>ty2;
    for(i=tx1+1000;i<=tx2+1000-1;i++)
        for(f=ty1+1000;f<=ty2+1000-1;f++)
            o[i][f]=1;
    cin>>tx1>>ty1>>tx2>>ty2;
    for(i=tx1+1000;i<=tx2+1000-1;i++)
        for(f=ty1+1000;f<=ty2+1000-1;f++)
            o[i][f]=0;
        
    for(i=0;i<=2000;i++)
        for(f=0;f<=2000;f++)
            if(o[i][f])ans++;
    cout<<ans;
}
t1

  由于可能存在的负数,可以直接加上1000后再用。那bool数组开2000*2000就够用了。检查检查,没有问题。

  第二题是坑了好多同学的,他们由于没有好好读题,加上数据和我的诱导使他们相信“大白的朋友”是直接回到自己的位子上的,sort后直接输出了,错的那叫一个惨哦,只有10分。

  其实是一道纯模拟啦,数据刚好转三次后又回到了自己本来的位子而已。代码如下。

技术分享图片
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<iomanip>
using namespace std;
int i,f,n,o[120];
int t[120],num[120];
int main()
{
    freopen("t2.in","r",stdin);
    freopen("t2.out","w",stdout);
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>o[i];
        t[i]=i;
    }
    for(i=1;i<=n;i++)
        cin>>num[i];    
////////////////////
    
    for(i=1;i<=n;i++)
        t[i]=o[t[i]];
    for(i=1;i<=n;i++)
        t[i]=o[t[i]];
    for(i=1;i<=n;i++)
        t[i]=o[t[i]];
///////////////////
    for(i=1;i<=n;i++)
    cout<<num[t[i]]<<endl;
    return 0;
}
t2

  第三题也是不难的,很裸的01背包。我的方法是对于所有的食物跑一遍循环,把不能这个食物就能到达的位子加上这个食物后的标记一下……算了解释不清。自己看代码。

技术分享图片
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<iomanip>
using namespace std;
int i,f,maxx,n,  t;
bool flag[45010]={1};
int main()
{
freopen("t3.in","r",stdin);
freopen("t3.out","w",stdout);
    cin>>maxx>>n;
    for(i=1;i<=n;i++)
    {
        cin>>t;
        for(f=0;f<=maxx-t;f++)
        {
            if(flag[f])flag[f+t]=1;
        }
        if(flag[maxx])
        {
            cout<<maxx;
            return 0;
        }
    }
    for(i=maxx-1;;i--)
    {
        if(flag[i])
        {
            cout<<i;
            return 0;
        }
    }
    
}
t3

 

最后成绩是300分哦。如果我早生几年就好了,今年参加初中组的比赛拿个第一,多开心。

考试总结 2018-5-1

标签:style   存在   三次   cti   AC   int   time   open   输出   

原文地址:https://www.cnblogs.com/qywyt/p/9028549.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!