/*
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)的更多相关文章

  1. 10.11NOIP模拟题(3)

    /* 可以看出,对于一段区间[L,R]如果统计了答案 若a[L]<a[R],那么当右端点往左移时答案不会更优,a[R]>a[L]同理 所以两个指针分别从头尾往中间扫那边小移哪边即可. */ ...

  2. 9.11NOIP模拟题

    NOIP模拟赛 by thmyl   题目名称 superman market Lemon_Soda 可执行文件名 superman market Lemon_Soda 输入文件 superman.i ...

  3. 10.13NOIP模拟题

    /* 容斥原理 考虑到a[i]要么不会太大,要么就对答案贡献很小 dfs即可 */ #include<bits/stdc++.h> #define ll long long #define ...

  4. 10.23NOIP模拟题

    叉叉题目描述现在有一个字符串,每个字母出现的次数均为偶数.接下来我们把第一次出现的字母 a 和第二次出现的 a 连一条线,第三次出现的和四次出现的字母 a 连一条线,第五次出现的和六次出现的字母 a ...

  5. 10.9NOIP模拟题

    /* big模拟 细节不少 remove表示这个玩意儿在这一秒有没有移动 注意在一秒内所有小葱一起移动,所以如果一个一个处理 别忘了“错位”这种情况 */ #include<iostream&g ...

  6. 10.12NOIP模拟题(2)

    /* 有谁知道这道题结论是怎么来的? 晚上问问学数学的孩子23333 */ #include<iostream> #include<cstdio> #include<cs ...

  7. 10.12NOIP模拟题(1)

    #include<iostream> #include<cstdio> #include<cstring> #include<queue> #defin ...

  8. poj 1008:Maya Calendar(模拟题,玛雅日历转换)

    Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 64795   Accepted: 19978 D ...

  9. poj 1888 Crossword Answers 模拟题

    Crossword Answers Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 869   Accepted: 405 D ...

随机推荐

  1. C51 继电器 个人笔记

    一句话 小电流控制大电流的开关. 电路图 给J2端口一个低电平,三极管导通,线圈吸合 一般用P1^4口连接 #include <reg51.h> #define u16 unsigned ...

  2. requests模块发送POST请求

    在HTTP协议中,post提交的数据必须放在消息主体中,但是协议中并没有规定必须使用什么编码方式,从而导致了 提交方式 的不同.服务端根据请求头中的 Content-Type 字段来获知请求中的消息主 ...

  3. MSDN 同步部分 个人笔记

    (在知乎看到轮子哥说,掌握了MSDN上的并发部分 和 线程与进程部分就可以掌握所有语言的多线程编程,我在网上翻了一下并没有中文版,所以决定自己翻译一下...) 目录: 线程之间协同运行的方式有许多种, ...

  4. [bzoj3489]A simple rmq problem_KD-Tree

    A simple rmq problem 题目大意:给定一个长度为$n$的序列,给出$m$个询问:在$[l,r]$之间找到一个在这个区间里只出现过一次的最大的数. 注释:$1\le n\le 10^5 ...

  5. 洛谷 P1023 税收与补贴问题

    P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最 ...

  6. Ubuntu 16.04修改显示字体大小(包括GNOME/Unity)

    在Ubuntu中字体都基本偏大,且和分辨率无关. Unity: 安装Unity Tweak Tool sudo apt-get install unity-tweak-tool GNOME: 打开优化 ...

  7. Python学习系列之装饰器

    装饰器的作用 装饰器用于装饰某个函数.方法或者类,它可以让这个函数执行之前或者执行之后做一些操作 手工实现一个装饰器 def outer(some_func): #装饰器 $1 def inner() ...

  8. ISkyShop B2B2C 商城系统V1.0正式版隆重公布

    ISkyShop核心开发团队结合7年电商开发经验,历经1年多时间的设计研发,于2014年6月12日隆重推出ISkyShop B2B2C 商城系统V1.0,B2B2C商城系统是ISkyShop独立自主研 ...

  9. Python循环定时服务功能(相似contrab)

    Python实现的循环定时服务功能.类似于Linux下的contrab功能.主要通过定时器实现. 注:Python中的threading.timer是基于线程实现的.每次定时事件产生时.回调完响应函数 ...

  10. 再探gdb经常使用命令

     前面已经有了一篇对gdb经常使用命令的总结.见 http://blog.csdn.net/u011848617/article/details/12838875 这里对眼下学过的gdb命令进行了 ...