many
This commit is contained in:
parent
62e77a6b8d
commit
2d30154beb
|
@ -1,3 +1,4 @@
|
|||
//not finish
|
||||
#include <iostream>
|
||||
#include<cstdio>
|
||||
#include<algorithm>
|
||||
|
|
|
@ -176,7 +176,16 @@ int main()
|
|||
printf("%s",sub);
|
||||
}
|
||||
}
|
||||
/*
|
||||
123456789012345678901
|
||||
125860
|
||||
|
||||
2564168486416487447411002654
|
||||
5416846
|
||||
|
||||
30024
|
||||
20
|
||||
*/
|
||||
// ce();
|
||||
return 0;
|
||||
}
|
||||
|
|
41
8.20/C.cpp
41
8.20/C.cpp
|
@ -1,3 +1,4 @@
|
|||
//not finish
|
||||
#include<cstdio>
|
||||
#include<vector>
|
||||
using namespace std;
|
||||
|
@ -12,11 +13,13 @@ struct Node
|
|||
int max;
|
||||
int min;
|
||||
int len;
|
||||
int faw;
|
||||
// vector<int> son;
|
||||
} a[N];
|
||||
void add(int u,int v,int w1)
|
||||
{
|
||||
a[v].fa=u;
|
||||
a[v].faw=w1;
|
||||
w[++cnt]=w1;
|
||||
to[cnt]=v;
|
||||
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 );
|
||||
}
|
||||
}
|
||||
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 u,v,w1;
|
||||
|
@ -65,4 +99,11 @@ int main()
|
|||
}
|
||||
dfs(1);
|
||||
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