日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

一些日常工具集合(C++代码片段)

發布時間:2025/4/16 c/c++ 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一些日常工具集合(C++代码片段) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一些日常工具集合(C++代碼片段)

  ——工欲善其事,必先利其器

  盡管不會松松松,但是至少維持一個比較小的常數還是比較好的

  在此之前依然要保證算法的正確性以及代碼的可寫性

  本文依然會持久更新,因為一次寫不完

Tools1:算法

  這個的重要性就不強調了,輕則多$log$,重則爆$n^2$,更令人窒息者為多項式和非多項式的區別

  設計一個好的算法,首先不要想著如何去用$O(n^2)$碾壓$O(n)$,而是先想如何實現$O(n)$才是比較好的

  洛咕日報15期(霸占評論區三天2333),關于基數排序的

Tools2:IO

  IO輸出要么沒有顯著優化,要么直接從TLE優化到AC,在另一篇博客有介紹https://www.cnblogs.com/CreeperLKF/p/8448568.html

  然后下面放上一些我平時用的貼在代碼前面且具有不同功能的一些東西:

  1.  短一些,只有一個小的工具包,沒有使用要求

1 #include <cstdio> 2 #include <cctype> 3 #include <cstring> 4 5 //User's Lib 6 7 using namespace std; 8 9 char buf[11111111], *pc = buf; 10 11 struct Main_Guard{ 12 Main_Guard(){ 13 fread(buf, 1, 11111111, stdin); 14 } 15 Main_Guard(const char *ins){ 16 freopen(ins, "r", stdin); 17 fread(buf, 1, 11111111, stdin); 18 } 19 Main_Guard(const char *ins, const char *ous){ 20 freopen(ins, "r", stdin); 21 freopen(ous, "w", stdout); 22 fread(buf, 1, 11111111, stdin); 23 } 24 ~ Main_Guard(){ 25 fclose(stdin), fclose(stdout); 26 } 27 }; 28 29 static inline int read(){ 30 int num = 0; 31 char c, sf = 1; 32 while(isspace(c = *pc++)); 33 if(c == 45) sf = -1, c = *pc ++; 34 while(num = num * 10 + c - 48, isdigit(c = *pc++)); 35 return num * sf; 36 } 37 38 namespace LKF{ 39 template <typename T> 40 extern inline T abs(T tar){ 41 return tar < 0 ? -tar : tar; 42 } 43 template <typename T> 44 extern inline void swap(T &a, T &b){ 45 T t = a; 46 a = b; 47 b = t; 48 } 49 template <typename T> 50 extern inline void upmax(T &x, const T &y){ 51 if(x < y) x = y; 52 } 53 template <typename T> 54 extern inline void upmin(T &x, const T &y){ 55 if(x > y) x = y; 56 } 57 template <typename T> 58 extern inline T max(T a, T b){ 59 return a > b ? a : b; 60 } 61 template <typename T> 62 extern inline T min(T a, T b){ 63 return a < b ? a : b; 64 } 65 } 66 67 //Source Code

  2.  長一些,分類討論一些開關,然后不是所有東西保證效率,功能多

