2009-01-09
SRM374 Div1 Easy: SyllableSorting
275点問題。
System Testで{"baqibae","baebaqi"}で落ちる。結果の並び順について問題がちゃんと読めていなかった故。
class SyllableSorting {
int vowelp(int c){ /// ← 返り値の型はboolでいい。intでもいいけど。ていうかpって何ww
switch(c){
case 'a':case 'e':case 'i':case 'o':case 'u': return true;
default: return false;
}
}
vector<string> parse(string s){
vector<string> res;
int st=1,l=sz(s),b=0;
for(int i=0;i<l;i++){
if(vowelp(s[i])){
st=2;
}else{
if(st==2){
res.pb(s.substr(b,i-b));
b=i;
st=1;
}
}
}
if(b<l) res.pb(s.substr(b));
return res;
}
public:
vector<string> sortWords(vector<string> words) {
int n=sz(words);
vector<pair<vector<string>,pair<vector<string>,string> > > res(n);
rep(i,n){
vector<string> syls=parse(words[i]);
vector<string> sorted(all(syls));
sort(all(sorted));
res[i]=make_pair(sorted,make_pair(syls,words[i]));
}
sort(all(res));
vector<string> ans(n);
rep(i,n) ans[i]=res[i].second.second;
return ans;
}
};
SRM375 Div1 Easy: DivisibleByDigits
- long longとか打ってるのが馬鹿馬鹿しい。typedef long long ll; は常備しないと。
- #define ... の行とか消しとかないと30% unused codeルールに引っかかって、消してまたsubmitとか時間のロス
- 7'40''
int gcd(int m, int n)
{
if (m == 0 || n == 0) return 0;
if (m == 1 || n == 1) return 1;
if (m == n) return m;
while (1) {
if (m == 0) return n;
if (n == 0) return m;
if (m > n) m %= n; else n %= m;
}
}
int lcm(int m, int n)
{
return m / gcd(m,n) * n;
}
class DivisibleByDigits {
public:
long long getContinuation(int n) {
long long de=1LL;
for(int _=n;_>0;_/=10){
int r=_%10;
if(r) de=lcm(de,r);
}
for(long long b=n,m=1;b<=LONG_LONG_MAX;b*=10,m*=10){
long long r=b%de;
if(r==0)return b;
long long s=de-r;
if(s<=m-1)return b+s;
}
return 0;
}
};
コメント
トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/n4_t/20090109