9.26 考试

好久没有写博客了...

言归正传奥

T1就是个送分题...

#include <cstdio>
#include <cstring>
#include <iostream>
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;

int n,maxp;
ll a[26],b[26],c[26],d[26];
ll ans;

int main(){

    freopen("week.in","r",stdin);
    freopen("week.out","w",stdout);

    scanf("%d",&n);
    maxp=(1<<n)-1;
    for(int i=1;i<=n;++i)
        scanf("%lld%lld%lld%lld",&a[i],&b[i],&c[i],&d[i]);
    ll temp,oi,wen;
    for(int i=0;i<=maxp;++i)
    {
        oi=0;wen=0;
        for(int j=1;j<=n;++j)
        {
            if( (1<<(j-1))&i )
            {
                oi+=c[j];
                wen-=d[j];
                if(wen<0)
                    wen=0;
            }
            else
            {
                wen+=a[j];
                oi-=b[j];
                if(oi<0)
                    oi=0;
            }
        }
        temp=oi*wen;
        if(ans<temp)
            ans=temp;
    }
    cout<<ans;
}

T1

T2

用到了一个性质:

在一个无环图里,联通快个数=点数-边数 (证明很显然啊啊啊)

然后维护出 点和边数的前缀和就完了...

#include <cstdio>
#include <cstring>
#include <iostream>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int readdan()
{
    char q=getchar();
    while(q!=‘0‘&&q!=‘1‘)q=getchar();
    return q-‘0‘;
};
const int N=2006;

int n,m,Q;
int a[N][N];

int d[N][N];
int by[N][N],bx[N][N],b[N][N];

void chu()
{
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
            d[i][j]=d[i-1][j]+d[i][j-1]-d[i-1][j-1]+a[i][j];
    int con,conx;
    for(int i=1;i<=n;++i)
    {
        con=0;conx=0;
        for(int j=1;j<=m;++j)
        {
            if(a[i][j]&&a[i][j-1])
                ++con;
            if(a[i][j]&&a[i-1][j])
                ++con;
            if(a[i][j]&&a[i+1][j])
                ++conx;
            b[i][j]=b[i-1][j]+con;
            bx[i][j]=conx;
            by[i][j]=by[i-1][j]+( (a[i][j]&&a[i][j+1])?1:0 );
        }
    }
}

void out11()
{
    printf("\n");
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
            printf("%d ",b[i][j]);
        printf("\n");
    }
    printf("\n");
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
            printf("%d ",bx[i][j]);
        printf("\n");
    }
    printf("\n");
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
            printf("%d ",by[i][j]);
        printf("\n");
    }
    printf("\n");
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
            printf("%d ",d[i][j]);
        printf("\n");
    }
    printf("\n");
}

int main(){

    freopen("T2.in","r",stdin);

    scanf("%d%d%d",&n,&m,&Q);
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
            a[i][j]=readdan();
    chu();
    //out11();
    int lx,ly,rx,ry;
    for(int i=1;i<=Q;++i)
    {
        scanf("%d%d%d%d",&lx,&ly,&rx,&ry);
        int tb,td;
        tb=b[rx][ry]-b[lx-1][ry]-b[rx][ly-1]+b[lx-1][ly-1]-(by[rx][ly-1]-by[lx-1][ly-1])-(bx[lx-1][ry]-bx[lx-1][ly-1]);
        td=d[rx][ry]-d[lx-1][ry]-d[rx][ly-1]+d[lx-1][ly-1];
        printf("%d\n", td-tb );
    }
}

T2

T3

脑洞打开的数学题 (然而我的脑洞并没有打开啊...)

题解在代码里

/*
这个题真是 考(kao)思(nao)维(dong)
实际上是求个逆序对
然后根据规律 发现是个 等差数列
然后就找规律吧...
 */
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#define ll long long
using namespace std;
const int MAXA=100006;

int tin1,a,mod,n;

ll c[MAXA];
void add(int val)
{
    for(int i=val;i<MAXA;i+=(i&(-i)) )
        ++c[i];
}
ll qq(int val)
{
    ll ans=0;
    for(int i=val;i>0;i-=(i&(-i)) )
        ans+=c[i];
    return ans;
}

ll work()
{
    ll ans=0;
    int fir=tin1+1;
    int num1=(mod-fir)/a+1;
    ll temp,num=-1,temp1,las=-1,firtot=(mod-fir)/a+1;
    int now=fir+a*(num1-1);
    //printf("firtot=%lld num1=%d\n",firtot,num1);
    for(int i=num1+1;i<=n;++i)
    {
        now+=a;
        if(now>mod)
        {
            ++num;
            now-=mod;
            las=-1;
        }
        //printf("i=%d now=%d num=%lld las=%lld ",i,now,num,las);
        if(las==-1)
        {
            temp=i-1-qq(now)-num1;
            //printf("temp=%lld ",temp);
            if(now>fir)
                ans+=( firtot- ( (now-fir)/a+1 ) );
            else
                ans+=firtot;
            //printf("ans1=%lld ",ans);
            ans+=temp;
            //printf("ans2=%lld ",ans);
            las=temp;
        }
        else
        {
            las-=num;
            ans+=las;
            if(now>fir)
                ans+=( firtot- ( (now-fir)/a+1 ) );
            else
                ans+=firtot;
        }
        if(now<=a)add(now);
        //printf("ans=%lld\n",ans);
    }
    // 5 2 4 7
    return ans;
}

int main(){

    //freopen("T3.in","r",stdin);

    scanf("%d%d%d%d",&n,&tin1,&a,&mod);
    cout<<work();
}

