zoukankan      html  css  js  c++  java
  • 模板

    1. #include <iostream>
    2. #include <stdio.h>
    3. #include <string>
    4. using namespace std;
    5. int lowbit(int x) //make sure the set of the array
    6. {
    7. return x&(-x);
    8. }
    9. int sum(int end ,int all[]) //solve sum
    10. {
    11. int sum=0;
    12. while(end > 0)
    13. {
    14. sum+=all[end];
    15. end-=lowbit(end);
    16. }
    17. return sum;
    18. }
    19. void puls(int set, int num, int all[], int n) //array number increase or decrease
    20. {
    21. while(set <= n) //网上这里有等于,这个是对的,所以一开始数组需要开大一点
    22. {
    23. all[set] += num;
    24. set += lowbit(set);
    25. }
    26. }
    27. struct data
    28. {
    29. string str;
    30. int i,j;
    31. };
    32. int main()
    33. {
    34. int T, count=0;
    35. scanf("%d",&T);
    36. while(T--)
    37. {
    38. int all[50500];
    39. int N;
    40. memset(all, 0, sizeof(all) );
    41. scanf("%d",&N);
    42. for(int i=1; i<=N; i++)
    43. /*
    44. 因为题目的关系这里从1开始输入数据,以便在计算总和时把漏掉的i加上时不会越界
    45. */
    46. {
    47. int temp;
    48. scanf("%d",&temp);
    49. puls(i ,temp, all, N);
    50. }
    51. data temp;
    52. printf("Case %d: ",++count);
    53. while(cin>>temp.str && temp.str!="End")
    54. {
    55. scanf("%d%d",&temp.i,&temp.j);
    56. if(temp.str =="Query" )
    57. {
    58. printf("%d ",sum(temp.j,all)-sum(temp.i-1,all) );
    59. /*
    60. i-1 pay attention
    61. the problem describe solve j-i ( Query i j ,i和j为正整数,i<=j,表示询问第i到第j个营地的总人数;)
    62. so all[i] could be ignore !
    63. */
    64. }
    65. if(temp.str == "Add" )
    66. {
    67. puls(temp.i ,temp.j, all, N);
    68. }
    69. if(temp.str =="Sub")
    70. puls(temp.i ,-temp.j, all, N);
    71. }
    72. }
    73. return 0;
    74. }
    75. #include <iostream>
    76. #include <stdlib.h>
    77. //use recurrence way to find most biggest total
    78. using namespace std;
    79. int sum=0;
    80. void print_value(int a[][110],int N) //printf the number
    81. {
    82. for(int row=1; row<=N; row++)
    83. for(int line=1; line<=row; line++)
    84. cin>>a[row][line];
    85. }
    86. void search(int a[][110], int i, int j, int N, int all) //find the most biggest number
    87. {
    88. all+=a[i][j];
    89. if(i==N)
    90. {
    91. if(sum <all )
    92. sum =all ;
    93. return ;
    94. }
    95. search(a ,i+1 ,j ,N, all);
    96. search(a ,i+1 ,j+1 ,N ,all);
    97. }
    98. int main()
    99. {
    100. int N;
    101. cin>>N;
    102. int value[110][110]={0};
    103. print_value(value,N);
    104. search(value ,1 ,1 ,N , 0);
    105. cout<<sum<<endl;
    106. return 0;
    107. }
    108. #include <iostream>
    109. //#include <algorithm>
    110. #include <stdio.h>
    111. #include <stack>
    112. #include <string.h>
    113. using namespace std;
    114. /*
    115. shadow喜欢听音乐,于是v11自己写了个播放器送给了shadow,这个播放器有一个播放列表,一个“下一首”按钮,一个“上一首”按钮,还有一个播放记录。
    116. 一开始播放器会播放播放列表中的第一首歌,当按下“下一首”按钮时,它会播放当前歌曲在播放列表中的下一首歌,若当前歌曲就是播放列表中的最后一首歌时,它仍会播放播放列表中的最后一首歌;当按下“上一首”按钮时,它会清除播放记录中的最后一首歌,并播放清除后播放记录中的最后一首歌,若清除后播放记录为空,则播放播放列表中的第一首歌;当按下播放列表中的某一首歌曲,它会播放该首歌曲。
    117. 任何时候,当播放器播放一首歌时,如果该歌曲与播放记录中的最后一首不同或者播放记录为空,便将该歌曲添加到播放记录中成为最后一首。
    118. */
    119. int main()
    120. {
    121. int T;
    122. cin>>T;
    123. while(T--)
    124. { stack <int > num; //变量一定要放在里面,一定要,在计数的时候!!!!!
    125. int n,m;
    126. cin>>n>>m;
    127. char pre[10]="PRE",next[10]="NEXT",play[10]="PLAY";
    128. char temp[10];
    129. getchar();
    130. for(int i=1;i<=m;i++)
    131. {
    132. gets(temp);
    133. char *p=temp;
    134. if(strstr(p,"PLAY")!=NULL)
    135. {
    136. int a=atoi( (p+5) );
    137. cout<<a<<endl;
    138. if( num.size()==0||a!=num.top() )
    139. num.push(a);
    140. }
    141. if(strcmp(temp,pre)==0 )
    142. {
    143. if(num.empty() ==0)
    144. num.pop();
    145. if(num.empty() )
    146. {/*num.push(1);*/cout<<'1'<<endl;}
    147. else
    148. {cout<<num.top()<<endl;}
    149. }
    150. if(strcmp(temp,next)==0 )
    151. {
    152. if(num.empty() )
    153. {cout<<'2'<<endl;num.push(2);}
    154. else if(num.top()==n)
    155. {
    156. cout<<n<<endl;
    157. //num.push(n);
    158. }
    159. else
    160. {
    161. cout<<(num.top()+1)<<endl;
    162. num.push(num.top()+1);
    163. }
    164. }
    165. }
    166. }
    167. return 0;
    168. }
    169. #include <stdio.h>
    170. #include <iostream>
    171. #include <stack>
    172. #include <string>
    173. #include <string.h>
    174. using namespace std;
    175. int main()
    176. {
    177. int n;
    178. //string in,out;
    179. char in[1000],out[1000];
    180. while(cin>>n>>in>>out)
    181. {
    182. //stack<char> s;
    183. char s[1000];
    184. memset(s,'',sizeof(s) );
    185. int mark[20];
    186. int i=0,j=0;
    187. int count=0;
    188. while(i<n)
    189. {
    190. //if(s.empty() )
    191. if(strlen(s)==0)
    192. {
    193. //s.push(in[i]);
    194. s[count++]=in[i];
    195. mark[i+j]=0;
    196. i++;
    197. }
    198. //if(!s.empty() && s.top()!=out[j] )
    199. if(strlen(s)!=0 && s[strlen(s)]!=out[j] )
    200. {
    201. //s.push(in[i]);
    202. s[count++]=in[i];
    203. mark[i+j]=0;
    204. i++;
    205. }
    206. //while(!s.empty() &&s.top() ==out[j] )
    207. while(strlen(s)!=0 && s[strlen(s)-1]==out[j] )
    208. {
    209. //s.pop();
    210. s[strlen(s)-1]='';
    211. mark[i+j]=1;
    212. j++;
    213. }
    214. }
    215. //if( s.empty() )
    216. if(strlen(s)==0 )
    217. {
    218. cout<<"Yes."<<endl;
    219. for(int i=0;i<2*n;i++)
    220. {
    221. if(mark[i]==0)
    222. cout<<"in"<<endl;
    223. else
    224. cout<<"out"<<endl;
    225. }
    226. cout<<"FINISH"<<endl;
    227. }
    228. else
    229. cout<<"No."<<endl<<"FINISH"<<endl;
    230. }
    231. return 0;
    232. }
    233. /*
    234. Problem Description
    235. 看病要排队这个是地球人都知道的常识。
    236. 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来先服务的原则。所以医院对每种病情规定了10种不同的优先级。级别为10的优先权最高,级别为1的优先权最低。医生在看病时,则会在他的队伍里面选择一个优先权最高的人进行诊治。如果遇到两个优先权一样的病人的话,则选择最早来排队的病人。
    237. 现在就请你帮助医院模拟这个看病过程。
    238. Input
    239. 输入数据包含多组测试,请处理到文件结束。
    240. 每组数据第一行有一个正整数N(0<N<2000)表示发生事件的数目。
    241. 接下来有N行分别表示发生的事件。
    242. 一共有两种事件:
    243. 1:"IN A B",表示有一个拥有优先级B的病人要求医生A诊治。(0<A<=3,0<B<=10)
    244. 2:"OUT A",表示医生A进行了一次诊治,诊治完毕后,病人出院。(0<A<=3)
    245. Output
    246. 对于每个"OUT A"事件,请在一行里面输出被诊治人的编号ID。如果该事件时无病人需要诊治,则输出"EMPTY"。
    247. 诊治人的编号ID的定义为:在一组测试中,"IN A B"事件发生第K次时,进来的病人ID即为K。从1开始编号。
    248. */
    249. #include <queue>
    250. #include <iostream>
    251. #include <string>
    252. using namespace std;
    253. struct node
    254. {
    255. string in;
    256. int A,B;
    257. int count;
    258. };
    259. struct cmp
    260. {
    261. bool operator() (const node &a, const node &b)
    262. {
    263. if (a.B > b.B)
    264. return false;
    265. else if(a.B ==b.B)
    266. return (a.count > b.count);
    267. else
    268. return true;
    269. }
    270. };
    271. int main()
    272. {
    273. int n;
    274. while(cin>>n)
    275. {
    276. node temp;
    277. priority_queue <node, vector<node>, cmp> que1;
    278. priority_queue <node, vector<node>, cmp> que2;
    279. priority_queue <node, vector<node>, cmp> que3;
    280. int a=0;
    281. while(n--)
    282. {
    283. cin>>temp.in;
    284. if(temp.in=="IN")
    285. cin>>temp.A>>temp.B;
    286. if(temp.in=="OUT")
    287. cin>>temp.A;
    288. if(temp.in=="IN")
    289. {
    290. switch (temp.A)
    291. {
    292. case 1:{temp.count=++a;que1.push(temp);break;}
    293. case 2:{temp.count=++a;que2.push(temp);break;}
    294. case 3: {temp.count=++a;que3.push(temp);break;}
    295. }
    296. }
    297. if(temp.in=="OUT")
    298. {
    299. switch (temp.A)
    300. {
    301. case 1:{if(que1.empty() ) {cout<<"EMPTY"<<endl;break;} else {cout<<que1.top().count<<endl;que1.pop();break;} }
    302. case 2:{if(que2.empty() ) {cout<<"EMPTY"<<endl;break;} else {cout<<que2.top().count<<endl;que2.pop();break;} }
    303. case 3:{if(que3.empty() ) {cout<<"EMPTY"<<endl;break;} else {cout<<que3.top().count<<endl;que3.pop();break;} }
    304. }
    305. }
    306. }
    307. }
    308. return 0;
    309. }
    310. /*
    311. Problem Description
    312. 看病要排队这个是地球人都知道的常识。
    313. 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来先服务的原则。所以医院对每种病情规定了10种不同的优先级。级别为10的优先权最高,级别为1的优先权最低。医生在看病时,则会在他的队伍里面选择一个优先权最高的人进行诊治。如果遇到两个优先权一样的病人的话,则选择最早来排队的病人。
    314. 现在就请你帮助医院模拟这个看病过程。
    315. Input
    316. 输入数据包含多组测试,请处理到文件结束。
    317. 每组数据第一行有一个正整数N(0<N<2000)表示发生事件的数目。
    318. 接下来有N行分别表示发生的事件。
    319. 一共有两种事件:
    320. 1:"IN A B",表示有一个拥有优先级B的病人要求医生A诊治。(0<A<=3,0<B<=10)
    321. 2:"OUT A",表示医生A进行了一次诊治,诊治完毕后,病人出院。(0<A<=3)
    322. Output
    323. 对于每个"OUT A"事件,请在一行里面输出被诊治人的编号ID。如果该事件时无病人需要诊治,则输出"EMPTY"。
    324. 诊治人的编号ID的定义为:在一组测试中,"IN A B"事件发生第K次时,进来的病人ID即为K。从1开始编号。
    325. */
    326. #include <queue>
    327. #include <iostream>
    328. #include <string>
    329. using namespace std;
    330. struct node
    331. {
    332. string in;
    333. int A,B;
    334. int count;
    335. };
    336. struct cmp
    337. {
    338. bool operator() (const node &a, const node &b)
    339. {
    340. if (a.B > b.B)
    341. return false;
    342. else if(a.B ==b.B)
    343. return (a.count > b.count);
    344. else
    345. return true;
    346. }
    347. };
    348. int main()
    349. {
    350. int n;
    351. while(cin>>n)
    352. {
    353. node temp;
    354. priority_queue <node, vector<node>, cmp> que1;
    355. priority_queue <node, vector<node>, cmp> que2;
    356. priority_queue <node, vector<node>, cmp> que3;
    357. int a=0;
    358. while(n--)
    359. {
    360. cin>>temp.in;
    361. if(temp.in=="IN")
    362. cin>>temp.A>>temp.B;
    363. if(temp.in=="OUT")
    364. cin>>temp.A;
    365. if(temp.in=="IN")
    366. {
    367. switch (temp.A)
    368. {
    369. case 1:{temp.count=++a;que1.push(temp);break;}
    370. case 2:{temp.count=++a;que2.push(temp);break;}
    371. case 3: {temp.count=++a;que3.push(temp);break;}
    372. }
    373. }
    374. if(temp.in=="OUT")
    375. {
    376. switch (temp.A)
    377. {
    378. case 1:{if(que1.empty() ) {cout<<"EMPTY"<<endl;break;} else {cout<<que1.top().count<<endl;que1.pop();break;} }
    379. case 2:{if(que2.empty() ) {cout<<"EMPTY"<<endl;break;} else {cout<<que2.top().count<<endl;que2.pop();break;} }
    380. case 3:{if(que3.empty() ) {cout<<"EMPTY"<<endl;break;} else {cout<<que3.top().count<<endl;que3.pop();break;} }
    381. }
    382. }
    383. }
    384. }
    385. return 0;
    386. }
    387. #include <iostream>
    388. #include <string>
    389. #include <algorithm>
    390. #include <queue>
    391. #define max_one 100
    392. #define max_two 50
    393. #define max_three 50
    394. using namespace std;
    395. struct node //structure must sign first
    396. {
    397. string str;
    398. int size;
    399. };
    400. //return the most minimum string
    401. //pay attention :
    402. struct cmp //must complete size first then complete string
    403. {
    404. bool operator() (const node &a, const node &b)
    405. {
    406. if(a.size >b.size)
    407. return true;
    408. else if(a.size ==b.size)
    409. return a.str>b.str;
    410. else return false;
    411. }
    412. };
    413. priority_queue <node, vector<node>, cmp> que;
    414. void score_string(char *p, char *q, int two, int three) //score string into queue
    415. {
    416. string temp="";
    417. if(p>q)
    418. {
    419. int length=three > p-q+two ? three : p-q+two;
    420. for(int i=0; i<length ;i++)
    421. temp+=*(q+i);
    422. node a;
    423. a.str=temp;
    424. a.size=length;
    425. que.push(a);
    426. }
    427. else if(p<q)
    428. {
    429. int length=two > q-p+three ? two : q-p+three;
    430. for(int i=0; i<length ;i++)
    431. temp+=*(p+i);
    432. node a;
    433. a.str=temp;
    434. a.size=length;
    435. que.push(a);
    436. }
    437. else if(p=q) //pay attention : p=q such as this string
    438. //one :asdfgh two :asdfgh three:a;
    439. {
    440. int length=two >three ? two :three;
    441. for(int i=0; i<length ;i++)
    442. temp+=*(p+i);
    443. node a;
    444. a.str=temp;
    445. a.size=length;
    446. que.push(a);
    447. }
    448. }
    449. int main()
    450. {
    451. int T;
    452. cin>>T;
    453. while(T--)
    454. {
    455. while(!que.empty() ) //each text must clean the queue
    456. {
    457. que.pop();
    458. }
    459. char one[max_one],two[max_two],three[max_three];
    460. cin>>one>>two>>three;
    461. int two_length=strlen(two); //score size of two three string
    462. int three_length=strlen(three);
    463. char *p=strstr(one,two);
    464. char *q=strstr(one,three);
    465. if(p==NULL ||q==NULL)
    466. cout<<"No"<<endl;
    467. else
    468. {
    469. char *two_point[max_two]; //set pointer array score the possible way of string
    470. char *three_point[max_three];
    471. two_point[0]=p;three_point[0]=q;
    472. int size_two=1;
    473. char *temp_two=p,*temp_three=q;
    474. while( (temp_two=strstr(temp_two+1,two))!=NULL) //get different substring way
    475. two_point[size_two++]=temp_two;
    476. int size_three=1;
    477. while( (temp_three=strstr(temp_three+1,three))!=NULL)
    478. three_point[size_three++]=temp_three;
    479. for(int i=0; i<size_two; i++) //score
    480. {
    481. for(int j=0; j<size_three; j++)
    482. score_string(two_point[i], three_point[j], two_length, three_length);
    483. }
    484. cout<<que.top().str<<endl;
    485. }
    486. //cout<<que.top().str<<endl;
    487. }
    488. return 0;
    489. }
    490. /*Description
    491. Businesses like to have memorable telephone numbers. One way to make a telephone number memorable is to have it spell a memorable word or phrase. For example, you can call the University of Waterloo by dialing the memorable TUT-GLOP. Sometimes only part of the number is used to spell a word. When you get back to your hotel tonight you can order a pizza from Gino's by dialing 310-GINO. Another way to make a telephone number memorable is to group the digits in a memorable way. You could order your pizza from Pizza Hut by calling their ``three tens'' number 3-10-10-10.
    492. The standard form of a telephone number is seven decimal digits with a hyphen between the third and fourth digits (e.g. 888-1200). The keypad of a phone supplies the mapping of letters to numbers, as follows:
    493. A, B, and C map to 2
    494. D, E, and F map to 3
    495. G, H, and I map to 4
    496. J, K, and L map to 5
    497. M, N, and O map to 6
    498. P, R, and S map to 7
    499. T, U, and V map to 8
    500. W, X, and Y map to 9
    501. There is no mapping for Q or Z. Hyphens are not dialed, and can be added and removed as necessary. The standard form of TUT-GLOP is 888-4567, the standard form of 310-GINO is 310-4466, and the standard form of 3-10-10-10 is 310-1010.
    502. Two telephone numbers are equivalent if they have the same standard form. (They dial the same number.)
    503. Your company is compiling a directory of telephone numbers from local businesses. As part of the quality control process you want to check that no two (or more) businesses in the directory have the same telephone number.
    504. Input
    505. The input will consist of one case. The first line of the input specifies the number of telephone numbers in the directory (up to 100,000) as a positive integer alone on the line. The remaining lines list the telephone numbers in the directory, with each number alone on a line. Each telephone number consists of a string composed of decimal digits, uppercase letters (excluding Q and Z) and hyphens. Exactly seven of the characters in the string will be digits or letters.
    506. Output
    507. Generate a line of output for each telephone number that appears more than once in any form. The line should give the telephone number in standard form, followed by a space, followed by the number of times the telephone number appears in the directory. Arrange the output lines by telephone number in ascending lexicographical order. If there are no duplicates in the input print the line:
    508. No duplicates.
    509. */
    510. #include <iostream>
    511. #include <math.h>
    512. #include <string>
    513. #include <map>
    514. using namespace std;
    515. #include <fstream>
    516. //ifstream fin("C:\Users\yw\Desktop\E\E.2.dat");
    517. //ofstream fout("result1.txt");
    518. //#define cout fout
    519. //#define cin fin
    520. int main()
    521. {
    522. int n;
    523. cin>>n;
    524. //getchar();
    525. map<string,int>result; //存结果对应的map的
    526. map< string,int>::iterator iter; //建立反向迭代器
    527. map<char,int>num;
    528. // char num[91];
    529. num['A' ]=num['B']=num['C']='2'; //字母对应的数字
    530. num['D' ]=num['E']=num['F']='3';
    531. num['G' ]=num['H']=num['I']='4';
    532. num['J' ]=num['K']=num['L']='5';
    533. num['M' ]=num['N']=num['O']='6';
    534. num['P' ]=num['R']=num['S']='7';
    535. num['T' ]=num['U']=num['V']='8';
    536. num['W' ]=num['X']=num['Y']='9';
    537. while(n--)
    538. {
    539. char word[100]; //注意字符可能很多
    540. cin>>word;
    541. char *p=word;
    542. string temp="";
    543. int count=0;
    544. while( (*p)!='') //转换数字
    545. {
    546. if( (*p>='A'&&*p<'Q')||(*p>'Q'&&*p<'Z') )
    547. {
    548. temp+=num[*p];
    549. count++; p++;
    550. if(count==3)
    551. temp+='-';
    552. }
    553. else if( *p>='0'&&*p<='9' )
    554. {
    555. temp+=(*p);
    556. count++; p++;
    557. if(count==3)
    558. temp+='-';
    559. }
    560. else p++;
    561. }
    562. iter=result.find(temp); //查找时候在map里面有
    563. if(iter==result.end() )
    564. result[temp]=1;
    565. else
    566. result[temp]=iter->second+1; //有就数字加一
    567. }
    568. int ok=1;
    569. for(iter = result.begin(); iter != result.end(); iter++) //利用方向迭代器输出数据
    570. {
    571. if(iter->second>1)
    572. {cout<<iter->first<<' '<<iter->second<<endl; ok=0;}
    573. }
    574. if(ok) cout<<"No duplicates."<<endl;
    575. return 0;
    576. }
    577. 最小生成树
    578. Prim算法:
    579. #define SIZE 1100
    580. #define INF 0x7fffffff
    581. int map[1100][1100], weight[1100], pre[1100], length, point;
    582. bool sign[1100];
    583. map 存路径,值为权值; weight保存个点到源起点的权值; pre保存结点的前驱,即与源起点有路的下一个点
    584. length 生成的最短距离 point 图上共有多少点 sign该点是否已经找过
    585. 算法prim
    586. 从一个结点的子图开始构造生成树:选择连接当前子图和子图外结点的最小权边,将相应结点和边加入子图,直至将所有结点加入子图
    587. void prim(int weight[],int map[][SIZE], int pre[], bool sign[], int &length, int point_num, int source)
    588. { //source源起点,一定要是路径中有的
    589. for(int i=1; i<=point_num; i++) //这里的路径的标号都 > 1,记录所以点到源起点的权值,前驱,将该点置为已经查找
    590. {
    591. weight[i] = map[source][i];
    592. pre[i] = source; sign[i] = true;
    593. }
    594. sign[source] = false; length = 0;
    595. for(int i=1; i<point_num; i++) //枚举n-1个点,即n-1个通路
    596. {
    597. int min = INF, sign_node = i; //sign_node 记录找到的最小的下一个点
    598. for(int j=1; j<=point_num; j++) //查找最小权值的路径
    599. {
    600. if(sign[j] && weight[j] < min)
    601. {min = weight[j]; sign_node = j;}
    602. }
    603. {sign[sign_node] = false; length += min; } //找到点置为已找到,长度相加,
    604. //可以在这里添加一个标记,使他值等于min,如果最后值等于最大值,则不能生成最小生成树
    605. for(int j=1; j<=point_num; j++) //重新设定源起点,将剩下的未找的点加入
    606. {
    607. if(weight[j] > map[sign_node][j] && sign[j] )
    608. {weight[j] = map[sign_node][j]; pre[j] = sign_node;}
    609. }}}
    610. 并查集
    611. 算法:
    612. 初始化
    613. 把每个点所在集合初始化为其自身。
    614. 通常来说,这个步骤在每次使用该数据结构时只需要执行一次,无论何种实现方式,时间复杂度均为O(N)。
    615. 查找: 查找元素所在的集合,即根节点。
    616. 合并: 将两个元素所在的集合合并为一个集合。
    617. 通常来说,合并之前,应先判断两个元素是否属于同一集合,这可用上面的“查找”操作实现。
    618. int father[1100], total(初始化为端点数减一);
    619. void join(int a, int b) //将a,b最后统一
    620. {
    621. int find(int );
    622. int fa = find(a), fb = find(b);
    623. if(fa != fb)
    624. {father[fa] = fb; total--;} //因为是读入两个有关联的路径,所以添加路径数减一
    625. }
    626. int find(int x)
    627. {
    628. int temp = father[x];
    629. while( temp != father[temp])
    630. temp = father[temp];
    631. return temp;
    632. }





  • 相关阅读:
    【源码解析】Flink 是如何处理迟到数据
    Flink assignAscendingTimestamps 生成水印的三个重载方法
    【翻译】生成 Timestamps / Watermarks
    【翻译】The Broadcast State Pattern(广播状态)
    基于Broadcast 状态的Flink Etl Demo
    git 更新fork的远程仓库
    Flink 在IDEA执行时的webui
    配置ssh免密,仍需要密码
    第二章 Kubernetes进阶之使用二进制包部署集群
    Kubernetes之Ingress
  • 原文地址:https://www.cnblogs.com/sober-reflection/p/d6a3482ab9e8d42118745e9771585142.html
Copyright © 2011-2022 走看看