比较精巧的一个INF无穷大值是0x3f3f3f3f。 0x3f3f3f3f的十进制是1061109567,也就是10^9级别的(和0x7fffffff一个数量级),而一般场合下的数据都是小于10^9的。 当我们把无穷大加上一个数据时,它并不会溢出(这就满足了“无穷大加一个有穷的数依然是无穷大”),事实上0x3f3f3f3f+0x3f3f3f3f=21222191...
const double eps = 1e-9; const ll INF = 0x3f3f3f3f3f3f3f3fll; const int inf = 0x3f3f3f3f; inline int read() { int ret = 0, sgn = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') sgn = -1; ch = getchar(); } while (ch >= ...
0x3f3f3f3f的十进制是1061109567,也就是10^9级别的(和0x7fffffff一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形; 由于一般的数据都不会大于10^9,所以当我们把无穷大加上一个数据时,它并不会溢出(这就满足了无穷大加一个有穷的数依然是无穷大)...
该语句把数值 val(取值范围为 0x00~0xFF)填充到数组a 的每个字节上,所以用 memset 只能得到 “每个字节都相同” 的 int。 当需要把一个数组中的数值初始化成正无穷时,为了避免加法算术上溢出或者繁琐的判断: 可以用 memset(a, 0x3f, sizeof(a)) 给数组的每个元素赋成 0x3f3f3f3f 2, ~0U >> 1 ~ ...
这两个指令通常用于确保代码仅在特定的编译环境中被包含。 #include<iostream>usingnamespacestd;intn;intmain(){// 如果没有定义 MAX 就定义MAX#ifndefMAX#defineMAX 0x3f3f3f3f#endifcout << MAX << endl;// 输出0x3f3f3f3f// 如果没定义DEBUG 就定义DEBUG, 否则将DEBUG重新定义#ifndefDEBUG#defineDEBUG...
// 日期统计 #include <bits/stdc++.h> #define int int64_t #define endl '\n' using namespace std; const int MAX = 1e5+5; const int INF = 0x3f3f3f3f3f3f3f3fll; const int MOD = 1e9+7; // 235 set<int> S; // 记录一年中合法的日期 set<int> M; // 记录出现的日期,自带去重...
现在开始分析C语言的代码(代码建议复制到notepad++中查看),为方便读者试验,每个代码都是独立的子模块,复制到工程中就可以编译运行: 一、配置高级定时器TIM1产生6路互补PWM,带刹车保护 详细配置代码如下,把下面的程序段拷贝到main.c中直接就可以输出PWM波形(要保证BKIN下拉),方便读者验证: ...
这个题问的是最少的用时,一般这种最优解问题,可能大部分人第一时间想到的是dp,可是这道题,机器人清扫后还要回到原点,因此他一定会把路线走两次,即每个机器人的用时应该是两倍的他走过的路程,由于每个机器人的工作时间可能不同,那么这些机器人各自的花费时间中的最大值(设为 t )的就是本题要求的答案,我们...
const int N = 200010, INF = 0x3f3f3f3f; int a[N], b[N], nums; unordered_map<int, vector<int>> mp; int dfs(int val, int p, int w){ int t = a[val]; for(int x: mp[val]){ if (x != p) { int k = dfs(x, val, w); ...
异或a^b:0xcc 3.位运算练习 1.定义两个变量unsigned char a=0x45,b=0x89;将a的第6位清0,将b的第4位置1; 2.定义两个整型变量a,b将a,b的值交换位置(不借助第三个变量,使用位运算); 3.定义一个整型变量data,将字符'a'、'b'、'c'、'd' 保存到data中,并输出字符abcd; ...