T3

简单总结一下:

这次考试暴力分挺多,我也就拿了个 暴力分

思维含量 在 T2和T3 里

所以说 我思维还是要锻炼一下啊 (然而std表示 wocao这题怎么这么简单)

以后不管做题还是走路还是吃饭还是睡觉,还是不能走思啊啊啊啊

时间: 2024-10-30 13:58:43

9.26 考试的相关文章

5.26 考试修改+总结

论写5K+的代码在只有样例的条件下都可以调对 由此可见,勇气才是成功的关键 先放题解吧 第一题上午写的暴力不小心忘记题目换根之后还会染色了 然后就挂成了5分QAQ 有很大的部分分是SDOI染色,还有一部分是旅行 但是考试犯懒没有写 很容易发现任何一种颜色在树上都是连续的一段 那么我们不妨这么定义,如果一条边两端颜色不相同,我们定义为虚边,会对子树每个答案产生+1的贡献 如果两端颜色相同,我们定义为实边,不会产生贡献 不难发现,这样定义后的实边和虚边的性质和LCT的定义是一样的 我们考虑使用LCT

18.8.26 考试总结

我真的服了 我考试的时候这道题题都是读错了的 交了个挖挖机结果还狗了20分.. 这道题是一道找规律的题 看完题很显然能够发现我们可以将相同颜色的连通块缩点 因为同一个联通块的可以一次操作全部变成另外一种颜色 所以就缩点就好了.. 对于缩点后的一条链 每次我们可以将一个点变色 那么和他相邻的点就和他颜色一样 然后就再次缩点 所以每次链的长度都可以 -2 所以说最后缩点的次数就是  点的个数 / 2  (下取整) 但是这是对于一条链 那么对于一棵树而言呢? 其实是一样的 因为每次搞这个操作 我们都可

暑假集训结束

暑假集训结束了!!! 说实话其实还是有些遗憾的,我没有和同学一起去诸暨集训,但是我还是很高兴,我的同学将试题都发给了我,以至于我没有落后太多,所以这里致谢机房其他4位大佬. 我重新翻了一下我的做题记录,虽然做题不多,但是至少每道题都有收益,于是想要总结一下. 6.16 期末考试告一段落 6.17 复习了并查集,知道了并查集记录链头和链长的方法P1196 6.18 继续研究DP,加深了树形DP,学习了悬线法,用此方法解决了以前乱搞的题 6.19 复习状压DP 6.20 pb学哥来讲课了,然后学习了

【OCP认证12c题库】CUUG 071题库考试原题及答案(26)

26.choose two Examine the structure of the PRODUCTS table. Which two statements are true? A) EXPIRY_DATE always stores date and time in character format B) PRICE can store a maximum of eight digits and two decimals. C) PRODUCT_PIC can store only vide

考试总结 模拟26

心得: T1比较水,set水过,之前的有个达哥的等比数列的题,考场上忘了那道题怎么做了,虽然也做出来了 T2思路很好想,但分数十分玄学,(不考虑细节+数据很水+代码很菜=50分玄学分数) T3很显然的dp,看着像一个单调队列,但也不怎么会,线段树学习一下其他人的打法 题解 T1 一个贪心,对于每个数要尽量往前放,才能使块数更少,用一个set记录在当前块里的序列,若当前处理的数放入后会不符合要求,那就set清空,重新搞 T2 一个比较显然的图论题,对于取并集的情况,那就是这k个点向新点连边 取交集

【2019年8月】OCP 071认证考试最新版本的考试原题-第26题

Choose three Which three actions can you perfom only with system privileges? A) Truncate a table in another schema. B) Access flat files via a database, which are stored in an operating system directory. C) Log in to a database. D) Query any table in

在线考试系统(Online Exam System)--ASP.NET

用户设计 -|学生 -|老师 -|管理员 学生结构设计 -|个人信息管理 -|修改个人信息 -|修改登录密码 -|选课中心 -|显示所有老师所开课的信息可进行选课 -|显示自己已选课程 -|在线考试 -|对已选老师开设的课程选择进行考试 -|成绩查询 -|查看自己考试成绩   老师结构设计 -|个人信息管理 -|修改个人信息 -|修改登录密码 -|课程管理 -|显示学校开设的课程(老师可选择添加课程) -|显示老师开设的课程 -|考试管理 -|显示老师自己开设的课程 -|对课程添加试题(选择.填

浙江大学软件学院三维动画与交互技术考试概念整理

第一讲 1.    增强现实技术AR: --融合了三维动画.立体视觉和图像处理: --建模.渲染.位置标定.图像融合: 2.    OpenGL是一种用于创建实时3D图像的编程接口. 3.    三维这个术语表示一个正在描述或显示的物体具有三维维度:宽度.高度.深度: --计算机3D图形实质上也是平面的: --在计算机屏幕上显示的二维图像,提供深度(或第三维)的错觉: 2D+透视 = 3D 透视使人产生深度的错觉. 4.    真正的3D是通过人的两只眼睛观察同一个物体,在视网膜上生成具有视差的

数据库期末考试复习题 第一章

作者 : Dolphin 原文地址:http://blog.csdn.net/qingdujun/article/details/27820507 一.单项选择题: 1. 位于用户和操作系统之间的一层数据管理软件是  C    . A.DBS  B.DB  C.DBMS  D.MIS 2. 数据库系统中的数据模型通常由    A     三部分组成. A.数据结构.数据操作和完整性约束 B.数据定义.数据操作和安全性约束 C.数据结构.数据管理和数据保护 D.数据定义.数据管理和运行控制 3.