标签:函数 sig 删除 字符串 floyd bst set base exgcd
1 =,assign() //赋以新值 2 s.assign(str); 3 s.assign(str,1,3);//如果str是”iamangel” 就是把”ama”赋给字符串 4 s.assign(str,2,string::npos);//把字符串str从索引值2开始到结尾赋给s 5 s.assign(“gaint”); 6 s.assign(“nico”,5);//把’n’ ‘I’ ‘c’ ‘o’ ‘\0’赋给字符串 7 s.assign(5,’x’);//把五个x赋给字符串 8 b) swap() //交换两个字符串的内容 9 c) +=,append(),push_back() //在尾部添加字符 10 d) insert() //插入字符 11 e) erase() //删除字符 12 g) replace() //替换字符 13 h) +//串联字符串 14 ==,!=,<,<=,>,>=,compare() //比较字符串 15 string s(“abcd”); 16 s.compare(“abcd”); //返回0 17 s.compare(“dcba”); //返回一个小于0的值 18 s.compare(“ab”); //返回大于0的值 19 s.compare(s); //相等 20 s.compare(0,2,s,2,2); //用”ab”和”cd”进行比较 小于零 21 s.compare(1,2,”bcx”,2); //用”bc”和”bc”比较。 22 j) size(),length() //返回字符数量 23 r) copy() //将某值赋值为一个C_string 24 s) c_str() //将内容以C_string返回 25 u) substr() //返回某个子字符串 26 s.substr(11);//从索引11往后的子串 27 s.substr(5,6);//从索引5开始6个字符 28 k)find() 29 string::size_type position; 30 position = s.find("xx"); 31 //查找s 中flag 出现的所有位置。 32 flag="a"; 33 position=0; 34 while((position=s.find_first_of(flag,position))!=string::npos) 35 { 36 //position=s.find_first_of(flag,position); 37 cout<<"position : "<<position<<endl; 38 position++; 39 }
int gcd(int x,int y){ return y?gcd(y,x%y):x; }
int lcm(int a,int b) {return a*b/gcd(a,b); }
1 int exgcd(int a, int b, int& x, int& y){//a*x+b*y=gcd(a,b)=d;(x,y)为其一组整数解 2 int d = a; 3 if(b != 0){ 4 d = exgcd(b, a % b, y, x); 5 y -= (a / b) * x; 6 }else { 7 x = 1; 8 y = 0; 9 } 10 return d; 11 }
1 ll quick_power(ll base, ll n){ 2 ll res = 1; 3 while (n > 0){ 4 if (n & 1) 5 res *= base; // res = (res * base) % mod; 6 base *= base; //base = (base * base) % mod; 7 n >>= 1; 8 } 9 return res; 10 }
1 int mod; 2 int n,m,sum; 3 struct mtix{ 4 int a[maxn][maxn]; 5 mtix(){memset(a,0,sizeof(a));} 6 }f; 7 mtix mul(mtix a,mtix b){ 8 mtix c; 9 for (int i=1;i<=n;i++) 10 for (int j=1;j<=n;j++) 11 for (int k=1;k<=n;k++) 12 {c.a[i][j]+=(a.a[i][k]*b.a[k][j])%mod;c.a[i][j]%=mod;} 13 return c; 14 } 15 mtix mpow(int y){ 16 mtix ans; 17 mtix tem=f; 18 for (int i=1;i<=n;i++) 19 ans.a[i][i]=1; 20 for (;y;tem=mul(tem,tem),y>>=1) 21 if (y&1) ans=mul(ans,tem); 22 for (int i=1;i<=n;i++) 23 sum+=ans.a[i][i]; 24 cout<<sum%mod<<endl; 25 return ans; 26 } 27 int main(){ 28 cin>>n>>m; 29 for (int i=1;i<=n;i++) 30 for (int k=1;k<=n;k++) 31 cin>>f.a[i][k]; 32 mpow(m); 33 }
1 char a[1010],b[1010]; 2 int dp[1010][1010]; 3 int main(){ 4 int lena,lenb,i,j; 5 while(scanf("%s%s",&a,&b)!=EOF){ 6 lena=strlen(a); 7 lenb=strlen(b); 8 memset(dp,0,sizeof(dp)); 9 for(i=1;i<=lena;++i){ 10 for(j=1;j<=lenb;++j){ 11 if(a[i-1]==b[j-1]) 12 dp[i][j]=dp[i-1][j-1]+1; 13 else 14 dp[i][j]=max(dp[i-1][j],dp[i][j-1]); 15 } 16 } 17 printf("%d\n",dp[lena][lenb]); 18 } 19 return 0; 20 }
1 for (int k = 1; k <= n; k++) { 2 for (int i = 1; i <= n; i++) { 3 if (i == k) continue; 4 for (int j = 1; j <= n; j++) { 5 if (i == j || k == j) continue; 6 dis[i][j] = min(dis[i][j], dis[i][k]+ dis[k][j]); 7 } 8 } 9 }
1 int pre[maxn]; 2 int tot[maxn];//集合元素数量 3 int Rank[maxn];//集合排名 4 int n,m,k; 5 void init(){ 6 for(int i=1;i<=n;++i){ 7 pre[i]=i; 8 tot[i]=1; 9 } 10 mst(Rank,0); 11 } 12 int find(int x){ 13 if(x==pre[x]) 14 return x; 15 else 16 return pre[x]=find(pre[x]); 17 } 18 19 void join(int x, int y){ 20 x = find(x); 21 y = find(y); 22 if (Rank[x] > Rank[y]){ 23 pre[y] = x; 24 if (x != y) 25 tot[x] += tot[y]; 26 } 27 else{ 28 pre[x] = y; 29 if (x != y) 30 tot[y] += tot[x]; 31 if (Rank[x] == Rank[y]) 32 Rank[y] += 1; 33 } 34 }
1 //f[]:可以取走的石子个数 2 //sg[]:0~n的SG函数值 3 //vis[]:mex{} 4 int f[maxn],sg[maxn],vis[maxn]; 5 void getSG(int n){ 6 int i,j; 7 memset(sg,0,sizeof(sg)); 8 for(i=1;i<=n;i++){ 9 memset(vis,0,sizeof(vis)); 10 for(j=1;f[j]<=i&&f[j]<=m;j++) //注意加f[i]的限定条件,此处为f[j]<=m 11 vis[sg[i-f[j]]]=1; 12 for(j=0;j<=n;j++){ //求mes{}中未出现的最小的非负整数 13 if(vis[j]==0){ 14 sg[i]=j; 15 break; 16 } 17 } 18 //cout<<i<<" "<<sg[i]<<endl; 19 } 20 }
1 //注意 S数组要按从小到大排序 SG函数要初始化为-1 对于每个集合只需初始化1遍 2 //n是集合s的大小 S[i]是定义的特殊取法规则的数组 3 int s[110],sg[10010],n; 4 int SG_dfs(int x) 5 { 6 int i; 7 if(sg[x]!=-1) 8 return sg[x]; 9 bool vis[110]; 10 memset(vis,0,sizeof(vis)); 11 for(i=0;i<n;i++) 12 { 13 if(x>=s[i]) 14 { 15 SG_dfs(x-s[i]); 16 vis[sg[x-s[i]]]=1; 17 } 18 } 19 int e; 20 for(i=0;;i++) 21 if(!vis[i]) 22 { 23 e=i; 24 break; 25 } 26 return sg[x]=e; 27 }
标签:函数 sig 删除 字符串 floyd bst set base exgcd
原文地址:https://www.cnblogs.com/warmingtxdy/p/11317962.html