many
This commit is contained in:
parent
62e77a6b8d
commit
2d30154beb
|
@ -1,3 +1,4 @@
|
||||||
|
//not finish
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include<cstdio>
|
#include<cstdio>
|
||||||
#include<algorithm>
|
#include<algorithm>
|
||||||
|
|
|
@ -176,7 +176,16 @@ int main()
|
||||||
printf("%s",sub);
|
printf("%s",sub);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
123456789012345678901
|
||||||
|
125860
|
||||||
|
|
||||||
|
2564168486416487447411002654
|
||||||
|
5416846
|
||||||
|
|
||||||
|
30024
|
||||||
|
20
|
||||||
|
*/
|
||||||
// ce();
|
// ce();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
41
8.20/C.cpp
41
8.20/C.cpp
|
@ -1,3 +1,4 @@
|
||||||
|
//not finish
|
||||||
#include<cstdio>
|
#include<cstdio>
|
||||||
#include<vector>
|
#include<vector>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
@ -12,11 +13,13 @@ struct Node
|
||||||
int max;
|
int max;
|
||||||
int min;
|
int min;
|
||||||
int len;
|
int len;
|
||||||
|
int faw;
|
||||||
// vector<int> son;
|
// vector<int> son;
|
||||||
} a[N];
|
} a[N];
|
||||||
void add(int u,int v,int w1)
|
void add(int u,int v,int w1)
|
||||||
{
|
{
|
||||||
a[v].fa=u;
|
a[v].fa=u;
|
||||||
|
a[v].faw=w1;
|
||||||
w[++cnt]=w1;
|
w[++cnt]=w1;
|
||||||
to[cnt]=v;
|
to[cnt]=v;
|
||||||
ne[cnt]=h[u];
|
ne[cnt]=h[u];
|
||||||
|
@ -54,6 +57,37 @@ void ce()
|
||||||
printf("%d:%d %d %d %d %d\n",i,a[i].fa ,a[i].max,a[i].min,a[i].sum,a[i].len );
|
printf("%d:%d %d %d %d %d\n",i,a[i].fa ,a[i].max,a[i].min,a[i].sum,a[i].len );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void find(int )
|
||||||
|
{
|
||||||
|
if
|
||||||
|
}
|
||||||
|
int goup(int x,int k)
|
||||||
|
{
|
||||||
|
int u=x;
|
||||||
|
int sum=0;
|
||||||
|
int ans=0;
|
||||||
|
int len=0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
sum+=a[u].faw ;
|
||||||
|
if(len)
|
||||||
|
{
|
||||||
|
ans-=a[u].faw*a[u].len;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
if(sum>=k)
|
||||||
|
{
|
||||||
|
ans=a[1].sum;
|
||||||
|
ans-=a[u].sum;
|
||||||
|
len=a[u].len+1;
|
||||||
|
ans-=a[u].faw*a[u].len;
|
||||||
|
}
|
||||||
|
u=a[u].fa;
|
||||||
|
}while(a[u].fa)
|
||||||
|
}
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
int u,v,w1;
|
int u,v,w1;
|
||||||
|
@ -65,4 +99,11 @@ int main()
|
||||||
}
|
}
|
||||||
dfs(1);
|
dfs(1);
|
||||||
ce();
|
ce();
|
||||||
|
int q;
|
||||||
|
scanf("%d",&q);
|
||||||
|
while(q--)
|
||||||
|
{
|
||||||
|
scanf("%d%d",&x,&k);
|
||||||
|
pirntf("%d",goup(x,k));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,12 @@
|
||||||
|
# 题目
|
||||||
|
* 链接
|
||||||
|
### 题意
|
||||||
|
|
||||||
|
### 做法
|
||||||
|
|
||||||
|
### 关键词
|
||||||
|
|
||||||
|
### 易错点
|
||||||
|
*
|
||||||
|
### 工具箱
|
||||||
|
*
|
|
@ -0,0 +1 @@
|
||||||
|
#
|
|
@ -0,0 +1,31 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include<cstdio>
|
||||||
|
#include<algorithm>
|
||||||
|
#include <cmath>
|
||||||
|
using namespace std;
|
||||||
|
//const int N=1e8+5;
|
||||||
|
//void initialise(int n)
|
||||||
|
//{
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int t;
|
||||||
|
double H,h,D;
|
||||||
|
scanf("%d",&t);
|
||||||
|
while(t--)
|
||||||
|
{
|
||||||
|
scanf("%lf%lf%lf",&H,&h,&D);
|
||||||
|
// initialise(n);
|
||||||
|
double add=D/2-(H-h);
|
||||||
|
if(add>0)
|
||||||
|
{
|
||||||
|
printf("%.3lf\n",h+add);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("%.3lf\n",h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
## z:\Chao\src\Template\test\in.txt
|
||||||
|
2020/03/14 ÖÜÁù 11:41:28.68
|
||||||
|
Hello Easy C++ project!
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 200 ms with return value 0
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
# 题目
|
||||||
|
* 链接
|
||||||
|
### 题意
|
||||||
|
|
||||||
|
### 做法
|
||||||
|
|
||||||
|
### 关键词
|
||||||
|
|
||||||
|
### 易错点
|
||||||
|
*
|
||||||
|
### 工具箱
|
||||||
|
*
|
|
@ -0,0 +1 @@
|
||||||
|
#
|
|
@ -0,0 +1,118 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include<cstdio>
|
||||||
|
#include<algorithm>
|
||||||
|
#include <cmath>
|
||||||
|
using namespace std;
|
||||||
|
const int N=105,NN=N*N;
|
||||||
|
int n;
|
||||||
|
int ne[NN],to[NN],h[N];
|
||||||
|
int cnt=0;
|
||||||
|
int dfn[N],low[N];
|
||||||
|
bool in[N];
|
||||||
|
int dep=0;
|
||||||
|
int s[N];//stack
|
||||||
|
int top=0;
|
||||||
|
int belong[N];
|
||||||
|
int id=0;
|
||||||
|
bool fa[N],son[N];
|
||||||
|
//void init(int n)
|
||||||
|
//{
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
void add(int u,int v)
|
||||||
|
{
|
||||||
|
ne[++cnt]=h[u];
|
||||||
|
to[cnt]=v;
|
||||||
|
h[u]=cnt;
|
||||||
|
}
|
||||||
|
void targan(int u)
|
||||||
|
{
|
||||||
|
dfn[u]=++dep;
|
||||||
|
low[u]=dep;
|
||||||
|
in[u]=1;
|
||||||
|
int v;
|
||||||
|
s[++top]=u;
|
||||||
|
for(int i=h[u];i;i=ne[i])
|
||||||
|
{
|
||||||
|
v=to[i];
|
||||||
|
if(!dfn[v])
|
||||||
|
{
|
||||||
|
targan(v);
|
||||||
|
low[u]=low[u]<low[v]? low[u]:low[v];
|
||||||
|
}
|
||||||
|
else if(in[v])
|
||||||
|
{
|
||||||
|
low[u]=low[u]<low[v]? low[u]:low[v];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(dfn[u]==low[u])
|
||||||
|
{
|
||||||
|
id++;
|
||||||
|
// printf("%d:%d ",u,id);
|
||||||
|
do
|
||||||
|
{
|
||||||
|
belong[s[top]]=id;
|
||||||
|
in[s[top]]=0;
|
||||||
|
}while(s[top--]!=u);//-- ->++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void ce()
|
||||||
|
{
|
||||||
|
for(int i=1;i<=n;i++)
|
||||||
|
{
|
||||||
|
printf("%d(%d) ",i,belong[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
scanf("%d",&n);
|
||||||
|
// init(n);
|
||||||
|
int v;
|
||||||
|
for(int i=1; i<=n; i++)
|
||||||
|
{
|
||||||
|
while(~scanf("%d",&v)&&v)
|
||||||
|
{
|
||||||
|
add(i,v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int i=1;i<=n;i++)
|
||||||
|
{
|
||||||
|
if(!dfn[i])
|
||||||
|
{
|
||||||
|
targan(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ce();
|
||||||
|
for(int i=1;i<=n;i++)
|
||||||
|
{
|
||||||
|
for(int j=h[i];j;j=ne[j])
|
||||||
|
{
|
||||||
|
v=to[j];
|
||||||
|
if(belong[i]!=belong[v])//v->j
|
||||||
|
{
|
||||||
|
fa[belong[v]]=1;
|
||||||
|
son[belong[i]]=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int res1=0,res2=0;
|
||||||
|
for(int i=1;i<=id;i++)
|
||||||
|
{
|
||||||
|
// printf("%d(%d,%d) ",i,fa[i],son[i]);
|
||||||
|
if(!fa[i])
|
||||||
|
{
|
||||||
|
res1++;
|
||||||
|
}
|
||||||
|
if(!son[i])
|
||||||
|
{
|
||||||
|
res2++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res2=res1>res2? res1:res2;
|
||||||
|
if(id==1)
|
||||||
|
{
|
||||||
|
res1=1;res2=0;
|
||||||
|
}
|
||||||
|
printf("%d\n%d",res1,res2);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
## z:\Chao\src\Template\test\in.txt
|
||||||
|
2020/03/14 ÖÜÁù 11:41:28.68
|
||||||
|
Hello Easy C++ project!
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 200 ms with return value 0
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
# 题目
|
||||||
|
* 链接
|
||||||
|
### 题意
|
||||||
|
|
||||||
|
### 做法
|
||||||
|
|
||||||
|
### 关键词
|
||||||
|
|
||||||
|
### 易错点
|
||||||
|
*
|
||||||
|
### 工具箱
|
||||||
|
*
|
|
@ -0,0 +1 @@
|
||||||
|
#
|
|
@ -0,0 +1,31 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include<cstdio>
|
||||||
|
#include<algorithm>
|
||||||
|
#include <cmath>
|
||||||
|
using namespace std;
|
||||||
|
//const int N=1e8+5;
|
||||||
|
//void initialise(int n)
|
||||||
|
//{
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int t;
|
||||||
|
double H,h,D;
|
||||||
|
scanf("%d",&t);
|
||||||
|
while(t--)
|
||||||
|
{
|
||||||
|
scanf("%lf%lf%lf",&H,&h,&D);
|
||||||
|
// initialise(n);
|
||||||
|
double add=D/2-(H-h);
|
||||||
|
if(add>0)
|
||||||
|
{
|
||||||
|
printf("%.3lf\n",h+add);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("%.3lf\n",h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
## z:\Chao\src\Template\test\in.txt
|
||||||
|
2020/03/14 ÖÜÁù 11:41:28.68
|
||||||
|
Hello Easy C++ project!
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 200 ms with return value 0
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
#
|
|
@ -0,0 +1,71 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include<cstdio>
|
||||||
|
#include<algorithm>
|
||||||
|
#include <cmath>
|
||||||
|
#include<string>
|
||||||
|
using namespace std;
|
||||||
|
const int mod=998244353,N=21;
|
||||||
|
string s[N],t[N];
|
||||||
|
bool b[N][30];
|
||||||
|
int sum[N];
|
||||||
|
long long ans=0;
|
||||||
|
long long qpow(long long n,int l )
|
||||||
|
{
|
||||||
|
long long now=n,res=1;
|
||||||
|
while(l>0)
|
||||||
|
{
|
||||||
|
if(l&1==1)
|
||||||
|
{
|
||||||
|
res*=now;
|
||||||
|
res%=mod;
|
||||||
|
}
|
||||||
|
l=l>>1;
|
||||||
|
now*=now;
|
||||||
|
now%=mod;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int n,l;
|
||||||
|
scanf("%d%d",&n,&l);
|
||||||
|
for(int i=1; i<=n; i++)
|
||||||
|
{
|
||||||
|
cin>>s[i];
|
||||||
|
int len=s[i].size() ;
|
||||||
|
for(int j=0; j<len; j++)
|
||||||
|
{
|
||||||
|
//˳Ðò·´ÁË
|
||||||
|
if(b[i][s[i][j]-'a']==0)
|
||||||
|
{
|
||||||
|
sum[i]++;
|
||||||
|
}
|
||||||
|
b[i][s[i][j]-'a']=1;
|
||||||
|
}
|
||||||
|
printf("%d:\n%d+%d(%d)=",i,ans,qpow(sum[i],l),sum[i]);
|
||||||
|
ans+=qpow(sum[i],l);
|
||||||
|
ans%=mod;
|
||||||
|
printf("%d\n",ans);
|
||||||
|
int cnt=0;
|
||||||
|
|
||||||
|
memset(t,0,sizeof(string)*(n+1));
|
||||||
|
for(int k=1; k<i; k++)
|
||||||
|
{
|
||||||
|
sum[i]=0;
|
||||||
|
for(int j=0; j<len; j++)
|
||||||
|
{
|
||||||
|
if(b[k][s[i][j]-'a']==1)
|
||||||
|
{
|
||||||
|
sum[i]++;
|
||||||
|
t[k]+=s[i][j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("%d-%d(%d)=",ans,qpow(sum[i],l),sum[i]);
|
||||||
|
ans-=qpow(sum[i],l);
|
||||||
|
ans=(ans+mod)%mod;
|
||||||
|
printf("%d\n",ans);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("%lld",ans);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,68 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include<cstdio>
|
||||||
|
#include<algorithm>
|
||||||
|
#include <cmath>
|
||||||
|
#include<string>
|
||||||
|
using namespace std;
|
||||||
|
const int mod=998244353,N=21;
|
||||||
|
string s[N];
|
||||||
|
bool b[N][30];
|
||||||
|
int sum[N];
|
||||||
|
long long ans=0;
|
||||||
|
long long qpow(long long n,int l )
|
||||||
|
{
|
||||||
|
long long now=n,res=1;
|
||||||
|
while(l>0)
|
||||||
|
{
|
||||||
|
if(l&1==1)
|
||||||
|
{
|
||||||
|
res*=now;
|
||||||
|
res%=mod;
|
||||||
|
}
|
||||||
|
l=l>>1;
|
||||||
|
now*=now;
|
||||||
|
now%=mod;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int n,l;
|
||||||
|
scanf("%d%d",&n,&l);
|
||||||
|
for(int i=1; i<=n; i++)
|
||||||
|
{
|
||||||
|
cin>>s[i];
|
||||||
|
int len=s[i].size() ;
|
||||||
|
for(int j=0; j<len; j++)
|
||||||
|
{
|
||||||
|
//˳Ðò·´ÁË
|
||||||
|
if(b[i][s[i][j]-'a']==0)
|
||||||
|
{
|
||||||
|
sum[i]++;
|
||||||
|
}
|
||||||
|
b[i][s[i][j]-'a']=1;
|
||||||
|
}
|
||||||
|
printf("%d:\n%d+%d(%d)=",i,ans,qpow(sum[i],l),sum[i]);
|
||||||
|
ans+=qpow(sum[i],l);
|
||||||
|
ans%=mod;
|
||||||
|
printf("%d\n",ans);
|
||||||
|
for(int k=1; k<i; k++)
|
||||||
|
{
|
||||||
|
sum[i]=0;
|
||||||
|
for(int j=0; j<len; j++)
|
||||||
|
{
|
||||||
|
if(b[k][s[i][j]-'a']==1)
|
||||||
|
{
|
||||||
|
// b[k][s[i][j]-'a']=0;
|
||||||
|
sum[i]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("%d-%d(%d)=",ans,qpow(sum[i],l),sum[i]);
|
||||||
|
ans-=qpow(sum[i],l);
|
||||||
|
ans=(ans+mod)%mod;
|
||||||
|
printf("%d\n",ans);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("%lld",ans);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,78 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include<cstdio>
|
||||||
|
#include<algorithm>
|
||||||
|
#include <cmath>
|
||||||
|
#include<string>
|
||||||
|
#include<cstring>
|
||||||
|
using namespace std;
|
||||||
|
const int mod=998244353,N=21;
|
||||||
|
string s[N],t[N];
|
||||||
|
bool b[N][30];
|
||||||
|
int sum[N];
|
||||||
|
long long ans=0;
|
||||||
|
bool d[N][30];
|
||||||
|
int n,l;
|
||||||
|
long long qpow(long long n,int l )
|
||||||
|
{
|
||||||
|
long long now=n,res=1;
|
||||||
|
while(l>0)
|
||||||
|
{
|
||||||
|
if(l&1==1)
|
||||||
|
{
|
||||||
|
res*=now;
|
||||||
|
res%=mod;
|
||||||
|
}
|
||||||
|
l=l>>1;
|
||||||
|
now*=now;
|
||||||
|
now%=mod;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
void youa(int i,bool *b1[],string *s1)
|
||||||
|
{
|
||||||
|
int len=s1.size() ;
|
||||||
|
for(int j=0; j<len; j++)
|
||||||
|
{
|
||||||
|
//˳Ðò·´ÁË
|
||||||
|
if(b1[s1[j]-'a']==0)
|
||||||
|
{
|
||||||
|
sum[i]++;
|
||||||
|
}
|
||||||
|
b1[s1[j]-'a']=1;
|
||||||
|
}
|
||||||
|
printf("%d:\n%d+%d(%d)=",i,ans,qpow(sum[i],l),sum[i]);
|
||||||
|
ans+=qpow(sum[i],l);
|
||||||
|
ans%=mod;
|
||||||
|
printf("%d\n",ans);
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
scanf("%d%d",&n,&l);
|
||||||
|
for(int i=1; i<=n; i++)
|
||||||
|
{
|
||||||
|
cin>>s[i];
|
||||||
|
youa(i,&b[i],&s[i]);
|
||||||
|
int cnt=0;
|
||||||
|
int len=s[i].size() ;
|
||||||
|
memset(t,0,sizeof(string)*(n+1));
|
||||||
|
for(int k=1; k<i; k++)
|
||||||
|
{
|
||||||
|
sum[i]=0;
|
||||||
|
for(int j=0; j<len; j++)
|
||||||
|
{
|
||||||
|
if(b[k][s[i][j]-'a']==1)
|
||||||
|
{
|
||||||
|
sum[i]++;
|
||||||
|
t[k]+=s[i][j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("%d-%d(%d)=",ans,qpow(sum[i],l),sum[i]);
|
||||||
|
ans-=qpow(sum[i],l);
|
||||||
|
ans=(ans+mod)%mod;
|
||||||
|
printf("%d\n",ans);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
printf("%lld",ans);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,73 @@
|
||||||
|
#include<cstdio>
|
||||||
|
#include<cstring>
|
||||||
|
using namespace std;
|
||||||
|
const int mod=998244353,N=21;
|
||||||
|
char s[N][30];
|
||||||
|
int mask[N];
|
||||||
|
long long ans=0;
|
||||||
|
long long qpow(long long n,int l )
|
||||||
|
{
|
||||||
|
long long res=1;
|
||||||
|
while(l>0)
|
||||||
|
{
|
||||||
|
if(l&1)
|
||||||
|
{
|
||||||
|
res=res*n%mod;
|
||||||
|
}
|
||||||
|
l>>=1;
|
||||||
|
n=n*n%mod;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
int Count(int x)
|
||||||
|
{
|
||||||
|
int cnt=0;//cnt=0!
|
||||||
|
while(x>0)
|
||||||
|
{
|
||||||
|
if(x&1)
|
||||||
|
{
|
||||||
|
cnt++;
|
||||||
|
}
|
||||||
|
x>>=1;
|
||||||
|
}
|
||||||
|
return cnt;
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int n,l;
|
||||||
|
scanf("%d%d",&n,&l);
|
||||||
|
for(int i=0; i<n; i++)//0~n-1 -> 1~n
|
||||||
|
{
|
||||||
|
scanf("%s",s[i]);
|
||||||
|
int len=strlen(s[i]);
|
||||||
|
for(int j=0; j<len; j++)
|
||||||
|
{
|
||||||
|
mask[i]|=(1<<(s[i][j]-'a'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int i=1;i<(1<<n);i++)//选了哪几个
|
||||||
|
{
|
||||||
|
//ch(内容)共有的部分 ,cnt选了几个(集合)
|
||||||
|
int ch=(1<<26)-1,cnt=0;//1<<26 ->1<<j
|
||||||
|
for(int j=0;j<n;j++)
|
||||||
|
{
|
||||||
|
if(i&(1<<j))
|
||||||
|
{
|
||||||
|
cnt++;
|
||||||
|
ch&=mask[j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//偶数个共有-,奇数个+
|
||||||
|
if(cnt&1)
|
||||||
|
{
|
||||||
|
ans=(ans+qpow(Count(ch),l))%mod;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// ans = (ans + (mod - qpow(Count(ch), l)) % mod) % mod;
|
||||||
|
ans=(ans+mod-qpow(Count(ch),l))%mod;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("%lld",ans);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
/*
|
||||||
|
统计方案的时候,我们只考虑字符串的内容。不同来源生成的同样的字符串只算一种方案。所以重点思考字符的来源。
|
||||||
|
以n=3n=3为例,可以打印出的长度为L的字符串总数=(使用第1行的字符集打印出的字符串总数+使用第2行的字符集打印出的字符串总数+使用第3行的字符集打印出的字符串总数)-(使用第1行或第2行的字符集打印出的字符串总数+使用第2行或第3行的字符集打印出的字符串总数+使用第1行或第3行的字符集打印出的字符串总数)+(使用第1行或第2行或第3行的字符集打印出的字符串总数)=(使用第1行的字符集打印出的字符串总数+使用第2行的字符集打印出的字符串总数+使用第3行的字符集打印出的字符串总数)?(使用第1行或第2行的字符集打印出的字符串总数+使用第2行或第3行的字符集打印出的字符串总数+使用第1行或第3行的字符集打印出的字符串总数)+(使用第1行或第2行或第3行的字符集打印出的字符串总数)。
|
||||||
|
由于nn不超过1818,可以用00到2^{18}-12
|
||||||
|
18
|
||||||
|
?1表示每一行取或不取的可能性。从00到2^{18}-12
|
||||||
|
18
|
||||||
|
?1枚举i,如果ii包含奇数个11,说明该组合在容斥原理中要“加上”;如果ii包含偶数个11,说明该组合在容斥原理中要“减去”。
|
||||||
|
设i包含kk个11,我们还要快速求出这kk个字符集的交集。因为字符集最多2626个字母,而int有3232位,因此用3232位整数作为位示图,其中低2626位对应2626个字母出现或不出现即可。*/
|
||||||
|
#include <bits/stdc++.h>
|
||||||
|
using namespace std;
|
||||||
|
typedef long long ll;
|
||||||
|
typedef pair<int, int> pii;
|
||||||
|
const int maxn = 18;
|
||||||
|
const int mod = 998244353;
|
||||||
|
int n, L, mask[18];
|
||||||
|
char s[18][27];
|
||||||
|
ll ans;
|
||||||
|
ll qpow(ll a, ll b)
|
||||||
|
{
|
||||||
|
ll re = 1;
|
||||||
|
while (b != 0)
|
||||||
|
{
|
||||||
|
if ((b & 1) == 1)
|
||||||
|
re = re * a % mod;
|
||||||
|
a = a * a % mod;
|
||||||
|
b >>= 1;
|
||||||
|
}
|
||||||
|
return re;
|
||||||
|
}
|
||||||
|
int Count(int x)
|
||||||
|
{
|
||||||
|
int cnt = 0;
|
||||||
|
while (x != 0)
|
||||||
|
{
|
||||||
|
if ((x & 1) == 1)
|
||||||
|
cnt++;
|
||||||
|
x >>= 1;
|
||||||
|
}
|
||||||
|
return cnt;
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
scanf("%d%d", &n, &L);
|
||||||
|
for (int i = 0; i < n; i++)
|
||||||
|
{
|
||||||
|
scanf("%s", s[i]);
|
||||||
|
for (int j = 0; s[i][j] != '\0'; j++)
|
||||||
|
mask[i] |= (1 << (s[i][j] - 'a'));
|
||||||
|
}
|
||||||
|
for (int i = 1; i < (1 << n); i++)
|
||||||
|
{
|
||||||
|
int ch = (1 << 26) - 1, cnt = 0;
|
||||||
|
for (int j = 0; j < n; j++)
|
||||||
|
if (((1 << j)&i) != 0)
|
||||||
|
cnt++, ch &= mask[j];
|
||||||
|
if ((cnt & 1) == 1)
|
||||||
|
ans = (ans + qpow(Count(ch), L)) % mod;
|
||||||
|
else
|
||||||
|
ans = (ans + (mod - qpow(Count(ch), L)) % mod) % mod;
|
||||||
|
}
|
||||||
|
printf("%lld\n", ans);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
## z:\Chao\src\Template\test\in.txt
|
||||||
|
2020/03/14 ÖÜÁù 11:41:28.68
|
||||||
|
Hello Easy C++ project!
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
Process exited after 200 ms with return value 0
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
#include<cstdio>
|
||||||
|
using namespace std;
|
||||||
|
const int N=100005;
|
||||||
|
int n;
|
||||||
|
bool cover[N];
|
||||||
|
struct edge
|
||||||
|
{
|
||||||
|
double x1,x2,y1,y2;
|
||||||
|
} e[N];
|
||||||
|
void ce()
|
||||||
|
{
|
||||||
|
for(int i=1; i<=n; i++)
|
||||||
|
{
|
||||||
|
printf("%lf %lf %lf %lf\n",e[i].x1,e[i].y1,e[i].x2,e[i].y2 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
while(~scanf("%d",&n)&&n)
|
||||||
|
{
|
||||||
|
for(int i=1; i<=n; i++)
|
||||||
|
{
|
||||||
|
scanf("%lf%lf%lf%lf",&e[i].x1,&e[i].y1,&e[i].x2,&e[i].y2 );
|
||||||
|
}
|
||||||
|
ce();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,134 @@
|
||||||
|
#include<cstdio>
|
||||||
|
using namespace std;
|
||||||
|
const int N=100005;
|
||||||
|
const double eps=1e-10;
|
||||||
|
int n;
|
||||||
|
bool cover[N];
|
||||||
|
struct Point
|
||||||
|
{
|
||||||
|
double x,y;
|
||||||
|
};
|
||||||
|
struct edge
|
||||||
|
{
|
||||||
|
Point a,b;
|
||||||
|
} e[N];
|
||||||
|
//inline void ce()
|
||||||
|
//{
|
||||||
|
// for(int i=1; i<=n; i++)
|
||||||
|
// {
|
||||||
|
// printf("%.0lf %.0lf %.0lf %.0lf\n",e[i].a.x,e[i].a.y,e[i].b.x,e[i].b.y);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
inline int sign(double u)
|
||||||
|
{
|
||||||
|
if(u>=-eps&&u<=eps)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if(u>0)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else return -1;
|
||||||
|
}
|
||||||
|
inline double cross(Point a,Point b)
|
||||||
|
{
|
||||||
|
return a.x*b.y-b.x*a.y;
|
||||||
|
}
|
||||||
|
inline Point des(Point a,Point b)
|
||||||
|
{
|
||||||
|
a.x-=b.x;
|
||||||
|
a.y-=b.y;
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
bool max(double a,double b)
|
||||||
|
{
|
||||||
|
return a>b? a:b;
|
||||||
|
}
|
||||||
|
bool min(double a,double b)
|
||||||
|
{
|
||||||
|
return a<b? a:b;
|
||||||
|
}
|
||||||
|
//bool cmp()
|
||||||
|
inline edge maxe(edge a)
|
||||||
|
{
|
||||||
|
edge b;
|
||||||
|
b.a.x=max(a.a.x,a.b.x);
|
||||||
|
b.a.y=max(a.a.y,a.b.y);
|
||||||
|
b.b.x=min(a.a.x,a.b.x);
|
||||||
|
b.b.y=min(a.a.y,a.b.y);//b->a
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
inline bool cejiao(edge a,edge b)
|
||||||
|
{
|
||||||
|
Point yi=des(a.a,a.b);
|
||||||
|
Point er=des(b.a,a.b);
|
||||||
|
Point san=des(b.b,a.b);
|
||||||
|
int sh=sign(cross(yi,er)),ni=sign(cross(yi,san));
|
||||||
|
// printf("%d %d\n",sh,ni);
|
||||||
|
if(sh*ni<=0)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if(sh==0||ni==0)
|
||||||
|
{
|
||||||
|
edge ma=maxe(a),mb=maxe(b);
|
||||||
|
// printf("A:%.0lf %.0lf/%.0lf %.0lf",ma.a.x,ma.a.y,ma.b.x,ma.b.y);
|
||||||
|
// printf("B:%.0lf %.0lf/%.0lf %.0lf",mb.a.x,mb.a.y,mb.b.x,mb.b.y);
|
||||||
|
// printf("%.0lf %.0lf %.0lf %.0lf\n",e[i].a.x,e[i].a.y,e[i].b.x,e[i].b.y);
|
||||||
|
if(ma.a.x>=mb.b.x&&ma.a.y>=mb.b.y)
|
||||||
|
{
|
||||||
|
if(mb.a.x>=ma.b.x&&mb.a.y>=ma.b.y)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// freopen("ain.txt","r",stdin);
|
||||||
|
// freopen("aout.txt","w",stdout);
|
||||||
|
while(~scanf("%d",&n))
|
||||||
|
{
|
||||||
|
if(n==0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
for(int i=1; i<=n; i++)
|
||||||
|
{
|
||||||
|
scanf("%lf%lf%lf%lf",&e[i].a.x,&e[i].a.y,&e[i].b.x,&e[i].b.y );
|
||||||
|
for(int j=1; j<i; j++)
|
||||||
|
{
|
||||||
|
// printf("%d->%d(%d,%d)\n",i,j,cejiao(e[i],e[j]),cejiao(e[j],e[i]));
|
||||||
|
if(!cover[j]&&cejiao(e[i],e[j])&&cejiao(e[j],e[i]))
|
||||||
|
{
|
||||||
|
cover[j]=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("Top sticks: ");
|
||||||
|
int i;
|
||||||
|
for(i=1; i<=n; i++)
|
||||||
|
{
|
||||||
|
if(!cover[i])
|
||||||
|
{
|
||||||
|
printf("%d",i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else cover[i]=0;
|
||||||
|
}
|
||||||
|
for(i=i+1; i<=n; i++)
|
||||||
|
{
|
||||||
|
if(!cover[i])
|
||||||
|
{
|
||||||
|
printf(", %d",i);
|
||||||
|
}
|
||||||
|
else cover[i]=0;
|
||||||
|
}
|
||||||
|
printf(".\n");
|
||||||
|
// ce();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,147 @@
|
||||||
|
//finally ac 要把被覆盖的删掉
|
||||||
|
#include<cstdio>
|
||||||
|
#include<list>
|
||||||
|
using namespace std;
|
||||||
|
const int N=100005;
|
||||||
|
const double eps=1e-10;
|
||||||
|
int n;
|
||||||
|
bool cover[N];
|
||||||
|
struct Point
|
||||||
|
{
|
||||||
|
double x,y;
|
||||||
|
};
|
||||||
|
struct edge
|
||||||
|
{
|
||||||
|
Point a,b;
|
||||||
|
int cnt;
|
||||||
|
} ;
|
||||||
|
//inline void ce()
|
||||||
|
//{
|
||||||
|
// for(int i=1; i<=n; i++)
|
||||||
|
// {
|
||||||
|
// printf("%.0lf %.0lf %.0lf %.0lf\n",e[i].a.x,e[i].a.y,e[i].b.x,e[i].b.y);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
inline int sign(double u)
|
||||||
|
{
|
||||||
|
if(u>=-eps&&u<=eps)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if(u>0)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else return -1;
|
||||||
|
}
|
||||||
|
inline double cross(Point a,Point b)
|
||||||
|
{
|
||||||
|
return a.x*b.y-b.x*a.y;
|
||||||
|
}
|
||||||
|
inline Point des(Point a,Point b)
|
||||||
|
{
|
||||||
|
a.x-=b.x;
|
||||||
|
a.y-=b.y;
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
double max(double a,double b)//double ->bool
|
||||||
|
{
|
||||||
|
return a>b? a:b;
|
||||||
|
}
|
||||||
|
double min(double a,double b)
|
||||||
|
{
|
||||||
|
return a<b? a:b;
|
||||||
|
}
|
||||||
|
//bool cmp()
|
||||||
|
inline edge maxe(edge a)
|
||||||
|
{
|
||||||
|
edge b;
|
||||||
|
b.a.x=max(a.a.x,a.b.x);
|
||||||
|
b.a.y=max(a.a.y,a.b.y);
|
||||||
|
b.b.x=min(a.a.x,a.b.x);
|
||||||
|
b.b.y=min(a.a.y,a.b.y);//b->a
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
inline bool cejiao(edge a,edge b)
|
||||||
|
{
|
||||||
|
|
||||||
|
edge ma=maxe(a),mb=maxe(b);
|
||||||
|
// printf("a:%.0lf %.0lf/%.0lf %.0lf \n",a.a.x,a.a.y,a.b.x,a.b.y);
|
||||||
|
// printf("b:%.0lf %.0lf/%.0lf %.0lf \n",b.a.x,b.a.y,b.b.x,b.b.y);
|
||||||
|
// printf("A:%.0lf %.0lf/%.0lf %.0lf \n",ma.a.x,ma.a.y,ma.b.x,ma.b.y);
|
||||||
|
// printf("B:%.0lf %.0lf/%.0lf %.0lf \n",mb.a.x,mb.a.y,mb.b.x,mb.b.y);
|
||||||
|
if(ma.a.x>=mb.b.x&&ma.a.y>=mb.b.y)
|
||||||
|
{
|
||||||
|
if(mb.a.x>=ma.b.x&&mb.a.y>=ma.b.y)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else return 0;
|
||||||
|
}
|
||||||
|
else return 0;
|
||||||
|
Point yi=des(a.a,a.b);
|
||||||
|
Point er=des(b.a,a.b);
|
||||||
|
Point san=des(b.b,a.b);
|
||||||
|
int sh=sign(cross(yi,er)),ni=sign(cross(yi,san));
|
||||||
|
// printf("%d %d\n",sh,ni);
|
||||||
|
if(sh*ni<=0)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// freopen("ain.txt","r",stdin);//注释掉啊
|
||||||
|
// freopen("aout.txt","w",stdout);
|
||||||
|
list<edge>s;
|
||||||
|
edge e;
|
||||||
|
int len;
|
||||||
|
list<edge>::iterator p;
|
||||||
|
while(~scanf("%d",&n))
|
||||||
|
{
|
||||||
|
if(n==0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
scanf("%lf%lf%lf%lf",&e.a.x,&e.a.y,&e.b.x,&e.b.y );
|
||||||
|
e.cnt=1;
|
||||||
|
s.push_back(e);
|
||||||
|
for(int i=2; i<=n; i++)
|
||||||
|
{
|
||||||
|
scanf("%lf%lf%lf%lf",&e.a.x,&e.a.y,&e.b.x,&e.b.y );
|
||||||
|
e.cnt=i;
|
||||||
|
s.push_back(e);
|
||||||
|
len=s.size();
|
||||||
|
p=s.begin();
|
||||||
|
for(int j=1; j<len; j++)
|
||||||
|
{
|
||||||
|
// printf("%d->%d(%d,%d)\n",i,j,cejiao((*p),e),cejiao(e,(*p)));
|
||||||
|
if(cejiao((*p),e)&&cejiao(e,(*p)))
|
||||||
|
{
|
||||||
|
p=s.erase(p);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
p=s.begin();
|
||||||
|
len=s.size();
|
||||||
|
printf("Top sticks: ");
|
||||||
|
int i;
|
||||||
|
printf("%d",(*p).cnt);
|
||||||
|
p++;
|
||||||
|
for(i=1; i<len; i++)
|
||||||
|
{
|
||||||
|
printf(", %d",(*p).cnt);//,i
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
printf(".\n");
|
||||||
|
s.clear();
|
||||||
|
// ce();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
#include<cstdio>
|
||||||
|
#include<cstring>
|
||||||
|
using namespace std;
|
||||||
|
const int N=1005;
|
||||||
|
char s[N];
|
||||||
|
int a[N];
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
while(~scanf("%s%d",&s,&n))
|
||||||
|
{
|
||||||
|
int len=strlen(s);
|
||||||
|
for(int i=0; i<len; i++)
|
||||||
|
{
|
||||||
|
a[len-i]=s[i]-'0';
|
||||||
|
}
|
||||||
|
while(n--)
|
||||||
|
{
|
||||||
|
for(int i=len; i>0; i--)
|
||||||
|
{
|
||||||
|
while(a[i]==-1)
|
||||||
|
{
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
int j=i-1;
|
||||||
|
while(a[j]==-1)
|
||||||
|
{
|
||||||
|
j--;
|
||||||
|
}
|
||||||
|
if(a[i]>a[j])
|
||||||
|
{
|
||||||
|
a[i]=-1;
|
||||||
|
// printf("%d:%d,%d\n",n,i,j);
|
||||||
|
break;//
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// for(int i=len; i>0; i--)
|
||||||
|
// {
|
||||||
|
// printf("%d",a[i]);
|
||||||
|
// }
|
||||||
|
// printf("\n");
|
||||||
|
while(a[len]<=0)//<= -> ,
|
||||||
|
{
|
||||||
|
len--;
|
||||||
|
}
|
||||||
|
bool tag=0;
|
||||||
|
for(int i=len; i>0; i--)
|
||||||
|
{
|
||||||
|
if(a[i]!=-1)
|
||||||
|
{
|
||||||
|
tag=1;
|
||||||
|
printf("%d",a[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(tag==0)
|
||||||
|
{
|
||||||
|
printf("0");
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
2
|
||||||
|
1 0 1 1
|
||||||
|
1 0 1 1
|
||||||
|
2
|
||||||
|
1 0 1 1
|
||||||
|
1 1 1 2
|
||||||
|
2
|
||||||
|
1 2 1 3
|
||||||
|
1 4 1 5
|
||||||
|
3
|
||||||
|
2 1 1 1
|
||||||
|
2 1 3 1
|
||||||
|
4 1 5 1
|
||||||
|
2
|
||||||
|
1 1 2 2
|
||||||
|
2 2 3 3
|
||||||
|
2
|
||||||
|
2 2 3 3
|
||||||
|
2 2 3 3
|
||||||
|
2
|
||||||
|
2 2 3 3
|
||||||
|
4 4 5 5
|
||||||
|
2
|
||||||
|
1 1 4 4
|
||||||
|
2 2 2 6
|
||||||
|
5
|
||||||
|
1 1 2 2
|
||||||
|
1 1 2 2
|
||||||
|
1 2 1 3
|
||||||
|
2 2 3 3
|
||||||
|
4 4 6 6
|
||||||
|
5
|
||||||
|
1 1 4 2
|
||||||
|
2 3 3 1
|
||||||
|
1 -2.0 8 4
|
||||||
|
1 4 8 2
|
||||||
|
3 3 6 -2.0
|
||||||
|
3
|
||||||
|
0 0 1 1
|
||||||
|
1 0 2 1
|
||||||
|
2 0 3 1
|
||||||
|
0
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
Top sticks: 2.
|
||||||
|
Top sticks: 2.
|
||||||
|
Top sticks: 1, 2.
|
||||||
|
Top sticks: 2, 3.
|
||||||
|
Top sticks: 2.
|
||||||
|
Top sticks: 2.
|
||||||
|
Top sticks: 1, 2.
|
||||||
|
Top sticks: 2.
|
||||||
|
Top sticks: 3, 4, 5.
|
||||||
|
Top sticks: 2, 4, 5.
|
||||||
|
Top sticks: 1, 2, 3.
|
|
@ -0,0 +1,8 @@
|
||||||
|
1 1
|
||||||
|
11111211 3
|
||||||
|
123564899 5
|
||||||
|
6384158 6
|
||||||
|
0 1
|
||||||
|
0 0
|
||||||
|
45965 0
|
||||||
|
|
Loading…
Reference in New Issue