标签:down isp namespace 注意 记录 class 字符串 als 不同
第一题花的时间有点多
A,注意考虑0,15的极端情况就好了,还有只有一个数的未知情况
#include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<iomanip> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #define pi acos(-1.0) #define ll long long #define mod 1000000007 #define ls l,m,rt<<1 #define rs m+1,r,rt<<1|1 #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-7; const int N=100000+10,maxn=500+100,inf=0x3f3f3f; int main() { ios::sync_with_stdio(false); cin.tie(0); int n,a,b; cin>>n; for(int i=1;i<=n;i++) { cin>>b; if(i!=n)a=b; } if(n==1) { if(b==15)cout<<"DOWN"<<endl; else if(b==0)cout<<"UP"<<endl; else cout<<"-1"<<endl; return 0; } if(b==15)cout<<"DOWN"<<endl; else if(b==0)cout<<"UP"<<endl; else if(a>b)cout<<"DOWN"<<endl; else if(a<b)cout<<"UP"<<endl; return 0; } /********************* *********************/
B题wa的次数太多了导致排名上不去,每次错了之后一找到bug就马上改过来交,根本没有考虑清楚,所以总是死在罚时上
先生产两个rb交替的字符串,如rbrbrb,brbrbr,然后挨个匹配记录r和b不同的次数,然后如果rb不同时为0,总是可以通过交换r,b来替代对r,b同时喷漆,这样就是最小的了
#include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<iomanip> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #define C 0.5772156649 #define pi acos(-1.0) #define ll long long #define mod 1000000007 #define ls l,m,rt<<1 #define rs m+1,r,rt<<1|1 #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-7; const int N=100000+10,maxn=1000000+10,inf=0x3f3f3f; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; string s,p1="",p2=""; cin>>n>>s; for(int i=0; i<n; i++) { if(i&1)p1+=‘b‘,p2+=‘r‘; else p1+=‘r‘,p2+=‘b‘; } int r1=0,b1=0,r2=0,b2=0; for(int i=0;i<n;i++) { if(s[i]!=p1[i]) { if(s[i]==‘r‘)r1++; else b1++; } if(s[i]!=p2[i]) { if(s[i]==‘r‘)r2++; else b2++; } } // cout<<p1<<" "<<p2<<endl; // cout<<r1<<" "<<b1<<" "<<r2<<" "<<b2<<endl; cout<<min(min(r1,b1)+abs(r1-b1),min(r2,b2)+abs(r2-b2))<<endl; return 0; } /******************** 5 bbrbb ********************/
C题模拟,要注意几个极端情况(如999.5进位,199.5进位,和小数点的处理)
#include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<iomanip> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #define C 0.5772156649 #define pi acos(-1.0) #define ll long long #define mod 1000000007 #define ls l,m,rt<<1 #define rs m+1,r,rt<<1|1 #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-7; const int N=100000+10,maxn=1000000+10,inf=0x3f3f3f; int main() { ios::sync_with_stdio(false); cin.tie(0); int n,t,point=-1,fi=-1; string s; cin>>n>>t>>s; for(int i=0; i<n; i++) { if(s[i]==‘.‘)point=i; if(point!=-1&&fi==-1&&s[i]!=‘.‘&&s[i]>=‘5‘)fi=i; } if(fi==-1) { cout<<s<<endl; return 0; } s=s.substr(0,fi+1); int p=fi-1; while(p>=0&&s[p]==‘4‘)p--; int k=fi-p-1; if(t>=k+1) { s=s.substr(0,p+1); if(s[s.size()-1]==‘.‘) { s=s.substr(0,s.size()-1); s[s.size()-1]+=1; // cout<<s<<endl; if(s[s.size()-1]==‘:‘) { int q=s.size()-2; s[q+1]=‘0‘; while(q>=0&&s[q]==‘9‘)s[q]=‘0‘,q--; if(q>=0)s[q]++; else s=‘1‘+s; // s=‘1‘+s; } } else s[s.size()-1]++; cout<<s<<endl; } else if(t==k) { s=s.substr(0,p+1); s+=‘5‘; cout<<s<<endl; return 0; } else { s[fi-t]=‘5‘; s=s.substr(0,fi-t+1); cout<<s<<endl; } return 0; } /******************** 5 1 199.5 ********************/
Codeforces Round #373 (Div. 2)
标签:down isp namespace 注意 记录 class 字符串 als 不同
原文地址:http://www.cnblogs.com/acjiumeng/p/7389073.html