假设CCF的阅读程序题变成这样

灌水区

starfallen @ 2023-09-29 20:15:04

%:include<bits/stdc++.h>
using namespace std;
struct node<%int a,b;%>;
int n;
node* a<:100:>;
int main()<%
    ios_base::sync_with_stdio(false);
    cin>>n;
    for(int i=1;i<=n;++i) cin>>a<:i:>->a>>a<:i:>->b;
    sort(&a<:1:>,&a<:n+1:>,<::>(auto a,auto b)<%return a->a!=b->a?a->a<b->a:a->b<b->b;%>);
    while(n--) cout<<a<:n+1:>->a<<' '<<a<:n+1:>->b<<endl;
    return 0;
%>

一时兴起写的抽象代码 (用时1min)


by NEKO_Daze @ 2023-09-29 20:16:02

虽然但是,CCF有可能会这么玩(乱想


by zhanglh @ 2023-09-29 20:16:32

假设CCF的阅读程序题变成这样

#ifdef
   AC正规的线段树写法
#endif
#include <cstdio>
#include <iostream>
namespace def
{
    #define 换行 '\n'
    #define 如果 if
    #define 否则 else
    #define 循环 for
    #define 左儿子(i) i 座椅  1
    #define 右儿子(i) i 座椅  1 | 1
    #define 线段树 SegmentTree
    #define 整数 int
    #define 长整数 long long
    #define 使用 using
    #define 结构体 struct
    #define 常量 const
    #define 无返回类型 void 
    #define 返回 return
    #define 或 ||
    #define 且 &&
    #define 零 0
    #define 龟速输入 cin
    #define 龟速输出 cout
    #define 加1 ++
    #define 是  =
    #define 真是 ==
    #define 加上 +=
    #define 加 +
    #define 座椅 <<
    #define 友谊 >>
    #define 大鱼等于 >= 
    #define 大鱼 >
    #define 乘上 *
    #define 壹 1
    #define 贰 2
    #define 伍 5
    #define 小鱼等于 <=
    #define 引用 &
    #define 主函数 main
    #define 有符号整数 signed
    #define 壹yee伍 1e5
    #define 爱斯提地 std
    #define 命名空间 namespace 
    #define 减去 -
    #define 小鱼 <
    #define 的成员 .
}

使用 命名空间 爱斯提地;
常量 整数 数组大小 是 壹yee伍 加 伍;
长整数 序列[数组大小];
命名空间 线段树
{
    结构体 线段树类型
    {
        整数 左端点, 右端点;
        整数 长度() 常量
        {
            返回 右端点 减去 左端点 加 壹;
        }
        整数 懒标记;
        长整数 和;
    };
    线段树类型 节点[数组大小 座椅 贰];
    无返回类型 区间加操作(线段树类型 引用 更改节点, 长整数 增值)
    {
        更改节点 的成员 和 加上 增值 乘上 更改节点 的成员 长度();
        更改节点 的成员 懒标记 加上 增值;
    }
    无返回类型 下传懒标记(整数 编号)
    {
        如果(节点[编号] 的成员 懒标记 大鱼 零)
        {
            区间加操作(节点[左儿子(编号)], 节点[编号] 的成员 懒标记);
            区间加操作(节点[右儿子(编号)], 节点[编号] 的成员 懒标记);
            节点[编号] 的成员 懒标记 是 零;
        }
    }
    无返回类型 建树(整数 编号, 整数 区间左端点, 整数 区间右端点)
    {
        节点[编号] 的成员 左端点 是 区间左端点;
        节点[编号] 的成员 右端点 是 区间右端点;
        如果(区间左端点 真是 区间右端点)
        {
            节点[编号] 的成员 和 是 序列[区间左端点];
            返回 无返回类型();
        }
        整数 中点 是 (区间左端点 加 区间右端点) 友谊 壹;
        建树(左儿子(编号), 区间左端点, 中点);
        建树(右儿子(编号), 中点 加 壹, 区间右端点);
        节点[编号] 的成员 和 是 节点[左儿子(编号)] 的成员 和 加 节点[右儿子(编号)] 的成员 和;
    }
    无返回类型 更新(整数 编号, 整数 修改区间左端点, 整数 修改区间右端点, 长整数 增值)
    {
        如果(节点[编号] 的成员 左端点 大鱼 修改区间右端点 或 节点[编号] 的成员 右端点 小鱼 修改区间左端点)
        返回 无返回类型();
        如果(节点[编号] 的成员 左端点 大鱼等于  修改区间左端点 且 节点[编号] 的成员 右端点 小鱼等于 修改区间右端点)
        返回 区间加操作(节点[编号], 增值);
        下传懒标记(编号);
        更新(左儿子(编号), 修改区间左端点, 修改区间右端点, 增值);
        更新(右儿子(编号), 修改区间左端点, 修改区间右端点, 增值);
        节点[编号] 的成员 和 是 节点[左儿子(编号)] 的成员 和 加 节点[右儿子(编号)] 的成员 和;
    }
    长整数 查询(整数 编号, 整数 查询区间左端点, 整数 查询区间右端点)
    {
        如果(节点[编号] 的成员 左端点 大鱼 查询区间右端点 或 节点[编号] 的成员 右端点 小鱼 查询区间左端点)
        返回 零;
        如果(节点[编号] 的成员 左端点 大鱼等于 查询区间左端点 且 节点[编号] 的成员 右端点 小鱼等于 查询区间右端点)
        返回 节点[编号] 的成员 和;
        下传懒标记(编号);
        返回 查询(右儿子(编号), 查询区间左端点, 查询区间右端点) 加 查询(左儿子(编号), 查询区间左端点, 查询区间右端点);
    }
}
整数 序列长度, 操作次数;
使用 命名空间 线段树;
整数 主函数()
{
    龟速输入 友谊 序列长度 友谊 操作次数;
    循环(整数 枚举项 是 壹; 枚举项 小鱼等于 序列长度; 枚举项 加1)
    龟速输入 友谊 序列[枚举项];
    建树(壹, 壹, 序列长度);
    循环(整数 枚举项 是 壹; 枚举项 小鱼等于 操作次数; 枚举项 加1)
    {
        整数 操作编号, 操作左端点, 操作右端点;
        龟速输入 友谊 操作编号 友谊 操作左端点 友谊 操作右端点;
        如果(操作编号 真是 壹)
        {
            长整数 增值;
            龟速输入 友谊 增值;
            更新(壹, 操作左端点, 操作右端点, 增值);
        }
        否则
        龟速输出 座椅  查询(壹, 操作左端点, 操作右端点) 座椅  换行;
    }
    返回 零;
}

不是我写的别打我


by Pol_Pot @ 2023-09-29 20:16:51

为什么这句可以过编译啊

%:include<bits/stdc++.h>

by starfallen @ 2023-09-29 20:29:25

@Koji_Tasho 有着一种神奇的东西叫做助记符,它定义了%:为#


by Magus @ 2023-09-29 20:30:14

6


by jyz2012 @ 2023-09-30 09:13:24

6


|