1 //Created By Creeper_LKF 2 //Caution::We used "pragma" in the code 3 #include <cstdio> 4 #include <cctype> 5 #include <cassert> 6 #include <cstdlib> 7 #include <cstring> 8 #include <iostream> 9 10 #ifdef __gnu_linux__ 11 12 #include <fcntl.h> 13 #include <unistd.h> 14 #include <sys/mman.h> 15 16 #endif 17 18 #if __cplusplus < 201103L 19 20 #include <stdarg.h> 21 22 #endif 23 24 //Algorithm Heads 25 26 27 using namespace std; 28 29 //Debug Port 30 31 // #define DEBUG_PORT 32 #define DEBUG 33 34 #ifdef ONLINE_JUDGE 35 #undef DEBUG_PORT 36 #undef DEBUG 37 #endif 38 39 #ifdef DEBUG_PORT 40 #if __cplusplus >= 201103L 41 #ifdef DEBUG 42 template<typename T> 43 extern inline void Debug(T tar){ 44 cerr << tar << endl; 45 } 46 template<typename Head, typename T, typename... Tail> 47 extern inline void Debug(Head head, T mid, Tail... tail){ 48 cerr << head << ' '; 49 Debug(mid, tail...); 50 } 51 #else 52 template<typename Head, typename T, typename... Tail> 53 extern inline void Debug(Head, T, Tail...){ 54 return ; 55 } 56 #endif 57 #else 58 # pragma message "Warning : C++11 Not Use" 59 #ifdef DEBUG 60 template <typename T> 61 extern inline void Debug(T tar){ 62 cerr << tar << endl; 63 } 64 #else 65 template <typename T> 66 extern inline void Debug(T){ 67 return ; 68 } 69 #endif 70 #endif 71 #else 72 template<typename Head, typename T, typename... Tail> 73 extern inline void Debug(Head, T, Tail...){ 74 return ; 75 } 76 template <typename T> 77 extern inline void Debug(T){ 78 return ; 79 } 80 #endif 81 82 const char file_name[] = "b"; 83 84 #define NAME_SPACE 85 #define USING 86 87 #ifdef NAME_SPACE 88 namespace LKF{ 89 #endif 90 #define SF_READ 91 #define EOF_READ 92 // #define ONLINE_JUDGE 93 #define WRITE_ENDL 94 // #define FAST_WRITE 95 #define SPLIT_WRITE 96 const size_t MAX_BUF_SIZE = 50000000; 97 98 #define NEED_FILE 99 100 #ifdef FAST_WRITE 101 char outp[MAX_BUF_SIZE], *op = outp; 102 #endif 103 104 #ifdef ONLINE_JUDGE 105 #undef NEED_FILE 106 #endif 107 108 #ifdef FAST_WRITE 109 #ifndef WRITE_ENDL 110 #define WRITE_ENDL 111 #endif 112 #endif 113 114 extern inline void FILE_OPT(){ 115 #ifdef NEED_FILE 116 #define FILE_NAME file_name 117 char IN_FILE[sizeof(FILE_NAME) + 5], OUT_FILE[sizeof(FILE_NAME) + 5]; 118 strcpy(IN_FILE, FILE_NAME), strcpy(OUT_FILE, FILE_NAME); 119 strcat(IN_FILE, ".in"), strcat(OUT_FILE, ".out"); 120 freopen(IN_FILE, "r", stdin); 121 freopen(OUT_FILE, "w", stdout); 122 #endif 123 } 124 125 #ifdef __gnu_linux__ 126 127 char *pc; 128 129 struct Main_Guard{ 130 Main_Guard(){ 131 #ifndef ONLINE_JUDGE 132 FILE_OPT(); 133 pc = (char *) mmap(NULL, lseek(0, 0, SEEK_END), PROT_READ, MAP_PRIVATE, 0, 0); 134 #endif 135 } 136 ~ Main_Guard(){ 137 #ifdef FAST_WRITE 138 fwrite(outp, 1, op - outp, stdout); 139 #endif 140 fclose(stdin), fclose(stdout); 141 } 142 }; 143 144 #else 145 146 char buf[MAX_BUF_SIZE], *pc = buf; 147 148 struct Main_Guard{ 149 Main_Guard(){ 150 FILE_OPT(); 151 fread(buf, 1, MAX_BUF_SIZE, stdin); 152 } 153 ~ Main_Guard(){ 154 #ifdef FAST_WRITE 155 fwrite(outp, 1, op - outp, stdout); 156 #endif 157 fclose(stdin), fclose(stdout); 158 } 159 }; 160 161 #endif 162 163 inline char read_ch(){ 164 char c; 165 while(isspace(c = *pc ++)); 166 return c; 167 } 168 169 #ifdef EOF_READ 170 171 #ifdef SF_READ 172 173 template<typename T> 174 static inline void read(T &num){ 175 num = 0; 176 char c, sf = 1; 177 while(isspace(c = *pc++)); 178 if(c == 45) sf = -1, c = *pc ++; 179 while(num = num * 10 + c - 48, isdigit(c = *pc++)); 180 num *= sf; 181 } 182 183 static inline int read(){ 184 int num = 0; 185 char c, sf = 1; 186 while(isspace(c = *pc++)); 187 if(c == 45) sf = -1, c = *pc ++; 188 while(num = num * 10 + c - 48, isdigit(c = *pc++)); 189 return num * sf; 190 } 191 192 static inline double read_dec(){ 193 double num = 0, decs = 1; 194 char c, sf = 1; 195 while(isspace(c = *pc ++)); 196 if(c == '-') sf = -1, c = *pc ++; 197 while(num = num * 10 + c - 48, isdigit(c = *pc ++)); 198 if(c != '.') return num * sf; 199 c = *pc ++; 200 while(num += (decs *= 0.1) * (c - 48), isdigit(c = *pc ++)); 201 return num * sf; 202 } 203 204 #else 205 206 template<typename T> 207 static inline T read(T &num){ 208 num = 0; 209 char c; 210 while (isspace(c = *pc++)); 211 while (num = num * 10 + c - 48, isdigit(c = *pc++)); 212 return num; 213 } 214 215 static inline int read(){ 216 int num = 0; 217 char c; 218 while (isspace(c = *pc++)); 219 while (num = num * 10 + c - 48, isdigit(c = *pc++)); 220 return num; 221 } 222 223 static inline double read_dec(){ 224 double num = 0, decs = 1; 225 char c; 226 while(isspace(c = *pc ++)); 227 while(num = num * 10 + c - 48, isdigit(c = *pc ++)); 228 if(c != '.') return num; 229 c = *pc ++; 230 while(num += (c - 48) * (decs *= 0.1), isdigit(c = *pc ++)); 231 return num; 232 } 233 234 #endif 235 236 #else 237 238 #ifdef SF_READ 239 240 template<typename T> 241 static inline void read(T &num){ 242 num = 0; 243 char c, sf = 1; 244 while((c = *pc++) < 45); 245 if(c == 45) sf = -1, c = *pc ++; 246 while(num = num * 10 + c - 48, (c = *pc++) >= 48); 247 num *= sf; 248 } 249 250 static inline int read(){ 251 int num = 0; 252 char c, sf = 1; 253 while((c = *pc++) < 45); 254 if(c == 45) sf = -1, c = *pc ++; 255 while(num = num * 10 + c - 48, (c = *pc++) >= 48); 256 return num * sf; 257 } 258 259 static inline double read_dec(){ 260 double num = 0, decs = 1; 261 char c, sf = 1; 262 while(isspace(c = *pc ++)); 263 if(c == '-') sf = -1, c = *pc ++; 264 while(num = num * 10 + c - 48, isdigit(c = *pc ++)); 265 if(c != '.') return num * sf; 266 c = *pc ++; 267 while(num += (decs *= 0.1) * (c - 48), isdigit(c = *pc ++)); 268 return num * sf; 269 } 270 271 #else 272 273 template<typename T> 274 static inline T read(T &num){ 275 num = 0; 276 char c; 277 while ((c = *pc++) < 48); 278 while (num = num * 10 + c - 48, (c = *pc++) >= 48); 279 return num; 280 } 281 282 static inline int read(){ 283 int num = 0; 284 char c; 285 while ((c = *pc++) < 48); 286 while (num = num * 10 + c - 48, (c = *pc++) >= 48); 287 return num; 288 } 289 290 static inline double read_dec(){ 291 double num = 0, decs = 1; 292 char c; 293 while(isspace(c = *pc ++)); 294 while(num = num * 10 + c - 48, isdigit(c = *pc ++)); 295 if(c != '.') return num; 296 c = *pc ++; 297 while(num += (c - 48) * (decs *= 0.1), isdigit(c = *pc ++)); 298 return num; 299 } 300 301 #endif 302 303 #endif 304 305 #ifdef FAST_WRITE 306 template <typename T> 307 inline void Call_Write(char Split, T tar){ 308 char buf[20]; 309 int top = 0; 310 if(tar == 0) *op ++ = 48; 311 else { 312 if(tar < 0) *op ++ = '-', tar = -tar; 313 while(tar) buf[++top] = tar % 10, tar /= 10; 314 while(top) *op ++ = buf[top --] ^ 48; 315 } 316 *op ++ = Split; 317 } 318 template <typename T> 319 inline void Call_Write(T tar){ 320 char buf[20]; 321 int top = 0; 322 if(tar == 0) *op ++ = 48; 323 else { 324 if(tar < 0) *op ++ = '-', tar = -tar; 325 while(tar) buf[++top] = tar % 10, tar /= 10; 326 while(top) *op ++ = buf[top --] ^ 48; 327 } 328 } 329 #endif 330 331 #ifdef FAST_WRITE 332 333 extern inline void write(){ 334 *op ++ = '\n'; 335 } 336 337 template<typename T> 338 extern inline void write(T tar){ 339 Call_Write(tar); 340 #ifdef WRITE_ENDL 341 write(); 342 #endif 343 } 344 345 #if __cplusplus >= 201103L 346 347 template<typename T> 348 extern inline void write(char, T tar){ 349 Call_Write(tar); 350 #ifdef WRITE_ENDL 351 write(); 352 #endif 353 } 354 355 template<typename Head, typename T, typename... Tail> 356 extern inline void write(char Split, Head head, T mid, Tail... tail){ 357 Call_Write(Split, head); 358 write(Split, mid, tail...); 359 } 360 361 #else 362 363 template <typename T> 364 extern inline void write(char Split, T tar){ 365 Call_Write(tar); 366 #ifdef WRITE_ENDL 367 write(); 368 #endif 369 } 370 371 #endif 372 373 #else 374 375 extern inline void write(){ 376 cout << endl; 377 } 378 379 template<typename T> 380 extern inline void write(T tar){ 381 cout << tar; 382 #ifdef WRITE_ENDL 383 write(); 384 #endif 385 } 386 387 #if __cplusplus >= 201103L 388 389 template<typename T> 390 extern inline void write(char Split, T tar){ 391 cout << tar << Split; 392 #ifdef WRITE_ENDL 393 write(); 394 #endif 395 } 396 397 template<typename Head, typename T, typename... Tail> 398 extern inline void write(char Split, Head head, T mid, Tail... tail){ 399 #ifdef SPLIT_WRITE 400 cout << head << Split; 401 #else 402 cout << head; 403 #endif 404 write(Split, mid, tail...); 405 } 406 407 #else 408 409 template <typename T> 410 extern inline void write(char Split, T tar){ 411 cout << tar << Split; 412 #ifdef WRITE_ENDL 413 write(); 414 #endif 415 } 416 417 #endif 418 419 #endif 420 421 template <typename T> 422 extern inline void upmax(T &x, const T &y){ 423 if(x < y) x = y; 424 } 425 template <typename T> 426 extern inline void upmin(T &x, const T &y){ 427 if(x > y) x = y; 428 } 429 430 #if __cplusplus >= 201103L 431 432 template<typename T> 433 extern inline T max(T tar){ 434 return tar; 435 } 436 437 template<typename T> 438 extern inline T min(T tar){ 439 return tar; 440 } 441 442 template <typename Head, typename T, typename... Tail> 443 extern inline Head max(Head head, T mid, Tail... tail){ 444 Head tmp = max(mid, tail...); 445 return head > tmp ? head : tmp; 446 } 447 template <typename Head, typename T, typename... Tail> 448 extern inline Head min(Head head, T mid, Tail... tail){ 449 Head tmp = min(mid, tail...); 450 return head < tmp ? head : tmp; 451 } 452 453 #else 454 455 template <typename T> 456 extern inline T max(T a, T b){ 457 return a > b ? a : b; 458 } 459 template <typename T> 460 extern inline T min(T a, T b){ 461 return a < b ? a : b; 462 } 463 464 #endif 465 466 template <typename T> 467 extern inline T abs(T tar){ 468 return tar < 0 ? -tar : tar; 469 } 470 template <typename T> 471 extern inline void swap(T &a, T &b){ 472 T t = a; 473 a = b; 474 b = t; 475 } 476 #ifdef NAME_SPACE 477 } 478 #endif 479 480 //Algorithm 481 482 #ifdef NAME_SPACE 483 namespace LKF{ 484 #endif 485 486 template <class Tn, size_t ArraySize> 487 struct Queue{ 488 size_t s, t; 489 Tn q[ArraySize]; 490 Queue(){ 491 s = 1, t = 0; 492 } 493 inline void clear(){ 494 s = 1, t = 0; 495 } 496 inline bool empty(){ 497 return s > t; 498 } 499 inline size_t size(){ 500 return t - s + 1; 501 } 502 inline void push(Tn tar){ 503 q[++ t] = tar; 504 } 505 inline void pop_front(){ 506 s ++; 507 } 508 inline void pop_back(){ 509 t --; 510 } 511 inline Tn front(){ 512 return q[s]; 513 } 514 inline Tn back(){ 515 return q[t]; 516 } 517 }; 518 519 template <class Tn, size_t ArraySize> 520 struct Stack{ 521 size_t t; 522 Tn s[ArraySize]; 523 Stack(){ 524 t = 0; 525 } 526 inline void clear(){ 527 t = 0; 528 } 529 inline bool empty(){ 530 return t == 0; 531 } 532 inline size_t size(){ 533 return t; 534 } 535 inline void push(Tn tar){ 536 s[++ t] = tar; 537 } 538 inline Tn top(){ 539 return s[t]; 540 } 541 inline void pop(){ 542 t --; 543 } 544 }; 545 546 #ifdef NAME_SPACE 547 } 548 #endif 549 550 #ifdef USING 551 552 #ifdef NAME_SPACE 553 using LKF::pc; 554 using LKF::read_ch; 555 using LKF::read_dec; 556 using LKF::read; 557 using LKF::write; 558 using LKF::upmax; 559 using LKF::upmin; 560 using LKF::max; 561 using LKF::min; 562 using LKF::abs; 563 // using LKF::swap; 564 #else 565 using ::pc; 566 using ::read_ch; 567 using ::read_dec; 568 using ::read; 569 using ::write; 570 using ::upmax; 571 using ::upmin; 572 using ::max; 573 using ::min; 574 using ::abs; 575 // using ::swap; 576 #endif 577 578 #endif 579 580 //Source Code

  3.  C++11下可以使用調試多參數調試?Debug(arg1, arg2...)?,建議搭配dot可以直接圖論題中繪圖,可以不刪除調試代碼交到Luogu上

