10.11NOIP模拟题(2)


/*
string水过
*/
#include<bits/stdc++.h> #define N 1001 using namespace std;
int n,x,y,m,pre;
string str;
string s[N]; inline int read()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int main()
{
freopen("y.in","r",stdin);
freopen("y.out","w",stdout);
n=read();
for(register int i=;i<=n;i++) cin>>s[i];
str="I_love_";
m=read();
for(register int i=;i<=m;i++)
{
x=read();y=read();
s[x]=str;s[x]+=s[y];pre=x;
}
cout<<s[];
return ;
}


/*
ai<=ai+1时
枚举每一个区间长度二分右端点
*/
#include<bits/stdc++.h> #define N 500001
#define ll long long using namespace std;
ll n,ans,K,m;
ll a[N],sum[N]; inline ll read()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} void work1()
{
while(m--)
{
K=read();ans=;
for(int j=;j<=n;j++)
{
for(int k=j;k<=n;k++)
{
ll res1=sum[k]-sum[j-];
ll res2=k-j+;
if(res1<=K*res2) ans++;
}
}
cout<<ans<<endl;
}
} void work2()
{
ll l,r,mid,tmp,lim;
while(m--)
{
K=read();ans=;lim=;tmp=;
for(int L=;L<=n;L++)
{
l=;r=n+;lim=L*K;
while(l<=r)
{
mid=(l+r)>>;
if(sum[mid]-sum[mid-L]<=lim && sum[mid])
tmp=mid,l=mid+;
else r=mid-;
}
if(tmp-L+>)
ans+=tmp-L+;
}
cout<<ans<<endl;
}
} int main()
{
freopen("h.in","r",stdin);
freopen("h.out","w",stdout);
n=read();
for(int i=;i<=n;i++) a[i]=read();
for(int i=;i<=n;i++) sum[i]=sum[i-]+a[i];
m=read();
if(n<=) work1();
else work2();
return ;
}
60暴力
/*
将数列减k转化为求区间和<=0的区间个数
前缀和,求多少l,r满足s[r]-s[l-1]<=0
即s[r]<=s[L](L=l-1)
树状数组求逆序对
*/
#include<bits\stdc++.h> #define N 50001
#define ll long long using namespace std;
ll n,m,k;
ll ori[N],a[N],b[N],tmp[N]; inline int discrete()
{
for(int i=;i<=n;i++) tmp[i]=a[i];
sort(tmp+,tmp+n+);
ll *end=unique(tmp+,tmp+n+);
for(int i=;i<=n;i++) a[i]=lower_bound(tmp+,end,a[i])-tmp;
return end-(tmp+);
} struct BinaryIndexedTree
{
int n; ll a[N]; static int lowbit(int x)
{
return x & -x;
} void clear()
{
for(int i=;i<=n;i++) a[i]=;
} ll query(int pos)
{
ll ans=;
for(int i=pos;i>;i-=lowbit(i)) ans+=a[i];
return ans;
} void update(int pos,int del)
{
for(int i=pos;i<=n;i+=lowbit(i)) a[i]+=del;
} }bit; inline ll read()
{
ll x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} inline ll solve(int k)
{
ll ans=;
for(int i=;i<=n;i++)
{
a[i]=ori[i]-k+a[i-];
if(a[i]<=) ans++;
}
bit.n=discrete();
bit.clear(); for(int i=n;i>=;i--)
{
ans+=bit.query(a[i]);
bit.update(a[i],);
}
return ans;
} int main()
{
freopen("h.in","r",stdin);
freopen("h.out","w",stdout);
n=read();
for(int i=;i<=n;i++) ori[i]=read();
m=read();
while(m--)
{
k=read();
printf("%lld\n",solve(k));
}
}


