2019 计蒜之道 初赛 第六场
A.
https://nanti.jisuanke.com/t/39455
VIPKID 是全球增长速度最快的在线青少儿英语教育品牌,纯北美外教 11 对 11 在线授课,通过互联网的方式将中国小朋友与北美老师连接起来。VIPKID 为了帮每个孩子找到最适合自己的外教老师,会对外教在教学上的语言、技能等多层维度划定数百个标签,再结合智能算法进行师生匹配,向学员推荐最合适其本人的外教。
VIPKID 通过大数据和标签来智能地进行师生匹配。当我们把标签抽象成括号 ( ),匹配过程简化为括号串的匹配,希望聪明的你来解决如下问题:判断给定的括号序列是否合法且反回文。
对于这样标签抽象组成的括号序列,我们有如下定义:
合法的的括号序列:
- 空序列;
- 如果AA、BB是合法的括号序列,那么(A)(A)和ABAB都是合法的括号序列;
反回文的括号序列:如果序列长度为 LL,且字符从 00 开始编号,那么任意的 S[i]S[i] 和 S[L-i-1]S[L−i−1] 对应的字符应该不同。(i 的取值范围 0≤i≤L−1 )
输入格式
一行一个字符串 SS。
输出格式
如果是合法且反回文的串,输出 "YES",否则输出 "NO"。(均无双引号)
数据规模
SS 长度小于10^1e6。
样例输入1<button class="jsk-btn-link jsk-fr jsk-text-sm" data-clipboard-target="#id00367477172424975460002" data-jsk-popover="{content: '复制成功', theme: 'success sm'}" id="id000173084003110413050001">复制</button>
()()()
样例输出1<button class="jsk-btn-link jsk-fr jsk-text-sm" data-clipboard-target="#id0083892016290946670004" data-jsk-popover="{content: '复制成功', theme: 'success sm'}" id="id0091800697962393520003">复制</button>
YES
样例输入2<button class="jsk-btn-link jsk-fr jsk-text-sm" data-clipboard-target="#id000535969869441812460006" data-jsk-popover="{content: '复制成功', theme: 'success sm'}" id="id0077515470781041880005">复制</button>
()(())
样例输出2<button class="jsk-btn-link jsk-fr jsk-text-sm" data-clipboard-target="#id0078363885718287580008" data-jsk-popover="{content: '复制成功', theme: 'success sm'}" id="id0091639138819440120007">复制</button>
NO
题意:括号匹配+判断反回文
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 int main() 6 { 7 ios::sync_with_stdio(0); 8 cin.tie(0); 9 cout.tie(0); 10 11 string str; 12 bool kuohao,fanhuiwen; 13 stack<char> sc; 14 //while(cin>>str){ 15 cin>>str; 16 kuohao=true; 17 fanhuiwen=true; 18 char tmp; 19 for(int i=0;i<str.size();i++){ 20 if(str[i]=='('){ 21 sc.push(str[i]); 22 }else if(str[i]==')'){ 23 if(sc.empty()){ 24 kuohao=false; 25 break; 26 }else{ 27 tmp=sc.top(); sc.pop(); 28 if(tmp=='('){ 29 continue; 30 }else{ 31 kuohao=false; 32 break; 33 } 34 35 } 36 } 37 } 38 if(!sc.empty()) kuohao=false; 39 40 int strlen=str.size(); 41 for(int i=0;i<=strlen/2;i++){ 42 if(str[i]==str[strlen-i-1]){ 43 fanhuiwen=false; 44 break; 45 } 46 } 47 if(kuohao&&fanhuiwen){ 48 cout<<"YES"<<endl; 49 }else{ 50 cout<<"NO"<<endl; 51 } 52 //} 53 return 0; 54 }
BC.
https://nanti.jisuanke.com/t/39457
样例输入<button class="jsk-btn-link jsk-fr jsk-text-sm" data-clipboard-target="#id0001026938433040070002" data-jsk-popover="{content: '复制成功', theme: 'success sm'}" id="id00227368061017384050001">复制</button>
3 1 3 5 0 1 2 5 1 2 3 4 5
样例输出<button class="jsk-btn-link jsk-fr jsk-text-sm" data-clipboard-target="#id0040928989614797320004" data-jsk-popover="{content: '复制成功', theme: 'success sm'}" id="id00082561871835556080003">复制</button>
0 1 1 2 2
题意: 按公式暴力,注意用long long 。
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 long long a[1000005],b[1000005],q[1000005]; 6 long long resu[1000005]; 7 8 int main() 9 { 10 ios::sync_with_stdio(0); 11 cin.tie(0); 12 cout.tie(0); 13 14 int n,Q; 15 cin>>n; 16 for(int i=0;i<n;i++){ 17 cin>>a[i]; 18 } 19 for(int i=0;i<n;i++){ 20 cin>>b[i]; 21 } 22 cin>>Q; 23 for(int i=0;i<Q;i++){ 24 cin>>q[i]; 25 } 26 long long minn=1e19; 27 for(int i=0;i<Q;i++){ 28 minn=1e19; 29 long long tmp=0; 30 for(int j=0;j<n;j++){ 31 long long chengji=(q[i]-a[j]); 32 tmp=chengji*chengji+b[j]; 33 minn=min(minn,tmp); 34 } 35 resu[i]=minn; 36 } 37 for(int i=0;i<Q;i++){ 38 cout<<resu[i]<<" "; 39 } 40 return 0; 41 }
D:未做