1 #include <cstdio> 2 #include <cctype> 3 #include <cstring> 4 #include <iostream> 5 6 //User's Lib 7 8 using namespace std; 9 10 // #define DEBUG_PORT 11 #define DEBUG 12 13 #ifdef ONLINE_JUDGE 14 #undef DEBUG_PORT 15 #undef DEBUG 16 #endif 17 18 #ifdef DEBUG_PORT 19 #if __cplusplus >= 201103L 20 #ifdef DEBUG 21 template<typename T> 22 extern inline void Debug(T tar){ 23 cerr << tar << endl; 24 } 25 template<typename Head, typename T, typename... Tail> 26 extern inline void Debug(Head head, T mid, Tail... tail){ 27 cerr << head << ' '; 28 Debug(mid, tail...); 29 } 30 #else 31 template<typename Head, typename T, typename... Tail> 32 extern inline void Debug(Head, T, Tail...){ 33 return ; 34 } 35 #endif 36 #else 37 # pragma message "Warning : C++11 Not Use" 38 #ifdef DEBUG 39 template <typename T> 40 extern inline void Debug(T tar){ 41 cerr << tar << endl; 42 } 43 #else 44 template <typename T> 45 extern inline void Debug(T){ 46 return ; 47 } 48 #endif 49 #endif 50 #else 51 template<typename Head, typename T, typename... Tail> 52 extern inline void Debug(Head, T, Tail...){ 53 return ; 54 } 55 template <typename T> 56 extern inline void Debug(T){ 57 return ; 58 } 59 #endif 60 61 char buf[11111111], *pc = buf; 62 63 struct Main_Guard{ 64 Main_Guard(){ 65 fread(buf, 1, 11111111, stdin); 66 } 67 Main_Guard(const char *ins){ 68 freopen(ins, "r", stdin); 69 fread(buf, 1, 11111111, stdin); 70 } 71 Main_Guard(const char *ins, const char *ous){ 72 freopen(ins, "r", stdin); 73 freopen(ous, "w", stdout); 74 fread(buf, 1, 11111111, stdin); 75 } 76 ~ Main_Guard(){ 77 fclose(stdin), fclose(stdout); 78 } 79 }; 80 81 static inline int read(){ 82 int num = 0; 83 char c, sf = 1; 84 while(isspace(c = *pc++)); 85 if(c == 45) sf = -1, c = *pc ++; 86 while(num = num * 10 + c - 48, isdigit(c = *pc++)); 87 return num * sf; 88 } 89 90 namespace LKF{ 91 template <typename T> 92 extern inline T abs(T tar){ 93 return tar < 0 ? -tar : tar; 94 } 95 template <typename T> 96 extern inline void swap(T &a, T &b){ 97 T t = a; 98 a = b; 99 b = t; 100 } 101 template <typename T> 102 extern inline void upmax(T &x, const T &y){ 103 if(x < y) x = y; 104 } 105 template <typename T> 106 extern inline void upmin(T &x, const T &y){ 107 if(x > y) x = y; 108 } 109 template <typename T> 110 extern inline T max(T a, T b){ 111 return a > b ? a : b; 112 } 113 template <typename T> 114 extern inline T min(T a, T b){ 115 return a < b ? a : b; 116 } 117 } 118 119 //Source Code 簡單

  4.  只能讀非負整數,然后用的是更快的讀入,但是在本地都開了文件輸入輸出

1 #include <cstdio> 2 3 #include <fcntl.h> 4 #include <unistd.h> 5 #include <sys/mman.h> 6 7 //User's Lib 8 9 using namespace std; 10 11 char *pc; 12 13 char outp[1111111], *op = outp; 14 15 struct Main_Guard{ 16 Main_Guard(){ 17 pc = (char *) mmap(NULL, lseek(0, 0, SEEK_END), PROT_READ, MAP_PRIVATE, 0, 0); 18 } 19 Main_Guard(const char *ins){ 20 freopen(ins, "r", stdin); 21 pc = (char *) mmap(NULL, lseek(0, 0, SEEK_END), PROT_READ, MAP_PRIVATE, 0, 0); 22 } 23 Main_Guard(const char *ins, const char *ous){ 24 freopen(ins, "r", stdin); 25 freopen(ous, "w", stdout); 26 pc = (char *) mmap(NULL, lseek(0, 0, SEEK_END), PROT_READ, MAP_PRIVATE, 0, 0); 27 } 28 ~ Main_Guard(){ 29 fwrite(outp, 1, op - outp, stdout); 30 fclose(stdin), fclose(stdout); 31 } 32 }; 33 34 inline int read(){ 35 int num = 0; 36 char c; 37 while((c = *pc ++) < 48); 38 while(num = num * 10 + c - 48, (c = *pc ++) >= 48); 39 return num; 40 } 41 42 inline void Write(const char *tar){ 43 for(register int i = 0, lim = strlen(tar); i < lim; i++) 44 *op ++ = tar[i]; 45 } 46 47 inline void Write(const int &tar){//You Need To Write '-' and '\n' By Hand 48 if(!tar) return ; 49 Write(tar / 10); 50 *op ++ = (tar % 10) ^ 48; 51 } 52 53 namespace LKF{ 54 template <typename T> 55 extern inline T abs(T tar){ 56 return tar < 0 ? -tar : tar; 57 } 58 template <typename T> 59 extern inline void swap(T &a, T &b){ 60 T t = a; 61 a = b; 62 b = t; 63 } 64 template <typename T> 65 extern inline void upmax(T &x, const T &y){ 66 if(x < y) x = y; 67 } 68 template <typename T> 69 extern inline void upmin(T &x, const T &y){ 70 if(x > y) x = y; 71 } 72 template <typename T> 73 extern inline T max(T a, T b){ 74 return a > b ? a : b; 75 } 76 template <typename T> 77 extern inline T min(T a, T b){ 78 return a < b ? a : b; 79 } 80 } 81 82 //Source Code 快速

  5.  C++11特性用,刪掉了分類討論

1 #include <cstdio> 2 #include <cctype> 3 #include <cstring> 4 #include <iostream> 5 6 //User's Lib 7 8 using namespace std; 9 10 #define DEBUG 11 12 #ifdef ONLINE_JUDGE 13 #undef DEBUG 14 #endif 15 16 #ifdef DEBUG 17 template<typename T> 18 extern inline void Debug(T tar){ 19 cerr << tar << endl; 20 } 21 template<typename Head, typename T, typename... Tail> 22 extern inline void Debug(Head head, T mid, Tail... tail){ 23 cerr << head << ' '; 24 Debug(mid, tail...); 25 } 26 #else 27 template<typename Head, typename T, typename... Tail> 28 extern inline void Debug(Head, T, Tail...){ 29 return ; 30 } 31 #endif 32 33 char buf[11111111], *pc = buf; 34 35 struct Main_Guard{ 36 Main_Guard(){ 37 fread(buf, 1, 11111111, stdin); 38 } 39 Main_Guard(const char *ins){ 40 freopen(ins, "r", stdin); 41 fread(buf, 1, 11111111, stdin); 42 } 43 Main_Guard(const char *ins, const char *ous){ 44 freopen(ins, "r", stdin); 45 freopen(ous, "w", stdout); 46 fread(buf, 1, 11111111, stdin); 47 } 48 ~ Main_Guard(){ 49 fclose(stdin), fclose(stdout); 50 } 51 }; 52 53 static inline int read(){ 54 int num = 0; 55 char c, sf = 1; 56 while(isspace(c = *pc++)); 57 if(c == 45) sf = -1, c = *pc ++; 58 while(num = num * 10 + c - 48, isdigit(c = *pc++)); 59 return num * sf; 60 } 61 62 namespace LKF{ 63 template <typename T> 64 extern inline void upmax(T &x, const T &y){ 65 if(x < y) x = y; 66 } 67 template <typename T> 68 extern inline void upmin(T &x, const T &y){ 69 if(x > y) x = y; 70 } 71 72 template<typename T> 73 extern inline T max(T tar){ 74 return tar; 75 } 76 77 template<typename T> 78 extern inline T min(T tar){ 79 return tar; 80 } 81 82 template <typename Head, typename T, typename... Tail> 83 extern inline Head max(Head head, T mid, Tail... tail){ 84 Head tmp = max(mid, tail...); 85 return head > tmp ? head : tmp; 86 } 87 template <typename Head, typename T, typename... Tail> 88 extern inline Head min(Head head, T mid, Tail... tail){ 89 Head tmp = min(mid, tail...); 90 return head < tmp ? head : tmp; 91 } 92 93 template <typename T> 94 extern inline T abs(T tar){ 95 return tar < 0 ? -tar : tar; 96 } 97 template <typename T> 98 extern inline void swap(T &a, T &b){ 99 T t = a; 100 a = b; 101 b = t; 102 } 103 } 104 105 //Source Code C++ 11

  6.  最簡單的快讀

