首页 > 代码库 > 今晚的两道 bc
今晚的两道 bc
第一道题 Beautiful Palindrome Number
,简单组合计数问题,手算打表就好~【第一次 提交竟然 wa了一次 有一个小小的坑在那。。。。
1 /********************************* 2 Author: jusonalien 3 Email : jusonalien@qq.com 4 school: South China Normal University 5 Origin: 6 *********************************/ 7 #include <iostream> 8 #include <cstdio> 9 #include <map>10 #include <cstring>11 #include <string>12 #include <set>13 #include <queue>14 #include <vector>15 using namespace std;16 int ans[7] = {1,9,18,54,90,174,258};17 int T;18 int main(){19 cin>>T;20 int k;21 while(T--){22 cin>>k;23 printf("%d\n",ans[k]);24 }25 return 0;26 }
第二道题,Operation the Sequence
一开始想到的就是 线段树啥的,尼玛一个人在那想啊想啊,想到蛋碎 都没想到究竟要怎么操作,突然间想到能不能到时反过来 递推过去?这么一想会不会很傻X?会不会T啊?尼玛 连具体方法都没想好,就担心T了,,简直太低能了,后来lpt好像也在做这个比赛,她在Q上吐槽道说她刚去图书馆水过第一题后图书馆就闭馆了,然后我和她讨论了一下第二题,聊着聊着就聊到了递推,然后就她说有个词叫做离线。。。哎原来这就是离线?然后 我就开始写 ,为了能够保证到时能够倒着推过去,就用stack咯,,结果还没写完就out of submit time了,没办法交了,,,rating就这么跑了囧rz
晚上出去散了一下步之后,回来接着写那道题目,第一次t了一次,,原来我天真地用了快速幂,其实不用快速幂更快,然后答案没有设为long long 又wa 了一发,然后 乱搞了几次后就ac了
1 /********************************* 2 Author: jusonalien 3 Email : jusonalien@qq.com 4 school: South China Normal University 5 Origin: 6 *********************************/ 7 #include <iostream> 8 #include <cstdio> 9 #include <map>10 #include <cstring>11 #include <string>12 #include <set>13 #include <queue>14 #include <vector>15 #include <stack>16 using namespace std;17 const int MOD = 1e9 + 7;18 int n,m,pow;19 stack<int> op;20 inline int fun_1(int o){21 if(n&1){//ÆæÊý22 if(o <= (n+1)/2)23 return o*2 - 1;24 else25 return (o - (n+1)/2)*2;26 }else{//żÊý27 if(o <= n/2)28 return o*2 - 1;29 else30 return (o - n/2) * 2;31 }32 }33 inline int fun_2(int o){34 return n - o + 1;35 }36 inline int solve(int o,int q){37 if(o == 1)38 return fun_1(q);39 else40 return fun_2(q);41 }42 int query(int o){43 stack<int> q = op;44 while(!q.empty()){45 o = solve(q.top(),o);46 q.pop();47 }48 long long ans = o;49 for(int i = 1;i <= pow;++i)50 ans = (ans*ans)%MOD;51 return ans;52 }53 int T;54 int main(){55 n = 5;56 char ope[3];57 int ope_;58 cin>>T;59 while(T--){60 pow = 0;61 while(!op.empty()) op.pop();62 scanf("%d%d",&n,&m);63 for(int i = 1;i <= m;++i){64 scanf("%s %d",ope,&ope_);65 if(ope[0] == ‘O‘&&ope_ != 3)66 op.push(ope_);67 else if(ope[0] == ‘O‘&&ope_ == 3 )68 pow++;69 else if(ope[0] == ‘Q‘)70 cout<<query(ope_)<<endl;71 }72 }73 return 0;74 }
今晚的两道 bc
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。