yzy的喜欢 | LOFTER(乐乎) - 让兴趣,更有趣
LOFTER for ipad ---- 让兴趣,更有趣
yzy 的喜欢
  被喜欢
  被喜欢
{list posts as post}
{if post.type==1 || post.type == 5}
{if !!post.title}${post.title|escape}{/if}
{if !!post.digest}${post.digest}{/if}
{if post.type==2}
{if post.type == 3}
{if !!post.image}
{if post.type == 4}
{if !!post.image}
{if !!photo.labels && photo.labels.length>0}
{var wrapwidth = photo.ow < 500?photo.ow:500}
{list photo.labels as labs}
{var lbtxtwidth = Math.floor(wrapwidth*(labs.ort==1?labs.x:(100-labs.x))/100)-62}
{if lbtxtwidth>12}
{if !!labs.icon}
{list photos as photo}
{if photo_index==0}{break}{/if}
品牌${make||'-'}
型号${model||'-'}
焦距${focalLength||'-'}
光圈${apertureValue||'-'}
快门速度${exposureTime||'-'}
ISO${isoSpeedRatings||'-'}
曝光补偿${exposureBiasValue||'-'}
镜头${lens||'-'}
{if data.msgRank == 1}{/if}
{if data.askSetting == 1}{/if}
{if defined('posts')&&posts.length>0}
{list posts as post}
{if post_index < 3}
{if post.type == 1 || post.type == 5}
{if !!post.title}${post.title|escape}{/if}
{if !!post.digest}${post.digest}{/if}
{if post.type == 2}
{if post.type == 3}
{if post.type == 4}
{if post.type == 6}
{if drlist.length>0}
更多相似达人:
{list drlist as dr}{if drlist.length === 3 && dr_index === 0}、{/if}{if drlist.length === 3 && dr_index === 1}、{/if}{if drlist.length === 2 && dr_index === 0}、{/if}{/list}
暂无相似达人,
{if defined('posts')&&posts.length>0}
{list posts as post}
{if post.type == 2}
{if post.type == 3}
{if post.type == 4}
{if post.type == 6}
this.p={ dwrMethod:'queryLikePosts',fpost:'1ec522a4_114f38c7',userId:,blogListLength:29};财富(treasure)
Time Limit:1000ms Memory Limit:128MB
LYK有n个小伙伴。每个小伙伴有一个身高hi。 这个游戏是这样的,LYK生活的环境是以身高为美的环境,因此在这里的每个人都羡慕比自己身高高的人,而每个人都有一个属性ai表示它对身高的羡慕值。 这n个小伙伴站成一列,我们用hi来表示它的身高,用ai来表示它的财富。 每个人向它的两边望去,在左边找到一个最近的比自己高的人,然后将ai朵玫瑰给那个人,在右边也找到一个最近的比自己高的人,再将ai朵玫瑰给那个人。当然如果没有比自己身高高的人就不需要赠送别人玫瑰了。也就是说一个人会给0,1,2个人玫瑰(这取决于两边是否有比自己高的人)。 每个人都会得到若干朵玫瑰(可能是0朵),LYK想知道得了最多的玫瑰的那个人得了多少玫瑰。(然后嫁给他&3&)
输入格式(treasure.in)
第一行一个数n表示有n个人。
接下来n行,每行两个数hi,ai。
输出格式(treasure.out)
一个数表示***。
第一个人会收到5朵玫瑰,第二个没人送他玫瑰,第三个人会收到12朵玫瑰。
对于50%的数据n&=1000,hi&=。
对于另外20%的数据n&=50000,hi&=10。
对于100%的数据1&=n&=50000,1&=hi&=。1&=ai&=10000。
单调队列处理出每个点向两端取第一个比他大的数的下标
#include&cstdio&
#include&algorithm&
using namespace
const int maxn
struct node{
}peo[maxn];
int l[maxn],r[maxn],d[maxn],tmp1[maxn],tmp2[maxn],q[maxn];
void work(int *a,int *b) {
int head=1,tail=1;d[1]=1;
q[1]=a[1];
for(int i=2;i&=n;++i) {
while(head&=tail&&q[tail]&a[i])b[d[tail--]]=i;
q[++tail]=a[i];
d[tail]=i;
while(head&=tail)b[d[head++]]=n+1;
int sum[maxn];
int main() {
scanf("%d",&n);
for(int i=1;i&=n;++i) {
scanf("%d%d",&peo[i].h,&peo[i].a);tmp1[i]=tmp2[n-i+1]=peo[i].h;
work(tmp1,r);
work(tmp2,l);
for(int i=1;i&=n;++i) d[i]=l[i];
for(int i=1;i&=n;++i) l[n-i+1]=n-d[i]+1;
for(int i=1;i&=n;++i) sum[l[i]]+=peo[i].a,sum[r[i]]+=peo[i].a;
int ans=0;
for(int i=1;i&=n;++i) ans=max(ans,sum[i]);
printf("%d\n",ans);
阅读(...) 评论()