T1 最大值(max)

Time Limit:1000ms   Memory Limit:128MB

题目描述

LYK有一本书,上面有很多有趣的OI问题。今天LYK看到了这么一道题目:

这里有一个长度为n的正整数数列ai(下标为1~n)。并且有一个参数k。

你需要找两个正整数x,y,使得x+k<=y,并且y+k-1<=n。并且要求a[x]+a[x+1]+…+a[x+k-1]+a[y]+a[y+1]+…+a[y+k-1]最大。

LYK并不会做,于是它把题扔给了你。

输入格式(max.in)

第一行两个数n,k。

第二行n个数,表示ai。

输出格式(max.out)

两个数表示x,y。若有很多种满足要求的答案,输出x最小的值,若x最小仍然还有很多种满足要求的答案,输出y最小的值。

输入样例

5 2

6 1 1 6 2

输出样例

1 4

对于30%的数据n<=100。

对于60%的数据n<=1000

对于100%的数据1<=n<=100000,1<=k<=n/2,1<=ai<=10^9。

 #include <cstdio>

 #define LL long long

 inline void read(LL &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
} const int N();
LL n,k,r,x,y,a[N],sum[N],ans; int Presist()
{
freopen("max.in","r",stdin);
freopen("max.out","w",stdout);
read(n),read(k); r=n-k+;
for(int i=; i<=n; ++i)
read(a[i]),sum[i]=sum[i-]+a[i];
for(x=; x<=n; ++x)
if(ans<sum[r]-sum[x-]) ans=sum[r]-sum[x-];
for(x=; x<=n; ++x)
if(ans==sum[r]-sum[x-]) { y=x+k; break; }
for(; y<=r; ++y)
if(sum[y]-sum[x-]==ans) break;
printf("%I64d %I64d",x,y);
return ;
} int Aptal=Presist();
int main(int argc,char**){;}

读错题目全挂掉

处理出以每个点为起点,向后延伸k个单位长度的区间和,和每个点的后缀最大值

 #include <cstdio>

 #define LL long long
#define max(a,b) (a>b?a:b) inline void read(LL &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
} const int N();
LL n,k,r,x,y,max,sum[N];
LL pos[N],maxn[N],sumk[N]; int Presist()
{
freopen("max.in","r",stdin);
freopen("max.out","w",stdout);
read(n),read(k); r=n-k+;
for(int i=; i<=n; ++i) read(sum[i]),sum[i]+=sum[i-];
for(int i=; i<=r; ++i)
sumk[i]=sum[i+k-]-sum[i-];
for(int i=r; i; i--)
if(sumk[i]>maxn[i+]) maxn[i]=sumk[i],pos[i]=i;
else maxn[i]=maxn[i+],pos[i]=pos[i+];
for(int i=; i<=r-k; ++i)
if(sumk[i]+maxn[i+k]>max) max=sumk[i]+maxn[i+k],x=i,y=pos[i+k];
else if(sumk[i]+maxn[i+k]==max) y=y<pos[i+k]?y:pos[i+k];
printf("%I64d %I64d",x,y);
return ;
} int Aptal=Presist();
int main(int argc,char**){;}

AC

T2 吃东西(eat)

Time Limit:2000ms   Memory Limit:1024MB

题目描述

一个神秘的村庄里有4家美食店。这四家店分别有A,B,C,D种不同的美食。LYK想在每一家店都吃其中一种美食。每种美食需要吃的时间可能是不一样的。

现在给定第1家店A种不同的美食所需要吃的时间a1,a2,…,aA。

给定第2家店B种不同的美食所需要吃的时间b1,b2,…,bB。

以及c和d。

LYK拥有n个时间,问它有几种吃的方案。

输入格式(eat.in)

第一行5个数分别表示n,A,B,C,D。

第二行A个数分别表示ai。

第三行B个数分别表示bi。

第四行C个数分别表示ci。

第五行D个数分别表示di。

输出格式(eat.out)

一个数表示答案。

输入样例

