codefoces #411

We have a tree T with n vertices and m types of ice cream numerated from 1 to m. Each vertex i has a set of si types of ice cream. Vertices which have the i-th (1 ≤ i ≤ m) type of ice cream form a connected subgraph.
指的是这个树,因为是联通图,所以必定有
A. Fake NP
给一个范围l,r
写下l到r所有整数的所有除了1以为的因子
显然,r-l<=1的时候,输出l即可,因为l也是因子之一,而2个相邻数是没有共同因子的。
当r-l>1的时候,那么2是最多写在纸上的因子,因为每2个数写1个,而对于因子k,每k个数才写1次。
B. 3-palindrome
输出一个名字要求无长度为3的回文串如aba,bab,由abc组成且最少c的数量
那么可以构造出aabbaabbaab这样的字符串,n为几就输出长度为几的字符串即可.
C. Find Amir
给出学校数量n,可以从任意起点开始旅游,问旅游完全部学校的费用,
旅游费用从i->j为(i+j)%(n+1)
那么尽可能的旅游i+j==n+1的点,找规律!!如10
1->10 消费0 从10->2 消费1 2->9 消费0 9->3消费1
3->8  消费0 8->4    消费1 4->7 消费0 7->5消费1
5->6  消费0
可以得出旅游2个免费,3个1元,4个1元,5个2元,6个2元,7个3元-- 以此类推
D. Minimum number of steps
给一个由a、b组成的字符串,所有ab子串都变成bba,每次变化行动为1次,
问把这个子串的ab变化完,需要多少次,结果mod(1e9+7)
!!找规律即可.

每移动m个a到b的右边需要pow(2,m)-1次,快速幂即可

#include<iostream>
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include <map>
#include <set>
#include <math.h>
#include <queue>
#include <algorithm>
#include<vector>
using namespace std;
char s1[1050000];
long long pow_(long long x,long long y,long long m){
	if(y==0)return 1;
	long long sum1=(pow_(x,y/2,m)%m)*(pow_(x,y/2,m)%m);
	if(y%2==1)sum1*=x;
	return sum1%m;
}
int main(){
    //freopen("in.txt","r",stdin);
    int  i,j,k,l1,f1,f2,f3,f4,f5,t4,t1,m;
   	int T;
   	int r1,l2,r2;
   	int t3,n;
   	cin >> s1;
   	l1=strlen(s1);
   	t1=0;
   	long long sum1=0;
   	m=1e9+7;
	for(i=0;i<l1;i++){
   	if(s1[i]=='a'){
   		t1++;
	}else{
		sum1+=pow_(2,t1,1e9+7)-1;
		sum1=sum1%(m);
	}
	}
	cout << sum1 << endl;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值