• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

由于鄙人能力有限只做了三道题

npbkr4ywqek4076.png

签到题没啥好说的

点击查看代码#includebits/stdc .h

使用命名空间标准

#定义低位(x) x(-x)

#定义ll龙龙

const int maxn=5e4 5

void solve();

int main(){

int T;转换成整形

while(T-)solve();

返回0;

}

void solve(){

字符串s;

对于于胜思网络

ll sum=0,len=s . size();

for(int I=0;终场我)

sum=(s-' a ' 1);

如果(!(len1))

cout 'Alice ' sumendl

否则{

int minn=min(s[0]-'a ',s[len-1]-' a ')1;

//cout ' Minn=' minnendl;

if(minnsum-minn)

cout ' Bob ' minnendl

else cout ' Alice ' sum-2 * minnendl;

}

}

vdmpox4rowe4077.png

这种字符串出现次数类的题目一般都是维护一个最后的数组表示该字符前一个出现的位置在哪

通过观察发现如果一个字符前后位置差小于该字符串所有出现字符的个数

选择这个子串那么一定会出现至少有一个字符出现0次但是当前字符出现了两次

所以依次判断就好

点击查看代码#includebits/stdc .h

使用命名空间标准

#定义低位(x) x(-x)

#定义ll龙龙

int T;

映射字符,intmp

void solve();

int main(){

转换成整形

while(T-)solve();

返回0;

}

void solve(){

字符串s;

对于于胜思网络

int len=s.size(),tot=0;

议员。clear();

for(int I=0;终场我)

如果(!mp.count(s))mp[s]=1,tot

小孩

议员。clear();

for(int I=0;ileni ){

如果(!议员。count(s)MP[s]=I;

否则{

if(i-mp[s] 1tot)

{

cout 'NO 'endl

返回;

} else MP[s]=I;

}

}

回答“是”结束

}

d1uouzhsxzo4078.png

这个题和整数分解很像不过就是多了一个组成的数是回文数这个条件

推荐一个很好的整数分解的:

https://www.cnblogs.com/wzxbeliever/p/16063096.html

这个题多的就是要找到比n小的最大的数假设为t输出dp[n][t]就好

点击查看代码#includebits/stdc .h

使用命名空间标准

#定义低位(x) x(-x)

#定义ll龙龙

const int maxn=4 E4 5;

const int mod=1e 9 7;

ll DP[maxn][500];

int a[6],n;

矢量q

无效CK(int);

void calc();

int main(){

int T;

转换成整形

q . push _ back(0);

for(int I=1;i=4e4我)

ck(一);

calc();

while(T - ){

scanf('%d ',n);

int t,L=1,R=q . size()-1;

while(L=R){

int mid=L R1;

if(Q[mid]=n)t=mid,L=mid 1;

else R=mid-1;

}

printf('%lld\n ',DP[n][t]);

}

返回0;

}

void ck(int now){

int cnt=0,x=现在

而(x)a[cnt]=x,x/=10;

for(int I=1;I=(CNT/2);我)

if(a[cnt-i 1]!=a)返回;

Q.push_back(现在);

}

void calc(){

for(int I=1;i=4e4i ){

int pp=1,TT;

for(int j=1;jq。size();j ){

int to=Q[j];

如果(I=topp)TT=j;

else PP=0;

如果(伊藤)

DP[j]=DP[TT];

else if(ito)

DP[j]=(DP[I-to][j]DP[j-1])% mod;

else DP[j]=(DP[j-1]1)% mod;

}

}

}

Link to comment
Share on other sites