CROC-MBTU 2012, Final Round (Online version, Div. 2)
2012-11-28 15:51
411 查看
A题:略。
B题:恶心的模拟题。
C题:题意是从1~k中选一个数x,在数组a中去掉所有的x,然后从左到右扫描,当数字改变时,ans++,求使ans最小的x。求解时先把相邻的相同的数压缩成一个数,存入另一个数组,然后逆向考虑,如果某个数左右两边的数相同,则去掉该数,改变的值少了2次,否则少1次,于是只要把每个数记录一遍就行了
D题:如果暴力枚举yi和y'j,时间复杂度是n*m,但可以把y和y' 排序后,用贪心策略
B题:恶心的模拟题。
#include<iostream> #include <fstream> #include<vector> #include<string> using namespace std; int n; vector<string> cur; int main() { int i,j,k; cin>>n; for(k=0;k<n;k++) { string s; cin>>s; cur.clear(); i=0; while (i< s.length()) { string c = ""; while(i<s.length()&&s[i]!=':') { c+=s[i]; i++; } i++; if(i==1&&cur.size()==0) continue; cur.push_back(c); } for(i=0; i<cur.size();i++) { for(j=cur[i].length();j<4;j++) cout<<"0"; cout<<cur[i]; if(cur[i].length()==0) { for(j=cur.size();j<8;j++) { cout<<":0000"; } } if(i!=cur.size()-1) cout<<":"; } cout<<endl; } }
C题:题意是从1~k中选一个数x,在数组a中去掉所有的x,然后从左到右扫描,当数字改变时,ans++,求使ans最小的x。求解时先把相邻的相同的数压缩成一个数,存入另一个数组,然后逆向考虑,如果某个数左右两边的数相同,则去掉该数,改变的值少了2次,否则少1次,于是只要把每个数记录一遍就行了
#include <iostream> using namespace std; int a[100005],b[100001]; int main() { int n,i,j,k,t,sum; while (cin >>n>>k) { sum=0; j=0; for (i=0;i<n;i++) { cin >>t; if (a[j]!=t) a[++j]=t; } for(i=1;i<=j;i++) { if(a[i-1]==a[i+1]) b[a[i]]+=2; else b[a[i]]+=1; } int ans=0; for(i=1;i<=k;i++) { if (b[i]>b[ans]) ans=i; } cout <<ans<<endl; } return 0; }
D题:如果暴力枚举yi和y'j,时间复杂度是n*m,但可以把y和y' 排序后,用贪心策略
#include<cmath> #include<iostream> #include<algorithm> using namespace std; const int inf=999999999; int n,m,a,b; int y[100005],yy[100005],l[100005]; double pf(double x) { return x*x; } double count(int i, int j) { return sqrt(pf(y[i])+pf(a))+sqrt(pf(a-b)+pf(y[i]-yy[j]))+l[j]; } int main() { int i,j,p,q; double ans; cin >>n>>m>>a>>b; for (i=1;i<=n;i++) cin >>y[i]; for (i=1;i<=m;i++) cin >>yy[i]; for (i=1;i<=m;i++) cin >>l[i]; sort(y+1,y+n); sort(yy+1,yy+m); ans=inf; j=1; for(i=1;i<=m;i++) { while(j<n&&count(j,i)>count(j+1,i)) j++; if (ans>count(j,i)) { ans=count(j,i); p=j,q=i; } } cout <<p<<" "<<q<<endl; return 0; }
相关文章推荐
- CROC-MBTU 2012, Final Round (Online version, Div. 2) A - Paper Work
- [CROC-MBTU 2012, Final Round (Online version, Div. 2)]A. Paper Work
- CROC-MBTU 2012, Final Round (Online version, Div. 2) (同是坑......待填..............无视之)
- CROC-MBTU 2012, Final Round (Online version, Div. 2)总结
- CROC-MBTU 2012, Final Round (Online version, Div. 2)笔记
- CROC-MBTU 2012, Final Round (Online version, Div. 2)
- codeforce CROC-MBTU 2012, Final Round (Online version, Div. 2)
- CF CROC-MBTU 2012, Final Round div 2
- CF Croc Champ 2013 - Finals (online version, Div. 1) C(greedy)
- Croc Champ 2013 - Finals (online version, Div. 1)
- Croc Champ 2013 - Finals (online version, Div. 1)
- Codeforces Croc Champ 2012 - Round 2 (Unofficial Div. 2 Edition)
- CROC-MBTU 2012, Elimination Round (ACM-ICPC) D题
- Codeforces Croc Champ 2012 - Round 2 (Unofficial Div. 2 Edition)
- CROC-MBTU 2012, Elimination Round (ACM-ICPC) H DP题目
- Codeforces Problemset 212D(VK Cup 2012 Finals (unofficial online-version))
- CF CROC-MBTU 2012, Elimination Round (ACM-ICPC)
- CROC-MBTU 2012, Elimination Round (ACM-ICPC)
- CROC-MBTU 2012, Elimination Round (ACM-ICPC) H. Queries for Number of Palindromes
- CROC-MBTU 2012, Elimination Round (ACM-ICPC)