T1.买铅笔

题目链接

 #include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,p,w,ans=0x3f3f3f3f;
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()
{
n=read();
for(int i=;i<=;i++)
{
w=read(),p=read();
if(n%w)w=n/w+;
else w=n/w;
ans=min(ans,w*p);
}
printf("%d",ans);
return ;
}

T2.回文日期

题目链接

直接枚举年份,再判断日期是否合法就好了……然而我居然还WA了一发(好菜啊

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int d1,d2,ans;
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 rev(int x)
{
int s[],ans=;
for(int i=;i<=;i++)s[i]=x%,x/=;
for(int i=;i<=;i++)ans=ans*+s[i];
return ans;
}
bool pan(int y,int m,int d)
{
int day=;
if(m==||m==||m==||m==)day=;
if(m==)
{
if((y%==&&y%!=)||y%==)day=;
else day=;
}
if(m<||m>||d<||d>day)return false;
return true;
}
int main()
{
d1=read();d2=read();
for(int i=d1/;i<=d2/;i++)
{
int t=i*+rev(i);
if(pan(i,(t/)%,t%)&&t>=d1&&t<=d2)ans++;
}
printf("%d",ans);
return ;
}

T3.海港

题目链接

因为保证输入的ti是递增的,所以开一个队列瞎搞就好了✔

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,k,t,ans,nat[];
struct node{int t,nat;}q[];
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()
{
n=read();
int head=,tail=;
while(n--)
{
t=read();k=read();
while(k--)
{
q[++tail].nat=read();
if(!nat[q[tail].nat])ans++;
nat[q[tail].nat]++;
q[tail].t=t;
}
while(q[head].t<=t-)
{
nat[q[head].nat]--;
if(!nat[q[head].nat])ans--;
head++;
}
printf("%d\n",ans);
}
return ;
}

T4.魔法阵

题目链接

据题意得,x​b​​−xa​​=2(x​d​​−x​c​​),x​c​​−xb​​>6(x​d​​−x​c​​),即总距离s>9(x​d​​−x​c​​);

另,魔法值相同的物品所需要输出的答案是一样的;

所以可以先枚举(x​d​​−x​c​​),再倒序枚举a的位置并推算出b及最小的合法c、d的位置并进行计算(倒序是为了使前面枚举过的c、d位置合法,方便累加);同理,正序枚举d的位置并推算出c及最大的合法a、b的位置并进行计算。

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
int n,m,num,xa,xb,xc,xd;
int w[N],a[N],b[N],c[N],d[N],id[];
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()
{
n=read();m=read();
for(int i=;i<=m;i++)
{
id[i]=read();
w[id[i]]++;
}
for(int i=;i<=n/;i++)
{
num=;
for(xa=n-*i-;xa>=;xa--)
{
xb=xa+*i;xc=xb+*i+;xd=xc+i;
num+=w[xc]*w[xd];
a[xa]+=w[xb]*num;
b[xb]+=w[xa]*num;
}
num=;
for(xd=*i+;xd<=n;xd++)
{
xc=xd-i;xb=xc-*i-;xa=xb-*i;
num+=w[xa]*w[xb];
c[xc]+=w[xd]*num;
d[xd]+=w[xc]*num;
}
}
for(int i=;i<=m;i++)
printf("%d %d %d %d\n",a[id[i]],b[id[i]],c[id[i]],d[id[i]]);
return ;
}

【noip 2016】普及组的更多相关文章

  1. NOIP 2018 普及组 解题报告

    目录 标题统计 题目链接 思路 代码 龙虎斗 题目链接: 思路 代码 摆渡车 题目链接: 思路 对称二叉树 题目链接 思路: 先来解释一下为毛现在才来发解题报告: 其实博主是参加过NOIP 2018普 ...

  2. 洛谷P1067 多项式输出 NOIP 2009 普及组 第一题

    洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. ...

  3. NOIP【2016普及组】 考后有感(买铅笔,回文日期,海港,魔法阵)

    普及组考试已落下大幕,但我们那扑通扑通等待成绩的心仍然无法平静,先来给四道题做一个总结: 一. 买铅笔 自评难度:1星 其实这道题没有什么难度,生命之题,满分必拿,100分,保底啦~\(≧▽≦)/~ ...

  4. NOIP2015&2016普及组解题报告

    NOIP2015普及组题目下载 NOIP2016普及组题目下载 NOIP2015普及组题目: NOIP2018RP++ NOIP2016普及组题目 NOIP2018RP++ T1 金币\((coin. ...

  5. noip 2016提高组D2T1 problem

    我们可以先预处理一下组合数模K的值,然后我们可以发现对于答案ji[n][m],可以发现递推式ji[i][j]=ji[i-1][j]+ji[i][j-1]-ji[i-1][j-1]并对于Cij是否%k等 ...

  6. noip 2016 提高组题解

    前几天写的那个纯属搞笑.(额,好吧,其实这个也不怎么正经) 就先说说day2吧: T1:这个东西应该叫做数论吧. 然而我一看到就照着样例在纸上推了大半天(然而还是没有看出来这东西是个杨辉三角) 然后就 ...

  7. noip 2016 提高组总结(不是题解)

    小弱鸡杨树辰是第一次参加像noip这样的高大上的比赛,于是他非常,非常,非常激动. 当他第二天考完试后,他正在yy自己的分数:day1T1应该是a掉了,T2写了个30分的暴力,T3也是个40分的暴力, ...

  8. NOIP 2016 提高组 复赛 Day2T1==洛谷2822 组合数问题

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  9. NOIP 2014 普及组 T4 子矩阵

    [题意] 已知:n,m,r,c,a[i][j] (1 ≤ n ≤ 16, 1 ≤ m ≤ 16,1 ≤ a[i][j] ≤1000,1 ≤ r ≤ n, 1 ≤ c ≤ m) 条件:矩阵的分值定义为每 ...

  10. NOIP 2014 普及组 T3 螺旋矩阵

    [题意] 已知:n,r,c(n<=30000) 条件:给定n行n列的螺旋矩阵(从矩阵的左上角(1,1)出发,初始时向右移动:如果前方是未曾经过的格子, 则继续前进,否则右转:重复上述操作直至经过 ...

随机推荐

  1. LinkedBlockingQueue中put源码分析

    查看源码得知: LinkedBlockingQueue采用是锁分离的技术 //取出锁 private final ReentrantLock takeLock = new ReentrantLock( ...

  2. Go 语言 HTTP Server 源码分析

    http://www.codeceo.com/go-http-server-code.html

  3. js click 与 onclick 事件绑定,触发与解绑

    click 与 onclick 1.onclick 事件会在对象被点击时发生. <input id="btn1" type="button" onclic ...

  4. 震撼:多线程下的操作离不开synchronized

    昨天在写一个聊天程序,在发送消息的时候是采用单独的一个线程,接收消息是在另一个线程中完成. 我在测试的过程中发现,有的时候当消息比较多时,比如: 当我刚刚发送完一条消息,这个时候要将我发送的消息添加到 ...

  5. 计算基因上外显子碱基覆盖度(exon coverage depth):Samtool工具使用

    假设想要计算ATP1A4基因上的外显子碱基覆盖度 首先查询这个基因所有exon的起始和终止位置,查询链接:http://grch37.ensembl.org/Homo_sapiens/Transcri ...

  6. KMP之计算Next数组

    KMP的Next数组:模式串的前缀与后缀的“相交”长度 KMP算法步骤: 1.先算next数组 2.若失配(此时模式串下标为j),利用Next数组求出失配后滑动的新位置 a.Next[j] \geq ...

  7. python自动化开发-[第十一天]-Mysql

    今日概要: 1.初识mysql 2.MySQL的增删改查 3.主键.外键 4.组合和分组 一.数据库的由来 1.什么是数据库? 数据的仓库,在ATM,购物车中存储数据为目录,称为数据库 1.数据以表格 ...

  8. BZOJ2157 边转点 树链剖分

    https://www.lydsy.com/JudgeOnline/problem.php?id=2157 现在就是后悔,非常后悔 本来想随便拿个树剖热身,不料开了个毒瘤题. 题意:动态维护一棵树上的 ...

  9. python调用shell命令之三慷慨法

    preface: 忙于近期的任务,须要用到libsvm的一些命令.如在终端执行java svm_train train_file model_file. pythonsubset.py file tr ...

  10. .NET技术-1.0.使用反射、特性简化代码(验证Model类)

    使用反射.特性简化代码 参考项目:利用反射验证Model类/AssemblyVerification 假设现在有一个学生类(Student) /// <summary> /// 学生类 / ...