A Electric Bill
1.题意
计算电费,1000kwh及以下一档收费a,以上为一档收费b。
2.题解
if-else判断。
3.代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 int a,b,t; 4 int main(){ 5 cin>>a>>b>>t; 6 for(int i=1;i<=t;i++){ 7 int x,ans=0; 8 cin>>x; 9 if(x<=1000) 10 ans=x*a; 11 else 12 ans=(x-1000)*b+1000*a; 13 cout<<x<<' '<<ans<<endl; 14 } 15 16 return 0; 17 }
B Simplified Keyboard
1.题意
给定一张字母分布图,判断两单词之间的属性。若两单词完全相同,则为属性1,若两单词长度相同,对应字母相同或相邻,则为属性2,否则为属性3。
2.题解
用map存邻近关系,然后判断即可。
3.代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 map<char,string> mp; 5 mp['a']="bkj"; 6 mp['b']="clkja"; 7 mp['c']="dmlkb"; 8 mp['d']="enmlc"; 9 mp['e']="fonmd"; 10 mp['f']="gpone"; 11 mp['g']="hqpof"; 12 mp['h']="irqpg"; 13 mp['i']="rqh"; 14 mp['j']="abkts"; 15 mp['k']="abclutsj"; 16 mp['l']="bcdmvutk"; 17 mp['m']="cdenwvul"; 18 mp['n']="defoxwvm"; 19 mp['o']="efgpyxwn"; 20 mp['p']="fghqzyxo"; 21 mp['q']="ghirzyp"; 22 mp['r']="hizq"; 23 mp['s']="jkt"; 24 mp['t']="jklus"; 25 mp['u']="klmvt"; 26 mp['v']="lmnwu"; 27 mp['w']="mnoxv"; 28 mp['x']="nopyw"; 29 mp['y']="opqzx"; 30 mp['z']="pqry"; 31 32 int t,flag,flag1; 33 string a,b; 34 cin>>t; 35 while(t--){ 36 flag=0,flag1=0; 37 cin>>a>>b; 38 if(a.size()!=b.size()){ 39 cout<<"3"<<endl; 40 continue; 41 } 42 for(int i=0;i<a.size();i++){ 43 if(a[i]!=b[i]){ 44 flag=1; 45 break; 46 } 47 } 48 if(flag==0){ 49 cout<<"1"<<endl; 50 continue; 51 } 52 else{ 53 for(int i=0;i<a.size();i++){ 54 flag1=0; 55 if(a[i]==b[i]){ 56 flag1=1; 57 continue; 58 } 59 if(a[i]!=b[i]){ 60 for(int j=0;j<mp[a[i]].size();j++){ 61 if(mp[a[i]][j]==b[i]){ 62 flag1=1; 63 break; 64 } 65 } 66 } 67 if(flag1==0){ 68 break; 69 } 70 } 71 if(flag1==1){ 72 cout<<"2"<<endl; 73 } 74 else{ 75 cout<<"3"<<endl; 76 } 77 } 78 } 79 return 0; 80 }
C Singin' in the Rain
1.题意
给定一张专辑,女儿喜欢其中的k首,当一首歌播放结束时,按后退一次则再次播放这首歌,按两次则播放上首歌,按一次前进则播放下首歌的下一首,专辑的最后一首播放完将跳到第一首。给定女儿喜欢的歌的序号列表,问最少要按多少次按钮。
2.题解
模拟。从一首歌到另一首歌,要么往前按,要么往后按,取较小值。
3.代码
1 #include<bits/stdc++.h> 2 #define ll long long 3 using namespace std; 4 ll t,n,k,ans; 5 int main(){ 6 cin>>t; 7 while(t--){ 8 cin>>n>>k; 9 ans=0; 10 ll a,b; 11 cin>>a; 12 for(ll i=1;i<k;i++){ 13 cin>>b; 14 if(a==b) 15 ans+=1; 16 else if(a<b) 17 ans+=min(b-a-1,n-b+1+a); 18 else 19 ans+=min(a-b+1,n-a-1+b); 20 a=b; 21 } 22 cout<<ans<<endl; 23 } 24 25 return 0; 26 }