1. 程式人生 > >2016百度之星資格賽題解

2016百度之星資格賽題解

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<map>
  4 #include<string>
  5 using namespace std;
  6 
  7 struct Node
  8 {
  9   char s[35];
 10   int l,r;
 11   bool flag;
 12 };
 13 
 14 Node a[1010][35];
 15 int ao[1010];
 16 bool ff[1010];
 17 map<string
,int> m[1010]; 18 19 int mo; 20 void solve(int pos,char *s) 21 { 22 for(int i=0;s[i];i++) 23 { 24 if(s[i]<='z'&&s[i]>='a') 25 { 26 char t[35]; 27 int j; 28 for(j=i;s[j];j++) 29 { 30 if(s[j]<='z'&&s[j]>='
a') t[j-i]=s[j]; 31 else break; 32 } 33 t[j-i]=0; 34 int to; 35 if(m[pos].find(t)==m[pos].end()) 36 { 37 m[pos][t]=++mo; 38 strcpy(a[pos][mo].s,t); 39 a[pos][mo].l=-10000; 40 a[pos][mo].r=10000; 41 a[pos][mo].flag=1
; 42 to=mo; 43 ao[pos]=mo; 44 } 45 else to=m[pos][t]; 46 int flag=0; 47 for(;s[j];j++) 48 { 49 if(s[j]=='<'&&s[j+1]=='=') flag=2; 50 else if(s[j]=='<') flag=1; 51 else if(s[j]=='>'&&s[j+1]=='=') flag=4; 52 else if(s[j]=='>') flag=3; 53 else if(s[j]=='='&&s[j+1]=='=') flag=5; 54 if(flag!=0) break; 55 } 56 int k=0,fu=1; 57 for(j++;s[j];j++) 58 { 59 if(s[j]=='-') 60 { 61 fu=-1; 62 } 63 else if(s[j]<='9'&&s[j]>='0') 64 { 65 k=k*10+s[j]-'0'; 66 } 67 else if(s[j]==',') break; 68 } 69 k=k*fu; 70 if(flag==1) k--; 71 else if(flag==3) k++; 72 if(flag==1||flag==2) 73 { 74 a[pos][to].r=min(k,a[pos][to].r); 75 } 76 else if(flag==3||flag==4) 77 { 78 a[pos][to].l=max(k,a[pos][to].l); 79 } 80 else if(flag==5) 81 { 82 if(a[pos][to].l>k||a[pos][to].r<k) a[pos][to].flag=0; 83 else 84 { 85 a[pos][to].l=k; 86 a[pos][to].r=k; 87 } 88 } 89 if(a[pos][to].l>a[pos][to].r) a[pos][to].flag=0; 90 if(a[pos][to].flag==0) ff[pos]=1; 91 i=j-1; 92 } 93 } 94 } 95 96 int main() 97 { 98 int n; 99 char s[100]; 100 while(scanf("%d",&n)!=EOF) 101 { 102 getchar(); 103 memset(ff,0,sizeof(ff)); 104 for(int i=0;i<n;i++) 105 { 106 mo=0; 107 gets(s); 108 solve(i,s); 109 } 110 for(int i=0;i<n;i++) 111 { 112 bool flag=0; 113 for(int u=0;u<i;u++) 114 { 115 if(ff[i]==1) continue; 116 if(ff[u]==1) continue; 117 int j; 118 for(j=1;j<=ao[i];j++) 119 { 120 if(a[i][j].flag==0) break; 121 int pos=m[u][a[i][j].s]; 122 if(pos==0) break; 123 if(a[i][j].r<a[u][pos].l||a[i][j].l>a[u][pos].r); 124 else break; 125 } 126 if(j>ao[i]); 127 else 128 { 129 if(flag==1) printf(" "); 130 flag=1; 131 printf("%d",u+1); 132 } 133 } 134 if(flag==0) printf("unique\n"); 135 else printf("\n"); 136 } 137 } 138 return 0; 139 }

相關推薦

2016資格賽題解

1 #include<stdio.h> 2 #include<string.h> 3 #include<map> 4 #include<string> 5 using namespace std; 6 7 struc

2014資格賽題解

.cn -i lan while pro acm 起點 pos con 比賽鏈接:點擊打開鏈接 ,,杭電把比賽關了代碼都找不到了。。 無責任民科還是mark一下好了。。 HDU 4823 Energy Conversion 把式子變換一下發現是一個等比數列,高速冪就可以

2017 資格賽 題解

真心 數據 targe 比較 blog png 防禦 href 普通 百度之星 2017 資格賽 題解(原創)(2~5題 第一題方法是錯的 第二題數據太水 並不會正解) 轉載請註明出處http://www.cnblogs.com/nflslzt/p/7302377.html

2017資格賽題解

度度熊為了拯救可愛的公主,於是與邪惡大魔王戰鬥起來。 邪惡大魔王的麾下有n個怪獸,每個怪獸有a[i]的生命值,以及b[i]的防禦力。 度度熊一共擁有m種攻擊方式,第i種攻擊方式,需要消耗k[i]的晶石,造成p[i]點傷害。 當然,如果度度熊使用第i個技能打在第j個怪獸上面的話,會使得第j個怪獸的生命值減少p

2016 資格賽ABCDE

A.題意:定義小寫字母組成的字串的雜湊值,為(單個字母的ASCII碼減去28)的乘積。給出長度最多為100000的字串和最多1000次詢問,每次詢問[L,R]之間的字串的雜湊值。 題解: 有多種做法。 1.逆元  2.線段樹  3.分塊陣列 1.逆元做法:因為每次求區間[L,R]乘積,可以

2016 - 資格賽 Astar Round1 - 模擬+線段樹+乘法逆元

                Problem A   Accepts:

ACM-資格賽Energy Conversion——hdu4823

ios break get enter span bmi ria hint -c Energy Conversion Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav

2014資格賽第三題

字符串 struct uri hit other printf 能夠 ava 單獨 Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others

2014 1003 題解 Xor Sum

dsm xor 難題 ane rac pro 數據包 20px weight Xor Sum Problem Description Zeus 和 Prometheus 做了一個遊戲,Prometheus 給 Zeus 一個集合,集合中包括了N個正整數,隨後 P

2014資格賽4題

歐幾裏得 font define ria min read span post eight 因為都是中文題。題意就不寫了。 A、Energy Conversion 這題先推斷一下能量能否添加,然後再依據添加這個公式去求出一個等比公式。就能夠直接求出須

2017資格賽 1003:度度熊與邪惡大魔王(DP)

solution nav normal ner 就會 預處理 display badge rate 度度熊與邪惡大魔王 Accepts: 3021 Submissions: 18787 Time Limit: 2000/1000 MS (Java/Ot

2017資格賽 1003 度度熊與邪惡大魔王 背包DP

log accep 防禦 ssi str 完全背包 time 怪物 amp 度度熊與邪惡大魔王 Accepts: 3027 Submissions: 18837 Time Limit: 2000/1000 MS (Java/Others) Memor

度度熊的午飯時光 2017資格賽 -.-

set others spa 字典序 info iostream 最小 long long 預算 度度熊的午飯時光 Accepts: 755 Submissions: 8737 Time Limit: 2000/1000 MS (Java/Others)

【2018資格賽】 A 問卷調查 - 位運算&動規

blog 題目 相同 clas 方程 數組 cstring div col 題目地址:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=820&pid=1001 參考博客:在此感謝ht

2018資格賽 1001調查問卷(狀壓dp)

百度之星 一行 problem nts 數據 output 兩張 href bestcode 調查問卷 Accepts: 1289 Submissions: 5642 Time Limit: 6500/6000 MS (Java/Others

2018 資格賽 1001 調查問卷

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=6344 題意:給n份問卷,每個問卷m道題,每題只有A,B兩種選項,問存在多少個問題集合,使得只保留這些問題後至少k對卷子不同。  題解:剛開始做的時候,沒有什麼思路,因為要求至少K對

2018資格賽___1001調查問卷——狀態壓縮

補題連結:傳送門 題目大意:   有TTT組樣例,nnn份問卷,每份問卷有mmm個問題,答案由A或B組成(相當於nnn條長度為mmm的01序列),在這mmm個問題中任意選取一部分,要使這新的零散問卷互不相同,且至少有k對,問這樣選取一共有多少種方案??? 解題思

2016 初賽2A ABEF

只做了1001 1002 1005 1006。剩下2題可能以後補? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0%D9%B6%C8%D6%AE%D0%C7%22+-+%B3%F5%C8%FC%A3%A8Astar+Roun

2016 初賽2B ACEF

做了1001 1003 1005 1006 1001 區間的價值 亂搞? 做法簡介:有多種做法,主要思想都是先算a[i]作為最小值能管轄的最大左右範圍l[i], r[i],然後求[ l[i], r[i] ]區間內的最大值ma,判斷是否可以更新ans[r[i] - l[i] + 1] = ma

2016複賽 1003 拍照 優先佇列

2016"百度之星" - 複賽(Astar Round3)  Ended  2016-05-29 14:00:00 - 2016-05-29 17:00:00 Current Time: 00:46:02 SolvedPro.IDTitleRatio(Accepted / Submi