11 3 1 1 1

4 5 6

3

2

1

输出样例

2

对于30%的数据A,B,C,D<=50

对于另外30%的数据n<=1000。

对于100%的数据1<=n<=100000000,1<=A,B,C,D<=5000,0<=ai,bi,ci,di<=100000000。

 #include <algorithm>
#include <cstdio> inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
}
const int N();
int n,na,nb,nc,nd,sa,sb,sc;
int a[N],b[N],c[N],d[N],ans; int Presist()
{
freopen("eat.in","r",stdin);
freopen("eat.out","w",stdout);
read(n),read(na),read(nb),read(nc),read(nd);
for(int i=; i<=na; ++i) read(a[i]); std::sort(a+,a+na+);
for(int i=; i<=nb; ++i) read(b[i]); std::sort(b+,b+nb+);
for(int i=; i<=nc; ++i) read(c[i]); std::sort(c+,c+nc+);
for(int i=; i<=nd; ++i) read(d[i]); std::sort(d+,d+nd+);
for(int i=; i<=na; ++i)
{
sa=a[i]; if(sa>n) break;
for(int j=; j<=nb; ++j)
{
sb=sa+b[j]; if(sb>n) break;
for(int p=; p<=nc; ++p)
{
sc=sb+c[p]; if(sc>n) break;
for(int q=; q<=nd; ++q)
{
if(sc+d[q]>n) break;
else ans++;
}
}
}
}
printf("%d\n",ans);
return ;
} int Aptal=Presist();
int main(int argc,char**){;}

30分 暴力

sum记录C D 每种时间出现的次数,枚举 i,j 判断 n-a[i]-b[j] 的次数

 #include <algorithm>
#include <cstdio> #define LL long long #define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b) inline void read(LL &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
}
const int N();
LL n,food[][N],f[][N],ans;
int sum[];
bool flag; inline void violence_30() //50^4,暴力判断 30分
{
for(int i=; i<=food[][]; ++i)
for(int j=; j<=food[][]; ++j)
for(int p=; p<=food[][]; ++p)
for(int q=; q<=food[][]; ++q)
ans+=(food[][i]+food[][j]+food[][p]+food[][q]<=n);
}
inline void violence_another_30() // 分组背包 n*(A\B\C\D)枚举
{
for(int i=; i<=n; ++i) f[][i]=;
for(int k=; k<; ++k)
for(int i=; i<=n; ++i)
for(int j=; j<=food[k][]; ++j)
if(i>=food[k][j]) f[k][i]+=f[k-][i-food[k][j]];
ans=f[][n];
}
inline void no_wa_and_all_ac()
{
LL minn=2e8+,maxx=-;
for(int i=; i<=food[][]; ++i)
for(int j=; j<=food[][]; ++j)
{
sum[food[][i]+food[][j]]++;
minn=min(minn,food[][i]+food[][j]);
maxx=max(maxx,food[][i]+food[][j]);
}
for(int i=minn; i<=maxx; ++i) sum[i]+=sum[i-];
for(int i=; i<=food[][]; ++i)
for(int j=; j<=food[][]; ++j)
if(n-food[][i]-food[][j]>=)
ans+=sum[ min(maxx,n-food[][i]-food[][j]) ];
} int Presist()
{
freopen("eat.in","r",stdin);
freopen("eat.out","w",stdout);
read(n); for(int i=; i<; ++i) read(food[i][]);
for(int i=; i<; ++i)
for(int j=; j<=food[i][]; ++j)
read(food[i][j]);
for(int i=; i<; ++i)
if(food[i][]>) flag=;
if(n<=) violence_another_30();
else if(!flag) violence_30();
else no_wa_and_all_ac();
printf("%I64d",ans);
return ;
} int Aptal=Presist();
int main(int argc,char**){;}

AC

T3 分糖果(candy)

Time Limit:1000ms   Memory Limit:128MB

题目描述

