Блог пользователя Um_nik

Автор Um_nik, история, 7 месяцев назад, По-английски

Complete shitpost, don't take it seriously. We were discussing #define int long long and I suggested defining it to one letter if you want to save on typing so desperately. jeroenodb said that those are reserved for variables, which prompted me to think, "Is there a letter I don't standardly use for some particular purpose?" Then I compiled the following list, and then I thought, "Well, I already wrote it, let's put it on cf", so here we are.

a - array, but also all sorts of stuff
b - second array
c - third array / count
d - delta / divisor
e - event / edge
f - flag
g - graph / second flag
h - third iterator / third flag / height
i - iterator
j - second iterator
k - third input size / some parameter (i know, those are all parameters, but for some reason k is parameter)
l - left
m - number of edges / second input size
n - input size
o - ???
p - permutation / position
q - number of queries / query / second permutation / second position
r - right
s - string
t - tests / time / temp
u - second vertex
v - vertex
w - weight / value (because v is vertex???)
x - variable in math sense / x coordinate
y - y coordinate
z - use when need some letter that won't be used / z coordinate
  • Проголосовать: нравится
  • +766
  • Проголосовать: не нравится

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +139 Проголосовать: не нравится

o — ???

I have at times used o/z to keep track of the number of ones/zeroes in an array (often later realizing that I could simply have used cnt[2]). Note that this is a particularly cursed used of o as it looks like a 0 but is being used to indicate ones here, and I have indeed made mistakes because of this.

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится

I have used o a handful of times for a random variable name I confirm o += 1 is awful 3/10

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +27 Проголосовать: не нравится

I use o for the order of a certain array, when you want to do some sort without messing with the original array. For example when doing MO i might do an implementation like that:

vector<pii> queries(q);

for(auto&[l,r] : queries)
    cin >> l >> r, r--;
    
vector<int> o(q);
iota(all(o),0);

sort(all(o),[&](int a, int b){
    const int ba = queries[a].ff/LEN, bb = queries[b].ff/LEN;

    if(ba == bb)
        return (ba&1) ? queries[a].ss > queries[b].ss : 
            queries[a].ss < queries[b].ss;
    return ba < bb;
});
»
7 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится +70 Проголосовать: не нравится

The real unused character is _

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +32 Проголосовать: не нравится

For me, f and d are sometimes for dp, and g,h for the second and the third dp array.

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

o-??? r-right z-use me!!

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

You could use o for 1 to trick people into hacking your solutions thinking you have an off by 1 bug but it might violate code obfuscation rules and also requires hacking to be common in contests.

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I use const modint<998244353> o=0;

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +13 Проголосовать: не нравится

I tend to use o to mean offset.

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

'o' for ones in zero and one array + odd even tracking also sometimes.

»
7 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится -15 Проголосовать: не нравится

I name similarly. So do I think like an LGM?!

edit: this was meant to be a joke

»
7 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

o: odd

then I find out my code is failing because I wrote cnt = o instead of cnt = 0

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +7 Проголосовать: не нравится

If you really want to save as much time as possible on typing, you should be naming all of the variables 30+ symbols, so you train your typing speed while solving problems.

And after 10 years of CP you switch to 1 letter variables only to achieve maximum speed!

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +196 Проголосовать: не нравится

Am I the only one who always preferred using u as the first vertex and v as the second vertex?

It makes more sense to me since u comes before v in the alphabet and the edge is u -> v.

Example: DFS
»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

I use some of these, but everyone seems to have their own preferred variable and macro style. and i think That’s totally fine — as long as the code remains readable to you (and your teammates).

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

you use capital letters too when it gets real

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +101 Проголосовать: не нравится

I usually use k as a third iterator.

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +30 Проголосовать: не нравится

My most controversial one-letter variable naming's got to be using z for the third vertex (specifically, lca(u, v)). Come at me.

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I use o — operator

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I use o for "order", when ord is already taken

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

sometimes i define m as for mod purpose like m=1e9+7

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

If common small ones get used up, use their capital form.

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

o : ok

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится -16 Проголосовать: не нравится

d — disrance and depth also s — sum t — temporary trash variable For me, in addition to above. In rest it all pretty much matches my usage of the letters haha

»
7 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится +8 Проголосовать: не нравится
  • r — row
  • c — column
  • l — lca
  • f — first
  • s — second, start
  • e — end
  • q — queue
  • d — distance
