codeforces 320
2013-06-24 09:33
302 查看
总算进div1了,留念一下。
A. Magic Numbers
怎么做都行,我用动态规划。看了别人的代码,他们用的是1包含14,14包含144。一次按照144,14,1,的顺序把开头的字母去掉。看能否把全部去掉。
B. Ping-Pong (Easy Version)
按照题目的条件建图,看能否从I1到I2。bfs。
C. Malek Dance Club
思路很清晰,二进制一位一位考虑。画画就出来了。
D. Psychos in a Line
考虑第k个人是被谁杀的。他可以被他前一个人杀,如果杀不了,则被杀掉前一个人的人所杀,类推。找到能杀掉第k个人的人。次数+1。
e题不会。都没看懂题。
A. Magic Numbers
怎么做都行,我用动态规划。看了别人的代码,他们用的是1包含14,14包含144。一次按照144,14,1,的顺序把开头的字母去掉。看能否把全部去掉。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #include <cmath> #include <stack> #include <map> #include <string> #define LL long long #define DB double #define SF scanf #define PF printf #define N 109 #define bug cout<<"bug"<<endl; using namespace std; char ch ; int v ; int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif cin>>ch+1; int i,len =strlen(ch+1); v[0] = 1; for(i=1;i<=len;i++) { if(ch[i]=='1'&&v[i-1]) v[i] = 1; if(i>1&&ch[i]=='4'&&ch[i-1]=='1'&&v[i-2]) v[i] = 1; if(i>2&&ch[i]=='4'&&ch[i-1]=='4'&&ch[i-2]=='1'&&v[i-3]) v[i] = 1; } if(v[len]) PF("YES\n"); else PF("NO\n"); return 0; }
B. Ping-Pong (Easy Version)
按照题目的条件建图,看能否从I1到I2。bfs。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #include <cmath> #include <stack> #include <map> #include <string> #define LL long long #define DB double #define SF scanf #define PF printf #define N 209 #define bug cout<<"bug"<<endl; using namespace std; struct nod{ int l,r; } re ; vector<int> L ; int cnt=1; void oper(int k) { for(int i=1;i<k;i++) { if((re[i].l>re[k].l&&re[i].l<re[k].r)|| (re[i].r>re[k].l&&re[i].r<re[k].r)) L[i].push_back(k); if((re[k].l>re[i].l&&re[k].l<re[i].r)|| (re[k].r>re[i].l&&re[k].r<re[i].r)) L[k].push_back(i); } } int v ; void dfs(int k) { if(v[k]) return ; v[k] = 1; for(int i=0;i<(int)L[k].size();i++) dfs(L[k][i]); } int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif int n; SF("%d",&n); int a,b,c; while(n--) { SF("%d%d%d",&a,&b,&c); if(a==1) { re[cnt].l = b; re[cnt].r = c; oper(cnt); cnt++; }else { memset(v,0,sizeof(v)); dfs(b); PF("%s\n",v[c]?"YES":"NO"); } } return 0; }
C. Malek Dance Club
思路很清晰,二进制一位一位考虑。画画就出来了。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #include <cmath> #include <stack> #include <map> #include <string> #define LL long long #define DB double #define SF scanf #define PF printf #define N 209 #define bug cout<<"bug"<<endl; using namespace std; char ch ; int n ; const LL mod = 1000000007; LL get(int k) { LL ret = 1; for(int i=0;i<k;i++) { ret*=2; if(ret>=mod) ret%=mod; }return ret; } int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif SF("%s",ch); n = strlen(ch); LL ans = 0; for(int i=n-1;i>=0;i--) { int t = 2*n-i-2; if(ch[i]=='1') ans += get(t); if(ans>=mod) ans%=mod; }cout<<ans<<endl; return 0; }
D. Psychos in a Line
考虑第k个人是被谁杀的。他可以被他前一个人杀,如果杀不了,则被杀掉前一个人的人所杀,类推。找到能杀掉第k个人的人。次数+1。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #include <cmath> #include <stack> #include <map> #include <string> #define LL long long #define DB double #define SF scanf #define PF printf #define N 100009 #define bug cout<<"bug"<<endl; using namespace std; int pre ; int dp ; int re ; int ans; int n; void solve() { for(int i=1;i<=n;i++) { int tmp =0 ; for(int k=i-1;k;k=pre[k]) { if(re[k]>re[i]) { pre[i] = k; dp[i]=tmp+1; break; } tmp = max(tmp,dp[k]); } } int ans =0; for(int i=1;i<=n;i++) { // cout<<dp[i]<<" "; if(ans<dp[i]) ans = dp[i]; }//cout<<endl; PF("%d\n",ans); } int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif SF("%d",&n); for(int i=1;i<=n;i++) SF("%d",&re[i]); solve(); return 0; }
e题不会。都没看懂题。
相关文章推荐
- CodeForces 320 B. Ping-Pong DFS BFS 弗洛伊德算法
- codeforces 370B
- Codeforces 570C
- Codeforces 165D Beard Graph 【树链剖分】
- CodeForces 724E(Goods transportation 最小割)
- CodeForces - 666B World Tour(BFS+枚举)
- 【codeforces 805B】3-palindrome
- codeforces 221 div1 D Tree and Queries
- Codeforces 6D
- CodeForces 598B Queries on a String
- codeforces 721C. Journey 最长路记录路径
- Codeforces-803F-Coprime Subsequences(筛)
- 【codeforces 789D】Weird journey
- Codeforces 398B Painting The Wall(dp)
- Codeforces 570D,dfs+位运算
- Codeforces 665C Simple Strings【暴力,贪心】
- CodeForces 124C Prime Permutation (数论+贪心)
- codeforces 804A Find Amir
- 【codeforces 701C】They Are Everywhere
- Codeforces 400 D. Dima and Bacteria