总共有n颗糖果,有3个小朋友分别叫做L,Y,K。每个小朋友想拿到至少k颗糖果,但这三个小朋友有一个共同的特点:对3反感。也就是说,如果某个小朋友拿到3颗,13颗,31颗,333颗这样数量的糖果,他就会不开心。(也即它拿到的糖果数量不包含有一位是3)

LYK掌管着这n颗糖果,它想问你有多少种合理的分配方案使得将这n颗糖果全部分给小朋友且没有小朋友不开心。

例如当n=3,k=1时只有1种分配方案,当n=4,k=1时有3种分配方案分别是112,121,211。当n=7,k=2时则不存在任何一种合法的方案。

当然这个答案可能会很大,你只需输出答案对12345647取模后的结果就可以了。

输入格式(candy.in)

第一行两个数表示n,k。

输出格式(candy.out)

一个数表示方案总数。

输入样例

99999 1

输出样例

9521331

对于30%的数据n<=100

对于50%的数据n<=1000。

对于另外30%的数据k=1。

对于100%的数据3<=n<=10^10000,1<=k<=n/3,且n,k不包含前导0。

 #include <cstdio>

 #define LL long long
inline void read(LL &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
}
LL n,k,ans; inline bool if_cant(LL x)
{
for(; x; x/=)
if(x%==) return ;
return ;
} int Presist()
{
freopen("candy.in","r",stdin);
freopen("candy.out","w",stdout); read(n),read(k);
for(LL t,i=k; i<=n; ++i)
{
if(if_cant(i)) continue;
for(LL j=k; j<=n-i; ++j)
{
if(if_cant(j)) continue;
t=n-i-j;
ans+=(t>=k&&(!if_cant(t)));
}
}
printf("%I64d\n",ans);
return ;
} int Aptal=Presist();
int main(int argc,char**){;}

50分暴力

数位DP

 #include<cstdio>
#include<cstring> #define N 10003 using namespace std; const int mod=; char s[N];
int a[N],b[N],dp[N][][][][]; void ADD(int &i,int j) { i+=j; if(i>=mod) i-=mod; } int main()
{
freopen("candy.in","r",stdin);
freopen("candy.out","w",stdout);
scanf("%s",s+); int len1=strlen(s+);
for(int i=;i<=len1;++i) a[i]=s[i]-'';
scanf("%s",s+); int len2=strlen(s+);
for(int i=;i<=len2;++i) b[i+len1-len2]=s[i]-'';
dp[][][][][]=;
int i,j,k,l,t,I,J,K,L,T;
for(i=;i<len1;i++)
for(j=;j<;j++)
for(k=;k<;k++)
for(l=;l<;l++)
for(t=;t<;t++)
if(dp[i][j][k][l][t])
for(int s1=;s1<=;s1++)
if(s1!=)
for(int s2=;s2<=;s2++)
if(s2!=)
for(int s3=;s3<=;s3++)
if(s3!=)
{
I=i+;
J=j*+a[i+]-s1-s2-s3;
if(J< || J>) continue;
if(!k && s1<b[i+]) continue;
K=(k || s1>b[i+]);
if(!l && s2<b[i+]) continue;
L=(l || s2>b[i+]);
if(!t && s3<b[i+]) continue;
T=(t || s3>b[i+]);
ADD(dp[I][J][K][L][T],dp[i][j][k][l][t]);
}
int ans=;
for(k=;k<;k++)
for(l=;l<;l++)
for(t=;t<;t++)
ADD(ans,dp[len1][][k][l][t]);
printf("%d",ans);
}

AC

