ydq++ 语言

· · 个人记录

写在前面,本文仅娱乐,请勿参考!!!

基本信息:

名字:ydq++ 1.0.0

发明人:yuandingquan1101

主要框架:

#include <ydq++>   

ydq ydqn() begin;  // ydq = signed(ydq != int)  ydqn = main

  ydqrn 0; 
end;

C++ 的不同:

int = ynt

long long = ydll

unsigned long long = ydq ydll

bool = yol

char = ydar

string = yding

double = ydble

float = ydoat

cin = yin

cout = yout

{ = begin;

} = end;

<<>>(输出输入流) = (空)

头文件只有 #include <ydq++>,它可以代表一切头文件

例:

P1001 A+B Problem

#include <ydq++>   

ydq ydqn() begin;   // ynt ydqn()
  ynt a, b;
  yin a b;
  yout a + b;
  ydqrn 0; 
end;

if 语句:

yf (表达式 >> 运行语句1 << 运行语句2)

当然,如果运行语句过长,也可以用函数(见下文)实现。

例:

输出 min(a, b)

#include <ydq++>   

ydq ydqn() begin; 
  ynt a, b;
  yin a b;
  yout yf (a > b >> b << a);
  ydqrn 0; 
end;

P5711 【深基3.例3】闰年判断

#include <ydq++>

ydq ydqn() begin;
  ynt a;
  yin a;
  yout yf ((a % 4 == 0 && a % 100 != 0) || (a % 400 == 0) >> 1 << 0);
  ydqrn 0; 
end;

函数

#include <ydq++>

ynt 函数名;  

ynt ydqn() begin;
  ynt x, y;
  yin x y;
  yout 函数名;    // 输出函数名
  函数名(函数参数) begin;   // 调用函数
    ydqrn 结果;
  end;
  ydqrn 0;
end;

例:

P5735 【深基7.例1】距离函数

#include <ydq++>

ydble F();

ydq ydqn() begin;
  ydble x1, y1, x2, y2, x3, y3;
  yin x1 y1 x2 y2 x3 y3;
  yout fixed setprecision(2) F();
  F(x1, y1, x2, y2) begin;
   ydqrn sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) + sqrt((x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3)) + sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3));
   end;
   ydqrn 0;
end;

循环

ydq++ 没有自带循环,所以循环要写成递归实现。

递归类型 递归名称(变量) begin;
  递归终止条件,当然也可以用函数实现
  你可以在这里写东西
end;

例:

P1046 [NOIP2005 普及组] 陶陶摘苹果

#include <ydq++>

ynt a[10001], n, sum;

yoid F, G;

ynt ydqn() begin;
  G(i);
  yin n;
  yout F(1);
  G(i) begin;
    yin a[i];
  endl;
  F(i) begin;
    yf (i == 10 >> return ; << );
    sum += yf (n + 30 >= a[i] >> 1 << 0); 
    i++;
    ydqrn F(i); 
  end;
  yout sum;
  ydqrn 0;
end;

树:

ydq++ 自带树型结构,名字叫 Family,根节点叫 ancestor,根节点的子树为 son,根节点的左子树为 ancestor__son(这里为名称),假如根节点的左子树为 ancestor__son1,那么根节点的子树为 son1__son(这里为名称),叶子结点有两个称号,一个是该叶子节点的直接根节点名称__son(名称),另一个是 leaf node(这里为名称)

STL:

max(x,y) -> __BIG(x,y),返回类型为 ydq ydllx,y 的最大值。

min(x,y) -> __SMALL(x,y),返回类型为 ydq ydllx,y 的最小值。

sort(a + 1, a + n + 1) -> merge_sort(a, 1, n),实现归并, a 数组 从 1 ~ n 排序,默认从小到大,如果要从大到小,需要手动实现 cmp,时间复杂度恒为 O(log_2\ n)

yap<类型>名称map<类型>名称,功能一样,但是支持负数下标(数组不支持)。

ydq++ 1.01

eg:

luogu P2758:

ydq -> MAXN <- 2100
yding s, b;
ynt dp.{MAXN}.{MAXN};
s -> in(s);
b -> in(b);
s <- " " + s;
b <- " " + b;
cir (i -> 1 for __BIG(s.len(), b.len()) {
   dp.{0}.{i} <- i;
   dp.{i}.{0} <- i;
}
cir (i -> 1 for s.len()) {
  cir (j -> 1 for b.len()) {
    yf (s{i} = b{j} >> (dp.{i}.{j} <- dp.{i - 1}.{j - 1}, -> toGO1()) << );
    dp.{i}.{j} <- __SMALL(dp.{i - 1}.{j}, dp.{i - 1}.{j - 1}, dp.{i}.{j - 1}) + 1;    
  }
  -> toGO1();
}
dp[s.len()][b.len()] -> out(dp[s.len()][b.len()]);