»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится

v — vector

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

o — answer, output

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +76 Проголосовать: не нравится

There is something worse than #define int long long

constexpr int oo = 1e9;
constexpr ll OO = 1e18;
»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

f also flow

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

l for list

»
7 месяцев назад, скрыть # |
Rev. 4  
Проголосовать: нравится 0 Проголосовать: не нравится

For me:

d - depth (in tree problem)
f - father (in tree problem)
h - hash
m - map
p - mod (especially prime)
s - size (in tree problem) / set / stack
»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Well I think use s for sum is quite suitable

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I usually use o for a iterator which is necessary but barely appears in any calculating of at least two variables lol

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится -10 Проголосовать: не нравится

You can use ll like most of us. But if you really want to save time... You can try using '**o**'. If you say '**o**' is not even similar to long long or ll, then you can use L.

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

This is painfully accurate.

I've always assumed 'o' was for 'origin', but I've never actually used it. It's the emergency letter for when you run out of everything else.

Also, 'c' is frequently cost for me, especially in graph problems where w is already taken for weight.

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

So true lol

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

'o' can be count of odds, meanwhile i use 'q' for priority_queue

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I also sometimes use o and e for even and odd counts.

»
7 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

What about one uppercase letter names? C for binomial, I and J for iterators, X for random intermediate value, A and B when the answer is A-B

»
6 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

v for value, w for walue

i for index, j for jndex XD

sometimes i use o for original, like ov — original value, nv — new value, but hardly use a single o as a name

»
6 месяцев назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

I have always been advised against using single-letter variables.

»
6 месяцев назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится

I remember that I've recently posted similar comment. But turned out it was 10 years ago...

Here it is

»
6 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I often use $$$t$$$ for second string, and $$$f$$$ for dp table.

»
6 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится -10 Проголосовать: не нравится

you all cheaters should learn from this blog

hint for those who don't get the joke
»
6 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Maybe in some data structures when we need to maintain two operations, 1 for ... and 2 for ..., we may use

int o;
cin >> o;
if(o == 1) { // first operation
} else { // second operation
}
»
6 месяцев назад, скрыть # |
Rev. 5  
Проголосовать: нравится 0 Проголосовать: не нравится

Do you really think people who use #define int long long do so because long long is too long to type? We'd use #define ll long long then

»
6 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Me:'o' for 'OMG What this'

»
6 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

f can be function, then g could be second function, and h third function.

»
6 месяцев назад, скрыть # |
 
Проголосовать: нравится -10 Проголосовать: не нравится

I use d for

Spoiler
»
6 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

random name for me(in 2024.12~2025.7)(in order)(includes delta height ...) h y l z x now the same,except a,b,c,d added

»
6 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

so "z" is just useless -_-

and the funny thing is that I use "z" the most)

»
5 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Great blog that helps me understand more about code habits. Here are some additional meanings (completely coming from my own style.)

p[] and s[] can also be used for prefixs and suffixes.

Sometimes, I use s[] to represent the size of a certain array or something similar to that.

z[] is sometimes used in the ex-kmp algorithm.

»
5 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

this is so accurate lmao

»
5 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I sometime use p as prefix, s as sum and k as the third iterator

»
5 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

$$$\texttt{Variable 'o' stands for "Oh no, where did my bug go?"}$$$

»
5 месяцев назад, скрыть # |
 
Проголосовать: нравится +14 Проголосовать: не нравится

I use the letter “o” to represent the abbreviation of “ok”, or simply because in some places using it looks round and cute.

»
5 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

This post reminded me of the exact same conversation i had years ago. Editoral for a problem used a variable named not o, not oo, but ooo. We were flabbergasted to say the least

»
5 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Don't know about others ,but I find capital variable naming like A,M,N,O,I,J,CC,TT,MM,NN much handy xD , A, B -vectors
M,N — input size O- odd even counts I,J ->auto iterators CC ,TT — count . etc

»
5 месяцев назад, скрыть # |
 
Проголосовать: нравится -10 Проголосовать: не нравится

Helpfull

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится

Not one letter variables but I almost always use set<int> ste; and map<int,int> mpa;

»
2 месяца назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

I have used o a handful of times for a random variable name "ones" to count the number of ones in the string or array :)