/*
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. 前端性能分析-HTTPWatch和dynaTrace

  2. mvc 下 使用kindeditor 配置信息

    先去下载: http://code.google.com/p/kindeditor/downloads/list引用: LitJSON.dll文件<script src="~/kind ...

  3. URAL 1297 求最长回文字符串

    有种简单的方法,数组从左到右扫一遍,每次以当前的点为中心,只要左右相等就往左右走,这算出来的回文字符串是奇数长度的 还有偶数长度的回文字符串就是以当前扫到的点和它左边的点作为中心,然后往左右扫 这是O ...

  4. [POJ3463] Sightseeing(次短路 Heap + Dijkstra)

    传送门 用dijkstra比较好,spfa可能有的重复 dis[x][2]:dis[x][0]表示起点到x的最短路.dis[x][1]表示起点到x的次短路: tot[x][2]:tot[x][0]表示 ...

  5. 【01染色法判断二分匹配+匈牙利算法求最大匹配】HDU The Accomodation of Students

    http://acm.hdu.edu.cn/showproblem.php?pid=2444 [DFS染色] #include<iostream> #include<cstdio&g ...

  6. 解方程(codevs 3732)

    题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...

  7. NOIP2012 文化之旅

    题目描述 Description 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文化的国家).不同的国家可 ...

  8. POJ 2456_Aggressive cows

    题意: 给定N个位置,把C头牛分别放入,求相邻两头牛的最大距离. 分析: 即为求两头牛之间最小距离的最大值.二分搜索答案. 代码: #include<iostream> #include& ...

  9. GNS3模拟的硬件

    Hardware emulated by GNS3 Cisco 1700 Series 1700s have one or more interfaces on the motherboard, 2 ...

  10. Mybatis中insert中返回主键ID的方法

    <insertid=“doSomething"parameterType="map"useGeneratedKeys="true"keyProp ...