#include<iostream>
#include<cstdio>
#include<cstring> #define N 3001 using namespace std;
int n,m,T,flag;
char ch;
bool e1[N][N],e2[N][N]; void floyed()
{
flag=;
for(int k=;k<=n;k++) for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
if(i!=j && j!=k)
{
if(e1[i][k] && e1[k][j] && !e1[i][j]) flag=;
if(flag) break;
if(e2[i][k] && e2[k][j] && !e2[i][j]) flag=;
if(flag) break;
}
if(flag) break;
}
} int main()
{
freopen("p.in","r",stdin);
freopen("p.out","w",stdout);
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
memset(e1,,sizeof e1);
memset(e2,,sizeof e2);
for(int i=;i<=n;i++) for(int j=;j<=n;j++)
{
cin>>ch;
if(ch=='H') e1[i][j]=;
if(ch=='W') e2[i][j]=;
}
floyed();
if(flag) printf("N0\n");
else printf("YE5\n");
}
return ;
}
30暴力
/*
考虑u->v和v->w都被一个人占领
那么答案为N0的情况为
1.w->u 另一人占领
2.u->w 另一人占领
3.w->u 同一人占领
1,3有环
2 将一个人反向建图有环
所以两次拓扑排序判断是否有换即可
*/
#include<bits\stdc++.h> #define N 3001 using namespace std;
int n,m,k,ans,flag;
char s[N][N];
int e[N][N],in[N]; void T_sort()
{
memset(in,,sizeof in);
for(int i=;i<=n;i++) for(int j=;j<=n;j++)
if(e[i][j]) in[j]++;
for(int i=;i<=n;i++)
{
int u=;
for(int j=;j<=n;j++)
{
if(in[j]==)
{
u=j;in[j]=-;break;
}
}
if(!u){flag=;return;}
for(int j=;j<=n;j++) if(e[u][j]) in[j]--;
}
} int main()
{
freopen("p.in","r",stdin);
freopen("p.out","w",stdout);
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
flag=;
for(int i=;i<=n;i++) scanf("%s",s[i]+);
for(int k=;k<=;k++)
{
memset(e,,sizeof e);
for(int i=;i<=n;i++) for(int j=;j<=n;j++)
{
if(s[i][j]=='H') e[i][j]=;
if(s[i][j]=='W')
{
if(!k) e[i][j]=;
else e[j][i]=;
}
}
T_sort();
}
if(!flag) printf("YE5\n");
else printf("N0\n");
}
}
10.11NOIP模拟题(2)的更多相关文章
- 10.11NOIP模拟题(3)
/* 可以看出,对于一段区间[L,R]如果统计了答案 若a[L]<a[R],那么当右端点往左移时答案不会更优,a[R]>a[L]同理 所以两个指针分别从头尾往中间扫那边小移哪边即可. */ ...
- 9.11NOIP模拟题
NOIP模拟赛 by thmyl 题目名称 superman market Lemon_Soda 可执行文件名 superman market Lemon_Soda 输入文件 superman.i ...
- 10.13NOIP模拟题
/* 容斥原理 考虑到a[i]要么不会太大,要么就对答案贡献很小 dfs即可 */ #include<bits/stdc++.h> #define ll long long #define ...
- 10.23NOIP模拟题
叉叉题目描述现在有一个字符串,每个字母出现的次数均为偶数.接下来我们把第一次出现的字母 a 和第二次出现的 a 连一条线,第三次出现的和四次出现的字母 a 连一条线,第五次出现的和六次出现的字母 a ...
- 10.9NOIP模拟题
/* big模拟 细节不少 remove表示这个玩意儿在这一秒有没有移动 注意在一秒内所有小葱一起移动,所以如果一个一个处理 别忘了“错位”这种情况 */ #include<iostream&g ...
- 10.12NOIP模拟题(2)
/* 有谁知道这道题结论是怎么来的? 晚上问问学数学的孩子23333 */ #include<iostream> #include<cstdio> #include<cs ...
- 10.12NOIP模拟题(1)
#include<iostream> #include<cstdio> #include<cstring> #include<queue> #defin ...
- poj 1008:Maya Calendar(模拟题,玛雅日历转换)
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64795 Accepted: 19978 D ...
- poj 1888 Crossword Answers 模拟题
Crossword Answers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 869 Accepted: 405 D ...
随机推荐
- 利用express启一个server服务
安装express $ npm install express --save 在node.js中,我们最常用的框架就是express Express 是一个基于 Node.js 平台的极简.灵活的 w ...
- Spring Boot Jpa 表名小写转大写
今天在使用SpringBoot整合Hibernate后创建表,表名为小写,而在linux下,mysql的表名是区分大小写的,因此在我的数据表中,就出现了两个一样的表 act_id_user 和 AC ...
- 破损的键盘(codevs 4650)
题目描述 Description 有一天,你需要打一份文件,但是你的键盘坏了,上面的"home"键和"end"键会时不时地按下,而你却毫不知情,甚至你都懒得打开 ...
- [NOIP2005] 提高组 洛谷P1053 篝火晚会
题目描述 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”.在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有n个同学,编号从1到n.一开始,同学们按照 ...
- 易碎的鸟蛋 概率DP
1007: 易碎的鸟蛋 时间限制: 1 Sec 内存限制: 128 MB提交: 396 解决: 80[提交][状态][讨论版] 题目描述 你们知道吗?西电的跳楼塔上面有一个鸟巢.某SXBK的教授对 ...
- Ubuntu 16.04安装录屏软件SimpleScreenRecorder
安装: sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder sudo apt-get update sudo apt-get ...
- Servlet的文件上传
以下内容引用自http://wiki.jikexueyuan.com/project/servlet/file-uploading.html: Servlet可以与HTML form标签一起使用允许用 ...
- Servlet的客户端请求
以下内容引用自http://wiki.jikexueyuan.com/project/servlet/client-request.html: 当浏览器请求网页时,它会向Web服务器发送大量信息,这些 ...
- SQL PATINDEX检索
语法格式:PATINDEX ( '%pattern%' , expression ) 返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算. pattern字符串在 ...
- maven项目互相dependcy依赖问题
1.自己编写的maven项目,在编译后,也会在.m2文件夹下生成jar包,可以供第三方引用使用. 2.比如几个项目互相依赖对方的jar包,就要首先选择编译哪个jar包,编译完成后生成jar,再编译依赖 ...