題意:給了你一系列的區間,叫你求輸入哪些區間是被給出的。
像這樣的的區間 [5,6] [6,8]可以合併爲一個區間[5,8];
解題思路:先對輸入的區間進行排序,然後對區間進行合併。(具體實現看代碼)
代碼:
#include <iostream> using namespace std; #include <stdlib.h> typedef struct { int x; int y; }weizhi; weizhi data[50001]; int cmp(const void *a,const void *b)//第一次使用qsort對兩個變量的進行排序 按照的是先x從小到大, //y從小到大 { weizhi *p1=(weizhi *)a; weizhi *p2=(weizhi *)b; if(p1->x==p2->x) return p1->y - p2->y; return p1->x - p2->x; } int main() { int n,i,first,last,j; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d%d",&data[i].x,&data[i].y); qsort(data,n,sizeof(weizhi),cmp);//排序函數 first=data[0].x; last=data[0].y; for(i=1;i<n;i++) { if(last>=data[i].x && last<data[i].y) //對last進行修改 { last=data[i].y; continue; } if(last>data[i].x && last>data[i].y) continue; if(last<data[i].x) //這個區間已經不能被合併了 { printf("%d %d/n",first,last); first=data[i].x; last=data[i].y; } } printf("%d %d/n",first,last); return 0; }
題目要求:給你一個數字,然後將每位數都相加,如果結果不爲各位數,繼續加。 解題思路:把每位數都加了然後%9 如果結果爲 0 輸出9。 爲什麼要這麼弄 我也不知道,只有記住了 太神祕了。 算法來源:discuss。 神祕代碼: #inclu
題意:這道題目是與語法規則有關的,首先這些語法規則滿足下面的條件: 0.The only characters in the language are the characters p through z and N, C, D, E,