2017-10-02-afternoon的更多相关文章

  1. phpStudy + JspStudy 2014.10.02 下载

    phpStudy + JspStudy 2014.10.02 下载 目标:让天下没有难配的php环境. phpStudy Linux版&Win版同步上线 支持Apache/Nginx/Teng ...

  2. 九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <init> 严重: The ResourceConfig instance does not contain any root resource classes.

    Tomcat启动错误:九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <i ...

  3. 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!

    前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...

  4. Adobe Audition CC 2017 (10.0)安装教程

    Adobe Audition CC 2017 (10.0)安装教程 注:下载地址在文章末尾 第一步:首先请将电脑的网络断开,很简单:禁用本地连接或者拔掉网线,这样就可以免除登录Creative Clo ...

  5. Xamarin 2017.10.9更新

     Xamarin 2017.10.9更新 本次更新主要解决了一些bug.Visual Studio 2017升级到15.4获得新功能.Visual Studio 2015需要工具-选项-Xamarin ...

  6. 2017.10.12 Java的计数器的开发

    //我们用一个合成的applet/application来简单显示出一个计数器的结果/** * Created by qichunlin on 2017/10/12. */ /*简单的计数器*/ im ...

  7. 2017.10.10 java中的继承与多态(重载与重写的区别)

    1. 类的继承 继承是面向对象编程技术的主要特征之一,也是实现软件复用的重要手段,使用继承特性子类(subclass) 可以继承父类(superclass)中private方法和属性,继承的目的是使程 ...

  8. 07/29/2013 02:10:02 AM - CMDPHP: Poller[0] Host[6] DS[10] WARNING: Result from SNMP not valid. Partial Result: U

    snmpwalk -c public -v2c  客户端ip地址  自定义的oid  能取到数据,但是服务器端就是图片一片空白 rrdtool fetch 文件名.rrd 查看到的全都是nan cac ...

  9. 2017.10.31 Enginer+position+statement

    一.The basic information Post name Engineering manager Department Engineering Post member A24645 imme ...

  10. 2017.10.23 Java 面向对象深入学习---final 关键字、static关键字、匿名对象等

    今日内容介绍 1.final 关键字 2.static 关键字 3.匿名对象 4.内部类 5.包的声明与访问 6.访问修饰符 7.代码块 第一节课 01(面向对象)final关键字概念.avi 02: ...

随机推荐

  1. jq星星评分

    html代码 <div class="make_mark"> <h5>请为这次服务打分</h5> <div class="mar ...

  2. 用nowrap实现div内的元素不换行

    在编写自定义插件my-slider的过程中,发现无论float还是inline-block均不能保证div内的内容不换行(这两个属性在内容超出容器尺寸后,均将剩余内容做换行处理),在浏览器内比较了自己 ...

  3. 【Linux】CentOS tar压缩与解压命令大全

    tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用 ...

  4. ie11 突然不能加载外部css 很神奇 头部改为 <!DOCTYPE> <html>

    <!DOCTYPE html> <html> 改为 <!DOCTYPE> <html>   OK了

  5. MYSQL之错误代码----mysql错误代码与JAVA实现

    原文地址:MYSQL之错误代码----mysql错误代码与JAVA实现作者:戒定慧 his chapter lists the errors that may appear when you call ...

  6. 初识Python(windows)——下载、安装、使用

    Table of Contents 1. Why is Python 1.1. Python和R 2. python的下载与安装 2.1. python的版本选择 2.2. python的下载 2.3 ...

  7. WC2007 石头剪刀布 数学+最小费用最大流

    题面: 有N个人参加一场比赛,赛程规定任意两个人之间都要进行一场比赛:这样总共有N*(N-1)/2场比赛.比赛已经进行了一部分,我们想知道在极端情况下,比赛结束后最多会发生多少剪刀石头布情况.即给出已 ...

  8. HashMap、ConcurrentHashMap以及HashTable(面试向)

    ---->HashMap 在java1.7中,hashmap的数据结构是基于数组+链表的结构,即我们比较熟悉的Entry数组,其包含的(key-value)键值对的形式.在多线程环境下,Hash ...

  9. centos 简单用户管理

    一.配置文件 /etc/passwd:存放用户信息,以“:”分割成7个部分 1.账号名称,用来对应UID: 2.早期密码存放位置,后来密码改存/etc/shadow中,以“x”代替: 3.UID,使用 ...

  10. LeetCode(6) ZigZag Conversion

    题目 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows li ...