MemSQL Start[c]UP 2.0 - Round 2 - Online Round

搞到凌晨4点一个没出,要gg了。

A. Golden System http://codeforces.com/contest/458/problem/A

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<algorithm>
 5 using namespace std;
 6 const double q=(sqrt(5.0)+1)/2;
 7 const int M=100010;
 8 char a[M],b[M];
 9 int sa[M],sb[M];
10 void gxrev(char c[]){
11     for(int i=0,j=strlen(c)-1;i<j;i++,j--){
12         swap(c[i],c[j]);
13     }
14 }
15 double gxpow(double x,int p){
16     double res=1;
17     while(p){
18         if(p&1) res*=x;
19         x*=x;
20         p>>=1;
21     }
22     return res;
23 }
24 int main(){
25     while(~scanf("%s%s",a,b)){
26         gxrev(a);
27         gxrev(b);
28         int la=strlen(a);
29         int lb=strlen(b);
30         int len=max(la,lb);
31         for(int i=la;i<len;i++) a[i]=‘0‘;
32         for(int i=lb;i<len;i++) b[i]=‘0‘;
33         a[len]=b[len]=0;
34         for(int i=0;i<len;i++){
35             sa[i]=a[i]-‘0‘;
36             sb[i]=b[i]-‘0‘;
37         }
38         for(int i=0;i<len;i++){
39             if(i+2<len){
40                 if(sa[i]&&sa[i+1]){
41                     int sma=min(sa[i],sa[i+1]);
42                     sa[i]-=sma;
43                     sa[i+1]-=sma;
44                     sa[i+2]+=sma;
45                 }
46                 if(sb[i]&&sb[i+1]){
47                     int sma=min(sb[i],sb[i+1]);
48                     sb[i]-=sma;
49                     sb[i+1]-=sma;
50                     sb[i+2]+=sma;
51                 }
52             }
53         }
54         int flag=0;
55         for(int i=len-1;i>=0;i--){
56             int sma=min(sa[i],sb[i]);
57             sa[i]-=sma;
58             sb[i]-=sma;
59             if(i-2>=0){
60                 if(sa[i]){
61                     if(sa[i]>M){
62                         flag=1;
63                         break;
64                     }
65                     sa[i-1]+=sa[i];
66                     sa[i-2]+=sa[i];
67                     sa[i]=0;
68                 }
69                 if(sb[i]){
70                     if(sb[i]>M){
71                         flag=-1;
72                         break;
73                     }
74                     sb[i-1]+=sb[i];
75                     sb[i-2]+=sb[i];
76                     sb[i]=0;
77                 }
78             }
79         }
80         if(flag==1){
81             puts(">");
82             continue;
83         }
84         if(flag==-1){
85             puts("<");
86             continue;
87         }
88         double suma=0,sumb=0;
89         for(int i=0;i<len&&i<3;i++){
90             suma+=gxpow(q,i)*sa[i];
91             sumb+=gxpow(q,i)*sb[i];
92         }
93         if(suma>sumb) puts(">");
94         else if(suma<sumb) puts("<");
95         else puts("=");
96     }
97     return 0;
98 }

end

MemSQL Start[c]UP 2.0 - Round 2 - Online Round

时间: 2024-08-25 13:31:41

MemSQL Start[c]UP 2.0 - Round 2 - Online Round的相关文章

MemSQL Start[c]UP 2.0 - Round 1

搞了好久才把大部分题目题解看完了,真是太弱了. A题简单暴力题一个一个匹配,对应位置字母要么相同,要么是'.'. B题给定一个矩阵,左下角(0,0),右上角(n, m),取4个不同的点连成一段折线,要有最长的折线长度. 排除n == 0 和m == 0 ,剩下的情况中总共由4中情况: 枚举一下就可以了 1. (0,0)->(n,m)->(0, m)->(n, 0) 2. (0,0)->(n,m)->(n, 0)->(0, m) 3.(n,m-1)->(0,0)-&

MemSQL Start[c]UP 2.0 - Round 2

