http://digitalarts2012.contest.atcoder.jp/
15位 | 75:23 | 300pts(1) |
問題 | 時間 | 得点(WA) |
---|---|---|
A | 03:59 | 100 |
B | 33:34 | 100(1) |
C | 55:23 | 100 |
以下ソースとか.
rubyで書いたのに間違ってCで提出するなどした.
なんか全部ちゃんとチェックした.
FA取れなかったけどSecond acceptedだった.
def match(s, ng) return false if s.length != ng.length for i in 0...s.length return false if s[i] != ng[i] && ng[i] != "*" end return true end ss = gets.split(" ") n = geti ngs = [] n.times do ngs << gets.chomp end for i in 0...ss.size ngs.each do |ng| if match(ss[i], ng) ss[i] = "*" * ss[i].size end end end puts ss * " "
鬼畜場合分け系問題.
String#predとかいうわけわからぬものを書いたのと, 入力がbの時b返したので1WA.
def num(a) return a.ord - 'a'.ord + 1 end s = gets.chomp.split("") if s.length == 20 && s.all?{|c| c == 'z'} puts "NO" exit end if s == ['a'] puts "NO" exit end if !s.all?{|c| c == s[0]} t = [] while s == (t = s.shuffle) end puts t * "" exit end if s.size == 1 n = num(s[0]) res = "" while n != 0 if n >= 2 res += "b" n -= 2 else res += "a" n -= 1 end end res = "aa" if s == ["b"] puts res exit end #size != 1, all same char if s[0] == 'a' c = 'a' while num(c) != s.length c = c.succ end puts c exit elsif s[0] == 'z' s[0] = 'y' s += 'a' puts s * "" exit else s[0][0] = s[0][0].succ s[1][0] = (s[1][0].ord - 1).chr puts s * "" exit end
フォローしてから外すまでのツイートを足したいので, フォローした時のツイート数引いておいて, フォロー外すor最後にツイート数足せばよい.
自分自身のツイートを数えるのと, Twitterと違ってフォローが勝手に双方向になるのに気をつける.
int n, m, k; vi tweets; vi tl; vector<set<int> > follows;; void tweet(int p){ ++tweets[p]; //cout << p << "tweets" << endl; } void follow(int p, int q){ tl[p] -= tweets[q]; follows[p].insert(q); //cout << p << "follow " << q << ": -" << tweets[q] << endl; } void unfollow(int p, int q){ tl[p] += tweets[q]; follows[p].erase(q); //cout << p << "unfollow " << q << ": +" << tweets[q] << endl; } void solve(){ rep(i, n){ foreach(it, follows[i]){ tl[i] += tweets[*it]; } tl[i] += tweets[i]; } vector<pair<int, int> > a; rep(i, n){ // cout << i << ": " << tl[i] << endl; a.pb(mp(-tl[i], i)); } sort(all(a)); cout << -a[k-1].first << endl; } int main(){ cin >> n >> m >> k; tweets.resize(n); tl.resize(n); follows.resize(n); rep(i, m){ char c; cin >> c; int p, q; if(c == 't'){ cin >> p; --p; tweet(p); }else if(c == 'f'){ cin >> p >> q; --p; --q; follow(p, q); follow(q, p); }else{ cin >> p >> q; --p; --q; unfollow(p, q); unfollow(q, p); } } solve(); return 0; } /* vim:set foldmethod=marker commentstring=//%s : */