1 #include <cstdio> 2 3 using namespace std; 4 5 char buf[11111111], *pc = buf; 6 7 struct Main_Guard{ 8 Main_Guard(){ 9 fread(buf, 1, 11111111, stdin); 10 } 11 Main_Guard(const char *ins){ 12 freopen(ins, "r", stdin); 13 fread(buf, 1, 11111111, stdin); 14 } 15 Main_Guard(const char *ins, const char *ous){ 16 freopen(ins, "r", stdin); 17 freopen(ous, "w", stdout); 18 fread(buf, 1, 11111111, stdin); 19 } 20 ~ Main_Guard(){ 21 fclose(stdin), fclose(stdout); 22 } 23 }; 24 25 inline int read(){ 26 int num = 0; 27 char c; 28 while((c = *pc ++) < 48); 29 while(num = num * 10 + c - 48, (c = *pc ++) >= 48); 30 return num; 31 } 32 33 //Source Code 快讀

由于最近改了一下,所以可能還會有一點Bug

Main_Guard調用方法就是在main函數開頭寫?Main_Guard main_guard;?如果需要讀入的話就在后面帶括號和文件名,輸出的話就帶兩個字符串

這樣的好處就是一定會調用析構函數

Tools3:__builtin_

  一個非常妙而且實用的工具,有些C++庫函數會調用到,不過自己去學會調用肯定會比較妙,整個Builtin家族非常大(看文檔https://gcc.gnu.org/onlinedocs/gcc/,具體可以在https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#Other-Builtins查找),這里只介紹一些常用的。下面的函數的參數以及返回值對照了gcc文檔。

  二進制相關

  (注意下面函數定義在unsigned int(或int)上,如果需要使用unsigned long long(或long long)版則可以在函數名后面加上ll,例如__builtin_ffsll接受long long的參數)(還有一個__builtin_clrsb看不懂什么玩意)。

  •   ?int __builtin_ffs (int x)?:查詢x二進制最后一個1是第幾位
  •   ?int __builtin_clz (unsigned int x)?:查詢x有多少個前導0,If?x?is 0, the result is undefined.
  •   ?int __builtin_ctz (unsigned int x)?:查詢x有多少個后綴0,If?x?is 0, the result is undefined.
  •   ?int __builtin_popcount (unsigned int x)?:查詢x有多少個1,在洛谷日爆未來的某期內我還了解到了還可以加#pragma GCC target ("popcnt")直接把這玩意轉化成指令加速,優化效果高達70%(網上某些題的實驗)
  •   ?int __builtin_parity (unsigned int x)?:查詢x的二進制奇偶校驗,也就是x中1的個數模2
  •   ?uint16_t __builtin_bswap16 (uint16_t x)?:按照字節翻轉二進制位,例如0xaabb翻轉成為0xbbaa,然后16可替換為32,64,表示位數
  •   CPU分支預測優化

      ?long __builtin_expect (long exp, long c)?

        函數的作用就是引導CPU在分支預測的時候選擇某個if分支執行,以前靠這個東西直接把一道題卡到了0ms,單點甩Rank2接近8ms,可見有些情況下效果還是不錯的

        食用方法:exp那里填寫你希望預測的一個表達式,建議不要寫的太復雜了,c填寫你預測表達式大概率會是什么值,然后直接用在if內即可,例如?if(__builtin_expect(a === b, 0))?

        效果:如果寫的比較好的話有一些大優化,否則會導致CPU頻繁罰時

        例子:例如你知道某個數據結構它的體型龐大而且你有特意地防止node指針指向NULL,但是如果你不放心的話那么可以加一個這個。例如表達式$i%100000000==1$一般會比較難成立,可以優化,而$i%10==1$就不需要這樣優化了

      提前寫入緩存

      ?void __builtin_prefetch (const void *addr, ...)?

        就是提前把數據取到緩存

        gcc的參數表最后面還有兩個可選參數,rw和locality,表示使用這個數據是讀或者寫(1是寫0是讀),以及這個數據的時間局部性。

        讀或者寫就不說了

        時間局部性表示這個數據在被訪問之后在一定時間內還會不會再次訪問(而不是距離第一次訪問還有多久),決定了這個數據在緩存中的“壽命”。0表示沒有時間局部性,也就是很長時間內不再訪問,而3表示高時間局部性,表示訪問了時候很快又會訪問。這個參數一定是個編譯時候的常量,默認為3.

    ?

    Tools4:細節

      首先register和inline標記應該都會吧。register表示建議編譯器將變量放在編譯器中,C++11及以上為了防止濫用漸漸開始忽略這個東西,在C++17時你會被提醒這個東西已經不能用了。inline在我講快讀那篇文章的末尾有https://www.cnblogs.com/CreeperLKF/p/8448568.html

      例如下面Luogu上兩份A+B Problem(找LZL123測試的),代碼相差無幾,但是時間差了584ms,空間差了63971kb,差距竟然只有1000的數據范圍

      見提交記錄https://www.luogu.org/record/show?rid=6205849和https://www.luogu.org/recordnew/show/5650350

      代碼區別:

      584ms:

    1 #include <cstdio> 2 int x[1<<24]; 3 int main() 4 { 5 int a,b,ans=0; 6 for(int i=1;i<=1<<24;++i) 7 x[i]++,ans+=x[i]; 8 scanf("%d%d",&a,&b); 9 printf("%d",a+b); 10 return 0; 11 }

      0ms:

    1 #include <cstdio> 2 int x[1<<24+1000]; 3 int main() 4 { 5 int a,b,ans=0; 6 for(int i=1;i<=1<<24+1000;++i) 7 x[i]++,ans+=x[i]; 8 scanf("%d%d",&a,&b); 9 printf("%d",a+b); 10 return 0; 11 }

    ?關于register:這種東西比較奇怪,現代CPU確實先進了不少,但是某些OJ上是有效的,例如提交記錄

    沒有優化

    register優化

    O2優化

    O2+register

    可能存在干擾因素,有興趣的可以自己去各大OJ調查一下(例如上次我在HDU加了優化之后還變慢了)

    Tools5:強力Random工具

    這個Random工具就是用mt19937(C++ Reference?Wiki)加上Linux下的/dev/random和/dev/urandom以及某種非常高精度的時鐘實現的,速度可觀,可以在Windows下運行

    然后測試效果海星,其中的宏也已經定義好,開袋即食,您的造數據好幫手

    注意如果要大量生成數據的話不要使用/dev/random,否則會比較卡(如果必須的話你可以手動調節一下中間的Init_Rand_Buf)

    注意某些函數可能會被成功inline,調試的時候如果發現這個函數“沒有調用”不要慌

    持續更新QWQ

    1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~Random_Part~~~~~~~~~~~~~~~~~~~~~~~~ 2 3 //食用說明:在一開始需要調用Rand_Initialize 4 //如果需求量和速度要求不高的話可以打開DO_NOT_USE_URANDOM 5 //如果在Linux的話可以打開RAND_BUF 6 //這樣可以讓隨機位取地比較好 7 //為什么要每8位取1次?因為發現如果8位取8個的話好像隨機性不優? 8 9 #include <chrono> 10 #include <random> 11 #include <algorithm> 12 13 #ifdef __gnu_linux__ 14 #define RAND_BUF 15 // #define DO_NOT_USE_URANDOM 16 #endif 17 18 #ifdef RAND_BUF 19 #include <fcntl.h> 20 #include <unistd.h> 21 #include <sys/types.h> 22 #include <sys/stat.h> 23 #endif 24 25 using namespace std; 26 27 mt19937 Generator; 28 29 #define BUF_SIZE 8193 30 31 #ifdef RAND_BUF 32 char rand_buf[BUF_SIZE], *p1 = rand_buf, *p2 = rand_buf; 33 int buf_times, rand_fd; 34 inline void Init_Rand_Buf(){ 35 buf_times ++; 36 if(buf_times < 127) p2 = (p1 = rand_buf) + read(rand_fd, rand_buf, sizeof(rand_buf)); 37 if(buf_times == 127 || p1 + BUF_SIZE != p2){ 38 if(buf_times == 127) buf_times = 0; 39 for(int i = 0; i < BUF_SIZE; i++) rand_buf[i] = Generator(); 40 p2 = (p1 = rand_buf) + BUF_SIZE; 41 } 42 } 43 inline int Rand_Bit(){ 44 if(p1 == p2) Init_Rand_Buf(); 45 return (*p1 ++ & 1); 46 } 47 #endif 48 49 inline void Rand_Initialize(){ 50 unsigned seed1 = chrono::system_clock::now().time_since_epoch().count(); 51 52 #ifdef RAND_BUF 53 #ifdef DO_NOT_USE_URANDOM 54 rand_fd = open("/dev/random", 0); 55 #else 56 rand_fd = open("/dev/urandom", 0); 57 #endif 58 Init_Rand_Buf(); 59 *(-- p2) = seed1 & 0xff; 60 *(-- p2) = (seed1 >> 8) & 0xff; 61 *(-- p2) = (seed1 >> 16) & 0xff; 62 *(-- p2) = (seed1 >> 24) & 0xff; 63 p2 ++, p2 ++, p2 ++, p2 ++; 64 seed_seq seed2(p1, p2); 65 Generator = mt19937(seed2); 66 #else 67 Generator mt19937(seed1); 68 #endif 69 } 70 71 inline unsigned Rand(){ 72 return Generator(); 73 } 74 75 inline unsigned Rand(unsigned up){ 76 return Rand() % up + 1; 77 } 78 79 inline unsigned Rand(unsigned down, unsigned up){ 80 return Rand() % (up - down + 1) + down; 81 } 82 83 inline double Rand_Float(){ 84 return (double)Rand() / (unsigned)0xffffffff; 85 } 86 87 inline unsigned long long Rand_ull(){ 88 return (unsigned long long)Rand() * Rand(); 89 } 90 91 #ifndef RAND_BUF 92 inline int Rand_Bit(){ 93 return Rand() & 1; 94 } 95 #endif 96 97 inline unsigned Rand_Number(unsigned up){ 98 return Rand() % up; 99 } 100 101 template <typename Iterator_Type> 102 inline void Random_Shuffle(Iterator_Type __first, Iterator_Type __last){ 103 random_shuffle(__first, __last, Rand_Number); 104 } 105 106 //~~~~~~~~~~~~~~~~~~~~~~~~~~~Random_Part~~~~~~~~~~~~~~~~~~~~~~~~

    ?

    ?Tools6:其他的東西

    1 //~~~~~~~~~~~~~~~~~~~~~~~Graph_Code~~~~~~~~~~~~~~~~~~~~ 2 3 template <size_t VS, size_t ES> 4 struct __Graph_Base{ 5 int tot; 6 int beginx[VS], endx[ES], nxt[ES]; 7 __Graph_Base() : tot(1){ 8 memset(beginx, 0, sizeof(beginx)); 9 } 10 inline void clear(){ 11 tot = 1; 12 memset(beginx, 0, sizeof(beginx)); 13 } 14 }; 15 16 template <size_t VS, size_t ES> 17 struct Graph : __Graph_Base<VS, ES>{ 18 19 using __Graph_Base<VS, ES>::tot; 20 using __Graph_Base<VS, ES>::nxt; 21 using __Graph_Base<VS, ES>::beginx; 22 using __Graph_Base<VS, ES>::endx; 23 24 inline void clear(){ 25 __Graph_Base<VS, ES>::clear(); 26 } 27 inline void add_edge(const int &u, const int &v){ 28 nxt[++ tot] = beginx[u], beginx[u] = tot, endx[tot] = v; 29 nxt[++ tot] = beginx[v], beginx[v] = tot, endx[tot] = u; 30 } 31 }; 32 33 //~~~~~~~~~~~~~~~~~~~~~~~Graph_Code~~~~~~~~~~~~~~~~~~~~ 34 35 //~~~~~~~~~~~~~~~~~~~~~~~Matrix_Code~~~~~~~~~~~~~~~~~~~ 36 37 template <size_t Matrix_Size> 38 struct Matrix{ 39 int a[Matrix_Size][Matrix_Size]; 40 41 Matrix(){ 42 memset(a, 0, sizeof(a)); 43 } 44 45 Matrix(const int &tar){ 46 memset(a, 0, sizeof(a)); 47 for(register int i = 1; i <= MAX; i++) 48 a[i][i] = tar; 49 } 50 51 inline int * operator [] (const int &tar){ 52 return a[tar]; 53 } 54 55 inline const int * operator [] (const int &tar) const { 56 return a[tar]; 57 } 58 59 inline Matrix operator * (const Matrix &tar) const { 60 Matrix ret; 61 for(register int i = 1; i <= MAX; i++) 62 for(register int k = 1; k <= MAX; k++) 63 for(register int j = 1; j <= MAX; j++) 64 ret[i][j] += a[i][k] * tar.a[k][j]; 65 return ret; 66 } 67 68 inline Matrix & operator *= (const Matrix &tar){ 69 return *this = (*this) * tar; 70 } 71 72 template <typename T> 73 inline Matrix operator ^ (register T tar) const { 74 Matrix ret(1), tmp = *this; 75 while(tar){ 76 if(tar & 1) ret *= tmp; 77 tmp *= tmp; 78 tar >>= 1; 79 } 80 return ret; 81 } 82 83 template <typename T> 84 inline Matrix & operator ^= (const T &tar){ 85 return *this = (*this) ^ tar; 86 } 87 88 template <typename T> 89 inline Matrix pow(register T tar, Matrix Init_Matrix) const { 90 Matrix ret(1); 91 while(tar){ 92 if(tar & 1) ret *= Init_Matrix; 93 Init_Matrix *= Init_Matrix; 94 tar >>= 1; 95 } 96 return ret; 97 } 98 99 }; 100 101 //~~~~~~~~~~~~~~~~~~~~~~~Matrix_Code~~~~~~~~~~~~~~~~~~~

    ?

    關于Graph:就是有時候同一道題可能會有很多張圖,然后你要調試的話就可以把這個東西寫開,然后為每一種圖加一個Debug,或者是有時候需要同時維護有向圖和無向圖

    關于Matrix:就不解釋了QWQ

    轉載于:https://www.cnblogs.com/CreeperLKF/p/9314916.html

    總結

    以上是生活随笔為你收集整理的一些日常工具集合(C++代码片段)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    久久久2o19精品 | 国产日韩欧美在线 | 国产日韩精品欧美 | 亚洲乱码精品 | 国产精品99精品 | 亚欧日韩av| 日韩欧美在线观看一区二区三区 | 永久免费精品视频网站 | 婷婷丁香狠狠爱 | 天天综合久久综合 | 视频国产在线 | 狠狠色噜噜狠狠 | 精品亚洲免费 | 色综合天天综合网国产成人网 | 亚洲视频在线免费观看 | 成人免费看黄 | 欧美成人性网 | 精品成人a区在线观看 | 色综合久久99 | 99热只有精品在线观看 | 日日夜夜天天 | 久久综合九色综合97_ 久久久 | 久久精品一二三 | 亚洲精品国产日韩 | 人人爽人人搞 | 成人av.com | 激情视频免费在线 | 日韩视频1 | 日韩在线视频二区 | 亚洲婷婷综合色高清在线 | 国产精品毛片一区视频播不卡 | 久久精选 | 欧美日韩国产三级 | 狠狠色丁香婷综合久久 | 国产成人免费在线 | 国产亚洲精品久久久久久 | 免费视频区 | 中文字幕免费久久 | 欧美日韩一区二区视频在线观看 | 在线黄色观看 | 91九色蝌蚪国产 | 日韩色av色资源 | 成人毛片100免费观看 | 日韩一二三在线 | 日韩精品视频网站 | 伊人超碰在线 | av网站免费线看精品 | 国产成人精品一区二三区 | 国产精品资源在线观看 | 久草精品免费 | 日本精品二区 | 亚洲天堂精品视频在线观看 | 亚洲视频在线观看免费 | 欧美精品乱码久久久久 | 免费在线观看av网址 | 国产精品theporn | 欧美福利视频一区 | 亚洲电影在线看 | 五月激情丁香 | av不卡网站| 网站免费黄| 日韩videos | 国语精品视频 | 99免费看片| 97色在线观看免费视频 | 91网页版在线观看 | 99国产视频在线 | 色网影音先锋 | 亚洲伦理中文字幕 | 日本精品久久久久久 | 日日操天天操狠狠操 | 在线观看av免费观看 | 国产色在线 | 最新日本中文字幕 | 久久成视频| 国产精品久久一卡二卡 | 日本激情视频中文字幕 | 婷婷狠狠操 | 成人丝袜 | 精品国产乱码久久久久久三级人 | 狠狠狠的干 | 国产免费又粗又猛又爽 | 欧美日韩视频在线观看一区二区 | 91福利免费 | 日日操操 | 亚洲亚洲精品在线观看 | 日本中文字幕观看 | 天天综合视频在线观看 | 亚洲成人黄色网址 | 久操视频在线播放 | 亚洲干| 国产区精品 | 精品久久一区二区三区 | 成人一级在线观看 | 狠狠干电影 | 啪啪精品 | 天堂网一区二区 | 久久精品免费观看 | 在线亚洲小视频 | 国内精品视频在线 | 国产午夜一区 | 国产91影院 | 国产欧美综合视频 | 免费十分钟| 亚洲色图美腿丝袜 | 狠狠色狠狠色综合系列 | 日韩 精品 一区 国产 麻豆 | 国产自在线 | 精品视频一区在线 | 玖玖国产精品视频 | 99麻豆视频| 永久免费精品视频 | 在线观看日韩专区 | 美女视频久久黄 | 国产精品自产拍在线观看 | 国产日韩欧美自拍 | 国产成人333kkk | av在观看| 中文字幕999 | 片网站 | 久久免费av电影 | 国产高清无线码2021 | 欧美日韩国产一区 | av福利第一导航 | 狠狠干夜夜爱 | 亚洲国产日韩在线 | 国产视 | 亚洲精品国内 | 波多野结衣一区二区 | 在线观看亚洲国产精品 | 特级毛片在线 | 国产黄色看片 | 精品999 | 最近中文字幕国语免费高清6 | 欧美一级专区免费大片 | www久| 在线观看不卡的av | 亚洲精品乱码久久久久久写真 | 国产精品一区免费观看 | 992tv在线观看 | 6080yy精品一区二区三区 | 色噜噜日韩精品一区二区三区视频 | 国产亚洲免费的视频看 | 在线看国产一区 | 国产精品久久久久久麻豆一区 | 久久久国产精品一区二区中文 | 美女视频黄免费的久久 | 久久国产精品99久久久久久丝袜 | 天天干天天干天天射 | 国产一区视频免费在线观看 | 精品av在线播放 | 探花视频免费在线观看 | 国产一区二区在线免费播放 | 久久国产品 | 欧美日韩免费在线观看视频 | 日日干日日操 | 欧美日韩激情视频8区 | 一性一交视频 | 国产99久久久国产精品 | 五月婷婷开心中文字幕 | 欧美一级艳片视频免费观看 | 精油按摩av | 91av超碰| 欧美欧美| 天天曰夜夜爽 | 不卡的一区二区三区 | 99精品国产免费久久久久久下载 | 日韩欧美视频在线免费观看 | 国产系列在线观看 | 爱情影院aqdy鲁丝片二区 | 色999五月色 | 五月天六月色 | 国产精品成人自产拍在线观看 | 日韩中文字幕亚洲一区二区va在线 | 亚洲伊人网在线观看 | 97精品国产97久久久久久久久久久久 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 一级一片免费看 | 在线观看激情av | 特级毛片在线 | 欧美夫妻生活视频 | 国产精品视频99 | 国产不卡av在线播放 | 超碰国产在线观看 | 欧美久久电影 | 99精品免费在线 | 人人澡人人爱 | 午夜久久久久 | 久久久国产毛片 | 视频二区 | 91大神在线观看视频 | 九九免费在线观看视频 | 亚洲九九精品 | 玖玖在线视频观看 | 久久精品首页 | 色视频在线看 | 伊人宗合网 | 国产午夜一级毛片 | 日日操操操 | 成人国产精品电影 | 中文字幕在线看视频国产中文版 | 日韩精品一区二区在线 | 成人app在线播放 | 综合色站| 天天爽天天射 | 国产一区二区观看 | 国产精品久久久久久久电影 | 国产成人99av超碰超爽 | 午夜精品三区 | 五月在线| 亚洲一级电影视频 | 国产第一页在线观看 | 五月婷婷六月综合 | www.99久久.com | 五月婷婷电影网 | 中文av在线免费观看 | 久久久久久久久久久精 | av成人在线网站 | 国产99精品在线观看 | 亚洲国产精品va在线看黑人 | 在线观看中文字幕网站 | 中文字幕一区二区三区久久蜜桃 | 69久久久| 草久在线视频 | 中文在线8资源库 | 国产国语在线 | 视频一区二区在线 | 免费手机黄色网址 | 色久综合 | 欧美日本不卡视频 | 久草在线免费在线观看 | 久久网址| 91精品国自产在线 | 免费黄在线观看 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 国产无吗一区二区三区在线欢 | 久久精品中文字幕少妇 | 亚洲一二视频 | 97超碰在线久草超碰在线观看 | 五月天狠狠操 | 免费情缘 | 日韩精品一区二区三区中文字幕 | 波多野结衣电影一区 | 亚洲婷婷在线 | 综合激情网 | 韩国三级在线一区 | 国产美女免费视频 | 午夜av影院| 日韩中文字幕亚洲一区二区va在线 | 精品福利在线 | 国产亚洲在线观看 | 久久精品福利 | 91麻豆文化传媒在线观看 | 特级黄色视频毛片 | 中文字幕日韩一区二区三区不卡 | 国产精品视频永久免费播放 | 国产精品男女视频 | 久草免费福利在线观看 | 欧美日韩国产在线观看 | 日韩av资源在线观看 | 波多野结衣一区二区三区中文字幕 | 精品国产一区二区三区四区在线观看 | 在线蜜桃视频 | 免费a视频在线 | 99精品国产aⅴ | 91福利社区在线观看 | 日韩精品中文字幕一区二区 | 亚洲四虎影院 | 又污又黄网站 | 久草在线中文888 | 国产精品21区 | 白丝av免费观看 | 国产精品18videosex性欧美 | 97在线免费观看 | 黄色亚洲免费 | 91人人网| 999久久a精品合区久久久 | 国产第页 | 久久夜色精品国产欧美乱极品 | 久久久久久久久久久影院 | 亚洲国产精品999 | 99这里只有精品视频 | 久久tv视频 | 日韩视频中文 | 中文字幕字幕中文 | 91网免费观看 | 亚洲精品一区二区久 | 人人看黄色 | 免费观看午夜视频 | 国产日韩精品一区二区在线观看播放 | 在线观看中文字幕一区二区 | 日韩视频一区二区在线观看 | 久久久久久久久久久久久久电影 | 五月黄色 | 六月天色婷婷 | 国产精品v欧美精品v日韩 | 免费观看特级毛片 | 久久tv视频 | 精品久久久久免费极品大片 | 色综合天天综合 | 亚洲成a人片综合在线 | 97人人澡人人爽人人模亚洲 | 成人av资源 | 国产中文字幕视频 | 日日夜夜免费精品视频 | 中日韩在线视频 | 成人在线观看免费 | 99久久久国产精品免费99 | 五月天色中色 | 婷婷色狠狠 | 亚洲精品乱码久久久久久蜜桃动漫 | 久久午夜电影院 | 久久与婷婷 | 日韩欧美一区二区在线观看 | 三级黄色大片在线观看 | 日韩av电影手机在线观看 | 中文字幕在线观看一区二区三区 | 午夜999 | 久久综合狠狠综合久久狠狠色综合 | 久久综合电影 | 午夜美女福利直播 | 日本黄网站 | 天天摸夜夜添 | 久日视频| 69国产精品视频免费观看 | 91亚洲在线观看 | 久久综合久久综合九色 | 免费观看成人 | 中文字幕精品久久 | 99中文字幕视频 | 免费观看www小视频的软件 | 在线91观看 | 日韩免费区 | 草久热 | 日日夜夜精品视频天天综合网 | 国产精品第52页 | 亚洲丝袜一区 | 青青草国产精品 | 西西444www大胆无视频 | 精品影院 | 婷婷激情综合五月天 | 久久久九色精品国产一区二区三区 | 久草精品视频在线观看 | 成年人在线免费看视频 | 九九九九精品九九九九 | 黄色av成人在线观看 | 日韩精品一区二区三区高清免费 | 久久久午夜精品福利内容 | 在线韩国电影免费观影完整版 | 亚洲精品美女久久 | 激情五月六月婷婷 | 久草久热 | 黄污视频大全 | 国产做aⅴ在线视频播放 | 国产在线不卡一区 | 韩国三级一区 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 深夜免费小视频 | 国产精品系列在线播放 | 亚洲国产中文字幕 | 天堂网一区二区 | 日韩大片在线看 | 在线观看日韩一区 | 韩日av一区二区 | 亚洲国产午夜精品 | 日韩精品首页 | 成人禁用看黄a在线 | 国产精品青草综合久久久久99 | 久久精品79国产精品 | 国产一区欧美二区 | 碰超在线 | 国产精品福利一区 | 色狠狠一区二区 | 国产精品一区二 | 麻豆91在线看 | 中文字幕av在线不卡 | 国产一级黄色av | 日日干 天天干 | 成人免费看片98欧美 | 干干日日 | 在线午夜av | 日本久久不卡视频 | 一区 在线观看 | 免费国产一区二区 | 久久久久久久国产精品 | 国产不卡av在线播放 | 国产特级毛片aaaaaa毛片 | 99精品久久精品一区二区 | 最新中文字幕在线观看视频 | 久久99久久精品国产 | 欧美美女视频在线观看 | 永久中文字幕 | 国产精品手机在线播放 | 精品一区二区免费在线观看 | 久久综合九色综合久久久精品综合 | 成人蜜桃网| 免费看污在线观看 | www久草| 91精品亚洲影视在线观看 | 色婷婷电影| 欧美色操 | 国产精品99久久免费观看 | 国产一区二区在线看 | 免费福利在线视频 | 亚洲精品永久免费视频 | 天天射综合网视频 | 一区二区三区四区免费视频 | 日免费视频 | 久久视频网 | 亚洲精品字幕在线观看 | 韩国一区二区三区在线观看 | 国产婷婷一区二区 | 高清久久久久久 | 一区在线观看视频 | 亚洲国产精品va在线看 | av中文字幕在线免费观看 | 色婷婷狠狠五月综合天色拍 | 久久视频国产精品免费视频在线 | 久久国产高清 | 国产精品露脸在线 | 久久成人在线视频 | 久久精品视频中文字幕 | 黄色91在线观看 | 亚洲精品在线电影 | 摸bbb搡bbb搡bbbb | 欧美日韩一区二区三区不卡 | 天天操天天操天天 | 亚洲人成影院在线 | 婷婷在线色| 尤物九九久久国产精品的分类 | 婷婷深爱网| 中文字幕亚洲字幕 | 亚洲美女视频在线 | 免费成视频 | 91成人免费视频 | 日韩中文幕 | 天天看天天操 | 97碰在线视频 | 激情自拍av | 精品久久美女 | 91成人免费电影 | 人人看人人| 国产午夜小视频 | 欧美一级免费 | 九九热99视频 | 免费十分钟 | 久久国产精品久久久久 | 欧美成人按摩 | 国产亚洲人成网站在线观看 | 99精品视频在线 | 91丨九色丨国产丨porny精品 | 国产精品久久久久久久久蜜臀 | 免费在线观看午夜视频 | 国产99久久久精品视频 | 国产一区二区三区午夜 | 色偷偷888欧美精品久久久 | 色综合久久五月天 | 日韩精品一区二区在线视频 | 国产成人三级在线观看 | 国产日韩欧美视频在线观看 | 国产99久久久精品 | 一级欧美黄 | 国产高清视频在线免费观看 | 日韩免费一区二区三区 | 天天色天天爱天天射综合 | 亚洲国产欧美一区二区三区丁香婷 | 成人在线免费小视频 | 成人久久国产 | 国产中文字幕在线免费观看 | 久久免费一 | 五月激情站| 日韩精品一区二区三区外面 | 国产精品96久久久久久吹潮 | 色五月情| 久久黄色免费视频 | 男女精品久久 | 国产自在线| 亚洲国产一二三 | 欧美韩日在线 | 久久夜色精品国产欧美乱极品 | 亚洲国产成人久久综合 | 久久av中文字幕片 | 婷婷夜夜| av电影中文| 亚洲精品美女免费 | 一二三区视频在线 | 国产精品国产三级国产 | 久久久久久久久综合 | 欧美伦理一区二区 | 欧美黄色特级片 | 久久天堂影院 | 亚洲高清视频在线 | 特级西西www44高清大胆图片 | 久久激情小说 | 久久久综合九色合综国产精品 | 国产在线国偷精品产拍 | 日韩在线视频网址 | 一区二区伦理电影 | 国产精品大全 | 有码一区二区三区 | 99久久精品免费看国产免费软件 | 欧美国产日韩中文 | 免费aa大片 | 久久艹艹 | av电影不卡在线 | a√资源在线 | 91理论片午午伦夜理片久久 | 亚洲自拍偷拍色图 | 伊人五月天.com | av免费电影网站 | 黄色在线成人 | 福利网址在线观看 | a在线观看视频 | 精品9999 | 人人舔人人舔 | 中文字幕资源在线观看 | 久久激五月天综合精品 | 国产探花| 国产小视频在线看 | 精品国产_亚洲人成在线 | 色欧美成人精品a∨在线观看 | 国产免费大片 | 91热精品 | 一区二区三区影院 | 国产精品久久久久影院 | 午夜精品久久久久久99热明星 | 国产一区私人高清影院 | 亚洲在线黄色 | 国产打女人屁股调教97 | 在线观看亚洲成人 | 狠狠色伊人亚洲综合成人 | 久久色中文字幕 | 视频在线亚洲 | 天天摸日日摸人人看 | 久草在线99 | 99视频国产在线 | 操一草 | 日韩精品中文字幕在线不卡尤物 | 亚一亚二国产专区 | 色黄www小说 | 久久久激情视频 | 亚洲免费观看在线视频 | 91精品视频一区二区三区 | 少妇性aaaaaaaaa视频 | 九九免费观看视频 | 欧美精品久久久久久久久久久 | 国产又粗又猛又爽又黄的视频先 | 激情电影影院 | 精品久久久久国产 | 国产成人精品一区二三区 | 欧美午夜精品久久久久久孕妇 | 狠狠狠色丁香综合久久天下网 | 国产精品麻豆99久久久久久 | 在线 高清 中文字幕 | 99精品国产在热久久 | 在线观看国产永久免费视频 | 成人91在线观看 | 精品国产久 | 最近免费中文字幕 | 欧美国产大片 | 麻豆视频www| 久草在线免费资源 | 久久精品国产亚洲精品 | 五月天综合婷婷 | 色婷婷丁香| 日韩r级电影在线观看 | 国产精品成人一区二区 | 国产在线观看午夜 | 三级视频片 | 一区国产精品 | 成人久久18免费网站图片 | 日韩免费观看一区二区 | 欧美性生活免费 | 精品国产成人 | 可以免费看av | 91麻豆精品国产91久久久无限制版 | 一级成人免费 | 国产视频久久久久 | 免费观看视频的网站 | 综合五月 | 日韩欧美一区二区三区在线观看 | 欧美精品一区二区性色 | 国产精品ssss在线亚洲 | 中文字幕免费不卡视频 | 精品久久久999 | 在线看污网站 | 超碰在线免费97 | 婷婷五月在线视频 | 国产小视频网站 | 国产成人黄色av | 欧洲一区二区在线观看 | 国产成人一区二区三区久久精品 | 99久久精品免费看 | 天天综合视频在线观看 | 久久久久久久久久久免费 | 久久久久久久久久久免费视频 | 久久99久久精品国产 | 婷婷亚洲综合五月天小说 | 精品夜夜嗨av一区二区三区 | 亚洲日本色| 亚洲日韩中文字幕 | 中文字幕免费高清 | 人人插人人看 | 国产黄色资源 | 国产视频一| 亚洲精品tv久久久久久久久久 | 欧美一级免费片 | 在线电影 一区 | 日本韩国欧美在线观看 | 国产破处在线视频 | 天天干天天操人体 | 五月在线 | 欧美一级黄色视屏 | 深夜男人影院 | 黄色av网站在线观看免费 | 日韩一区二区三区视频在线 | 欧美性极品xxxx娇小 | 日韩欧美在线影院 | 午夜12点| 亚洲成人黄色网址 | 国产亚州精品视频 | 欧美午夜理伦三级在线观看 | 黄网站色视频免费观看 | 久热电影| 免费在线黄网 | 国产一级免费在线观看 | 久久精品99国产国产精 | 精品国产伦一区二区三区观看说明 | 欧美日韩精品在线观看 | 色九九在线 | 91精品国产三级a在线观看 | av资源免费看 | 国产录像在线观看 | 国产精久久久 | 欧美日韩免费观看一区=区三区 | 天天草天天干 | 黄色tv视频 | 精品一区 精品二区 | 一区二区三区在线播放 | 成人观看 | 国产精品电影一区二区 | 国产日韩欧美视频在线观看 | 久久综合狠狠 | 精品国产诱惑 | 国产黄在线播放 | 最近最新中文字幕视频 | 91精品视频免费看 | 91av官网 | 日韩成人免费观看 | 国产精品久久久久aaaa | 99精品视频在线播放免费 | 日韩在线字幕 | 99国产免费网址 | 美女网站黄免费 | 久久免费在线观看 | www.在线观看视频 | 久久天天躁夜夜躁狠狠85麻豆 | 少妇性aaaaaaaaa视频 | 天堂v中文 | 久久精品96| 欧美经典久久 | 午夜婷婷在线播放 | 亚洲第一香蕉视频 | 国产专区在线播放 | 99亚洲精品视频 | 国产在线精 | 婷婷在线免费观看 | 狠狠狠色丁香婷婷综合激情 | 久久国产精品视频观看 | 韩日电影在线观看 | 精品少妇一区二区三区在线 | 91视频大全 | 99久e精品热线免费 99国产精品久久久久久久久久 | 啪啪凸凸 | 免费成人看片 | 中文字幕丰满人伦在线 | 天天色天天 | 亚洲精品在线免费看 | 婷婷精品进入 | 午夜精品一区二区三区在线播放 | 久久99影院 | 成人av电影在线 | 婷婷在线视频 | 国产午夜不卡 | 天天拍天天草 | 色a4yy| 亚洲精品在线观 | 亚洲日本在线一区 | 99视频在线观看视频 | 精品在线视频一区二区三区 | 免费能看的黄色片 | 中文字幕亚洲欧美日韩2019 | 国产精品欧美 | 91大神一区二区三区 | 日韩免费高清在线 | 国产一级二级三级在线观看 | 国产福利在线 | 日日干天夜夜 | 五月婷婷在线观看视频 | 中文在线www| 亚洲精品午夜aaa久久久 | 麻豆影视在线观看 | 久久黄色网页 | 在线成人中文字幕 | 日本不卡123 | 国产亚洲精品无 | 久久久久久久久久久久国产精品 | 久久超碰97 | 97人人网 | 欧美久久久久久久久久久 | 中文在线a√在线 | 国产精品精品视频 | 西西444www高清大胆 | 婷婷新五月 | 99av国产精品欲麻豆 | 久久综合色播五月 | 久久久久亚洲精品男人的天堂 | 亚洲区另类春色综合小说校园片 | 久久天天躁狠狠躁亚洲综合公司 | 欧美在线日韩在线 | 国产伦理久久 | 最近更新的中文字幕 | 美女精品国产 | 亚洲欧美日韩不卡 | 国产亚洲成人网 | 欧美日韩裸体免费视频 | 五月天婷婷丁香花 | 欧美日韩国产精品一区二区亚洲 | 又湿又紧又大又爽a视频国产 | 日日爱夜夜爱 | 成人影片在线播放 | 天堂素人在线 | 国产福利a| 99视频国产精品 | 国产精品久久久区三区天天噜 | 91精品国产高清自在线观看 | 在线中文字幕视频 | 久久成人国产精品一区二区 | a色网站| 久久精品国产免费观看 | 日日夜夜网站 | a天堂最新版中文在线地址 久久99久久精品国产 | av在线免费观看网站 | 亚洲成人av片| 四虎在线永久免费观看 | 丁香九月激情综合 | 贫乳av女优大全 | 日本中文字幕观看 | 天天草夜夜 | 免费在线91 | 精品国产自 | 一区二区三区高清 | 午夜精品久久久久久久99 | 97免费在线视频 | 精品国产日本 | 久久激情日本aⅴ | 日韩免费区 | 国产精品手机在线观看 | 日av免费| 免费黄色av电影 | 久草精品视频在线看网站免费 | 91精品播放 | 91粉色视频 | 三级av在线| 免费高清在线观看电视网站 | 69精品视频 | 亚洲,国产成人av | 美女免费网站 | 日夜夜精品视频 | 久久99精品久久只有精品 | 久久久亚洲影院 | 成人免费看片网址 | 日本在线观看一区二区三区 | 成人免费视频视频在线观看 免费 | 黄色小说免费观看 | 免费开视频 | 在线观看91网站 | www欧美xxxx| www.玖玖玖 | 精品一二区 | 国产婷婷久久 | 中文字幕.av.在线 | 超碰97中文| 日韩精品综合在线 | 深爱激情综合 | 成人资源网| 日韩伦理片一区二区三区 | 亚洲va综合va国产va中文 | 天堂av在线网址 | 久久九九国产视频 | 日韩中文在线播放 | 999热线在线观看 | 精品视频免费久久久看 | 亚洲精品视频一 | 日韩欧美视频免费在线观看 | 亚州国产精品久久久 | 国产精品国产亚洲精品看不卡 | 日韩在线播放av | 91精品系列| 午夜精品一区二区三区四区 | 久久人人添人人爽添人人88v | 亚洲精品国产精品久久99热 | 国产精品久久综合 | 激情视频免费观看 | 超碰在线观看99 | 在线国产激情视频 | 天天激情综合网 | 日韩毛片在线播放 | 午夜av在线免费 | 波多野结衣久久精品 | 9i看片成人免费看片 | 日本精品一区二区三区在线播放视频 | 四虎成人精品在永久免费 | 精品999| 日日干网址 | av888.com| 一级黄色在线免费观看 | 高清视频一区二区三区 | 国产黄色片一级三级 | 五月天亚洲激情 | 在线看的av网站 | 久久免费视频在线观看 | 天天爽天天做 | 午夜18视频在线观看 | 天天草av | 天天干天天干天天干天天干天天干天天干 | 黄污视频网站大全 | 国产亚洲精品久久久久动 | 欧美aa一级片 | 午夜12点| 在线观看国产中文字幕 | 国产亚洲精品久久久久久网站 | 亚洲第一中文字幕 | 免费在线观看av片 | 一区国产精品 | 亚洲国产精品激情在线观看 | 国产123区在线观看 国产精品麻豆91 | 99激情网| 色诱亚洲精品久久久久久 | 国产中文字幕国产 | 精品国产乱码久久久久久天美 | 欧美激情va永久在线播放 | 亚洲最新av在线网站 | 黄色中文字幕 | 免费高清在线观看成人 | 制服丝袜一区二区 | 国产不卡av在线 | 成年人视频免费在线播放 | 国产日韩精品一区二区在线观看播放 | 在线免费视频一区 | 99精品视频在线观看播放 | 国产精品va在线观看入 | 日日夜夜狠狠操 | 日日操夜 | 综合久久2023 | 欧美日韩首页 | 在线看片中文字幕 | av免费在线播放 | 欧美日韩视频免费看 | 女人魂免费观看 | 欧美日本不卡 | 在线欧美小视频 | 成人 国产 在线 | 人人网av| 99视频在线免费观看 | 香蕉97视频观看在线观看 | 久久精品日产第一区二区三区乱码 | 精品一区二区免费 | 狠狠撸电影 | 麻豆视频在线免费观看 | 国产视频欧美视频 | 亚洲一区二区三区四区精品 | 成人影视免费看 | 亚洲午夜精品一区二区三区电影院 | 成人国产一区二区 | 婷婷深爱五月 | 91av资源在线 | 五月天色婷婷丁香 | 亚洲国产色一区 | 国产精品久久久久久久久久新婚 | 91九色国产在线 | 久久久免费精品国产一区二区 | 一区二区三区福利 | 久久久久久国产精品美女 | 免费观看国产成人 | 成人毛片久久 | 国产精品日韩久久久久 | 日韩av一区二区三区 | 一区 二区电影免费在线观看 | 亚洲在线精品 | 成人免费观看网址 | 麻豆视频在线免费 | 欧美国产日韩一区二区三区 | 久久久精品二区 | 国内外成人在线 | 日韩在线理论 | 干天天 | 久久久久亚洲天堂 | 日韩精品视频网站 | 国产99久久久精品视频 | 亚洲国产精品va在线看黑人 | 久久理论影院 | 天堂av在线中文在线 | 日韩高清一区 | 在线之家免费在线观看电影 | 午夜精品av | 伊人永久 | 日韩色中色 | 草久久av | 日韩电影在线观看一区二区三区 | 日韩电影一区二区三区在线观看 | 丁香六月婷婷开心婷婷网 | 99成人在线视频 | 午夜精品久久久久久久99无限制 | 在线看黄色的网站 | 开心激情综合网 | 亚洲最快最全在线视频 | 99日韩精品 | 久久免费的精品国产v∧ | 99国产精品久久久久老师 | 中文字幕文字幕一区二区 | 欧美a性 | 麻豆一二三精选视频 | 九九99 | 狠狠色伊人亚洲综合成人 | 免费看片在线观看 | 国产日韩精品一区二区三区 | 久久国内精品视频 | 1000部国产精品成人观看 | 91精品国产高清自在线观看 | 国产亚洲情侣一区二区无 | 伊人网综合在线观看 | 免费看短 | wwwwww黄| 国产xx视频 | www.看片网站| 精品久久久99 | 午夜精品中文字幕 | 国产精品一区二区在线播放 | 精品久久免费看 | 久久精品日产第一区二区三区乱码 | 香蕉在线视频播放网站 | 午夜久久福利影院 | 成人毛片在线观看 | 国产成人一区三区 | 99久久精品久久久久久动态片 | 99九九热只有国产精品 | 午夜国产福利在线 | 国产精选视频 | 国产在线观看中文字幕 | 在线观看亚洲国产 | av在线进入 | 一区二区三区久久 | 欧美国产日韩一区二区三区 | 日韩视频一区二区在线 | 国产日韩视频在线观看 | 久久国产三级 | 久久国产成人午夜av影院宅 | 999国产 | 免费av试看 | 一区二区三区国产精品 | 日韩视频在线播放 | 男女靠逼app| 91超在线| 深夜免费福利视频 | 亚洲精品黄网站 | 久草免费新视频 | 久草在线这里只有精品 | 久久婷婷一区二区三区 | 中文在线www | 伊香蕉大综综综合久久啪 | 国产 中文 日韩 欧美 | 手机成人av在线 | 亚洲无人区小视频 | 色多多视频在线观看 | 精品久久久久久久久亚洲 | 国产精品mv | 人人超碰在线 | 黄色特级一级片 | 日韩一区二区三区在线观看 | 久久免费的精品国产v∧ | 成人午夜精品久久久久久久3d | 国产精品高清免费在线观看 | 开心激情久久 | 人人爽人人爽av | 欧美成人影音 | 亚洲免费黄色 | 不卡电影一区二区三区 | 狠狠干天天操 | 极品久久久久久久 | 天天做天天爱天天爽综合网 | 伊人影院在线观看 | 在线电影中文字幕 | 欧美性爽爽 | 国产精品视频免费观看 | 91在线网站| 手机av在线网站 | 丁香婷婷成人 |