码迷,mamicode.com
首页 > 其他好文 > 详细

20171001模拟赛

时间:2017-10-02 13:59:12      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:联通   pre   zoj   names   二维树状数组   clu   题目   之间   ems   

T1 poj2029

90分:二维前缀和

100分:二维树状数组维护二维前缀和(这叫什么满分算法啊喂)

反正瞎搞搞30minAC

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int T[10010][10010];
inline int lowbit(int x){return x&(-x);}
int w,h,s,t,x,y;
inline int read()
{
    int x=0,f=1;
    char ch=getchar();
    while(!isdigit(ch)){if(ch==‘-‘)f=-f;ch=getchar();}
    while(isdigit(ch)){x=10*x+ch-‘0‘;ch=getchar();}
    return x*f;
}
inline int sum(int x,int y)
{
	int res=0;
    for(int i=x;i>=1;i-=lowbit(i))
        for(int j=y;j>=1;j-=lowbit(j))res+=T[i][j];
    return res;
}
inline void update(int x,int y)
{
    for(int i=x;i<=h;i+=lowbit(i))
        for(int j=y;j<=w;j+=lowbit(j))T[i][j]++;
}
int main()
{
	freopen("trees.in","r",stdin);
	freopen("trees.out","w",stdout);
    int n;
    while(~scanf("%d",&n) && n)
    {
        memset(T,0,sizeof(T));
        w=read();h=read();
        for(int i=1;i<=n;i++)
        {
            x=read(),y=read();
            update(y,x);
		}
		int ans=-1;
		s=read(),t=read();
		for(int i=t;i<=h;i++)
		    for(int j=s;j<=w;j++)
		    ans=max(ans,sum(i,j)+sum(i-t,j-s)-sum(i-t,j)-sum(i,j-s));
		cout<<ans<<endl;
	}
}

T2poj3250

高一轩同学出这道题的时候竟然把我当成了素材

真鸡儿刺激

把问题转化一下 题目问:“每个人能看到的人的总数”我们把它转换成“每个人能被看到的次数的总数”

于是打个单调递减栈 每插进来一个看栈里有多少元素就行了

强烈鄙视yyc的做法

因为我竟然不会

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int st[80010],top,n,h,ans;
int main()
{
    freopen("height.in","r",stdin);
    freopen("height.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&h);
        while(top>0 && st[top-1]<=h)--top;
        ans+=top;
        st[top++]=h;
    }
    cout<<ans;
}

T3bzoj1924

这题一看

有向图最长链

又一看

mmp邻接矩阵邻接表全**开不下

于是想到Tarjan缩点

于是差不多就解决了

横门和横门之间连无向边 和其他连有向边

竖门同理

周围8格用map存一下联通连边

Tarjan

Dp

完事

70

为什么只有70 因为满分只有70呀

淦 没开O2 我的mapT掉了

D1270

20171001模拟赛

标签:联通   pre   zoj   names   二维树状数组   clu   题目   之间   ems   

原文地址:http://www.cnblogs.com/Kong-Ruo/p/7619996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!