反正晚上睡不着,熬到1点开始做比赛,6个题目只做了2个题目,而且手速还比较慢,待提升空间还很大呢. A题:给定两个0,1串(len<=100000), 但是不是普通的二进制串,而是q进制串,q = (√5 + 1)/2,比较这两个串的大小. 分析:q的长度很大,即使用大数似乎也不怎么合理,其实我写了半天大数,用最大长度数据测试发现根本出不了结果,也许我写的太挫了,也学时间就耗在上面了. 最终只能另想方法,而且题目中也说明了q^2 = q+1,所以很容易想到利用这个来做这个题, 观察到对于一个串中

MemSQL Start[c]UP 2.0 - Round 1(无聊练手B题)

http://codeforces.com/contest/452/problem/B B. 4-point polyline time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given a rectangular grid of lattice points from (0, 0) to (n, m) inc

MemSQL Start[c]UP 2.0 - Round 1 B. 4-point polyline (线段的 枚举)

昨天cf做的不好,居然挂零了,还是1点开始的呢.,,, a题少了一个条件,没判断长度. 写一下B题吧 题目链接 题意: 给出(n, m),可以得到一个矩形 让你依次连接矩形内的4个点使它们的长度和最长,而这三条线段可以相交.交叉 分析:这种情况下,枚举对角线的四个点,当时我也想过,我只用了其中的一种 方式,其实有四种方式判断,好像没什么道理. 上图吧: MemSQL Start[c]UP 2.0 - Round 1 B. 4-point polyline (线段的 枚举)

MemSQL Start[c]UP 2.0 - Round 2 - Online Round A,B,C

MemSQL Start[c]UP 2.0 - Round 2 - Online Round 题目链接 不得不说这场真心不好打啊... A:黄金分割进制数,满足一个性质,对于第i位xi=xi?1+xi?2,这样一来就可以把所有位推到前两位去比较大小,不过单单这样直接搞果断爆longlong无限WA8,最后发现在推的过程中,有一位上面差值大于1,就可以直接判断了 B:不得不吐槽一下毛子的英语,Today's ying yu is very hao,题目看了非常非常久,不能更逗.其实看懂的就挺简单了

CF memsql Start[c]UP 2.0 A

CF memsql Start[c]UP 2.0 A A. Golden System time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Piegirl got bored with binary, decimal and other integer based counting systems. Recently she dis

Educational Codeforces Round 26 D. Round Subset(dp)

题目链接:Educational Codeforces Round 26 D. Round Subset 题意: 给你n个数,让你选其中的k个数,使得这k个数的乘积的末尾的0的个数最大. 题解: 显然,末尾乘积0的个数和因子2和因子5的个数有关. 然后考虑dp[i][j]表示选i个数,当前因子5的个数为j时,能得到因子2最多的为多少. 那么对于每个数,记录一下因子2和5的个数,做一些01背包就行了. 1 #include<bits/stdc++.h> 2 #define mst(a,b) me

MySQL四舍五入函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)

MySQL四舍五入函数ROUND(x) ROUND(x)函数返回最接近于参数x的整数,对x值进行四舍五入. 实例: 使用ROUND(x)函数对操作数进行四舍五入操作.SQL语句如下: mysql>SELECT ROUND(-2.34),ROUND(-4.56),ROUND(2.34),ROUND(4.56); ROUND(x)函数的执行结果如下图所示: 上图中代码执行的结果显示,进行四舍五入处理以后,只保留了各个值的整数部分. MySQL四舍五入函数ROUND(x,y) ROUND(x,y)函数

Codeforces Round #437 (Div. 2, based on MemSQL Start[c]UP 3.0 - Round 2) E. Buy Low Sell High [贪心 II][数据结构 I]

题目:http://codeforces.com/contest/867/problem/E 题意:模拟股票操作,每天只能买一只股票或者卖一只股票或者什么也不做,求最大利润. 题解:仔细想想是非常简单的一个贪心问题,理解为连续的多次贪心买入卖出可以合并为一次的买入卖出,且值为最优.只需要用一个最小堆每次寻找前面的最小且没有被标记为购买点的值即可.如果自己为最小值,continue.如果那个值没有被选过,为买入点,pop.如果那个值被选为了售出的点,那么取消售出的标记,把当前点标记为售出点,利润直