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 ...
随机推荐
- 全文索引(A-1)-用户数据收集(用户研究)
推荐系统根据用户的信息和历史行为记录,构造出用户的个性化模型,再依据特定的推荐算法,向用户推荐其可能感兴趣的项目. 如何获取用户的偏好? 建议用户对一些指定项目进行评分,如对:小说.传记.技术书.图画 ...
- Chrome & CORS & Fetch API & Chrome 多开,应用分身
Chrome & CORS & Fetch API Chrome 浏览器的跨域设置 https://www.cnblogs.com/cshi/p/5660039.html https: ...
- noip模拟赛 星空
分析:非常神的一道题.迭代加深搜索+rand可以骗得20分.状压n的话只有24分,必须对问题进行一个转化. 在爆搜的过程中,可以利用差分来快速地对一个区间进行修改,把一般的差分改成异或型的差分: b[ ...
- Jquery EasyUI动态生成Tab
function addTab(title, url) { if ($('#tt').tabs('exists', title)) { $('#tt').tabs('select', title); ...
- Tyvj 1221 微子危机——战略
背景 №.3Summer联盟战前兵力战略转移. 描述 Summer的兵力分布在各个星球上,现在需要把他们全部转移到某个星球上.Summer一共拥有N个星球(1-N),你要把这N个星球上的兵力转到第M个 ...
- Linux下汇编语言学习笔记31 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- Google Protocol Buffer 的使用(一)
一.什么是Google Protocol Buffer下面是官网给的解释:Protocol buffers are a language-neutral, platform-neutral exten ...
- Ubuntu 16.04安装qt5-default报错:qt5-default : 依赖: qtbase5-dev E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。(此类问题终极解决方法)
切记:没事不要进行sudo apt-get upgrade 错误: qt5-default : 依赖: qtbase5-dev E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间 ...
- how to read openstack code : paste deploy
本篇分为以下几个部分 paste 是什么 怎样使用paste paste of neutron paste 是什么 WSGI 是python 中application 和 web server互通的标 ...
- 怎样删除Tomcat下已经部署的项目
lz说的是把web项目部署到tomcat之中,要把它删除..很简单,找到webapps文件(tomcat的根目录)下把它删除即可.. 2.Tomcat 6.0\webapps\项目名 只要在把这个目录 ...