T1 买铅笔 题目传送门

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n,x,y,ans=inf;
int main()
{
int now,nowf;
n=read();
for(int i=;i<=;i++){
x=read(); y=read();
if(n%x) now=n/x+;
else now=n/x;
nowf=now*y;
ans=min(ans,nowf);
}
printf("%d\n",ans);
return ;
}

T2 回文日期 题目传送门

这道题其实枚举一波年份再判就好了 当时傻逼了就直接枚举了 mdzz

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n;
int f[][]={{,,,,,,,,,,,,},{,,,,,,,,,,,,}};
int nx,ny,nz,tail=,ans;
struct node{int x,y,z;}q[M];
int pd(int x){
if(x%) return ;
if(x%==){
if(x%==) return ;
return ;
}
return ;
}
int check(int x){
int sx=q[x].x,sy=q[x].y,sz=q[x].z; //printf("%04d%02d%02d\n",sx,sy,sz);
return (sx!=nx||sy!=ny||sz!=nz);
}
void add(int k){
int x=q[k].x,y=q[k].y,z=q[k].z+;
int now=pd(x);
if(f[now][y]<z) z=,y++;
if(y>) y=,x++;
tail++;
q[tail].x=x; q[tail].y=y; q[tail].z=z;
}
int okay(int x){
int ans=q[x].x*+q[x].y*+q[x].z; //printf("%d\n",ans);
int s[];
for(int i=;i<=;i++) s[i]=ans%,ans=ans/;
return s[]==s[]&&s[]==s[]&&s[]==s[]&&s[]==s[];
}
int main()
{
n=read(); q[tail].x=n/; q[tail].y=n/%; q[tail].z=n%;
//printf("[%d %d %d]\n",q[1].x,q[1].y,q[1].z);
n=read(); nx=n/; ny=n/%; nz=n%;
if(okay(tail)) ans++;
while(check(tail)){
add(tail);
if(okay(tail)) ans++;
}
printf("%d\n",ans);
return ;
}

T3 海港 题目传送门

这道题搞了个队列记一波就okay了 代码简洁

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=,mx=;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int sum[M];
struct node{int t,w;}q[*M];
int head,tail,n,last,k,x,tot;
int main()
{
n=read();
for(int i=;i<=n;i++){
last=read(); k=read();
for(int i=;i<=k;i++){
x=read();
if(!sum[x]) tot++;
sum[x]++;
q[tail].t=last; q[tail++].w=x;
}
while(q[head].t+mx<=last&&head<tail){
int now=q[head++].w;
sum[now]--;
if(!sum[now]) tot--;
}
printf("%d\n",tot);
}
return ;
}

T4 魔法正 题目传送门

这道题 还是有点复杂了 自己没写出来 看了波题解开着

首先由题目可得 设c-d差距为i 则a-b距离是2i b-c距离要大于6i 这样我们外层枚举i内层枚举d就可以解决问题了

当然由于a,b可以由c,d推过来但是满足情况的c,d太多了所以要从边界模拟过来使得所有被枚举的c,d都合法 把这些合法的状态都累加起来算就比较方便 降一波复杂度

同理c,d

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=,maxN=;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int sum,xa,xb,xc,xd;
int n,m,id[M],w[maxN];
int a[maxN],b[maxN],c[maxN],d[maxN];
int main()
{
n=read(); m=read();
for(int i=;i<=m;i++) id[i]=read(),w[id[i]]++;
for(int i=;i<=n/;i++){
int now=i*;
sum=;
for(xa=n-now-;xa;xa--){
xb=xa+*i; xc=xb+*i+; xd=xc+i;
sum+=w[xc]*w[xd];
a[xa]+=w[xb]*sum;
b[xb]+=w[xa]*sum;
}
sum=;
for(xd=now+;xd<=n;xd++){
xc=xd-i; xb=xc-*i-; xa=xb-*i;
sum+=w[xa]*w[xb];
c[xc]+=sum*w[xd];
d[xd]+=sum*w[xc];
}
}
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 ;
}

noip2016 普及组的更多相关文章

  1. NOIP2016普及组解题报告

    概述 \(NOIP2016\)普及组的前三题都比较简单,第四题也有很多的暴力分,相信参加了的各位\(OIer\)在\(2016\)年都取得了很好的成绩. 那么,我将会分析\(NOIP2016\)普及组 ...

  2. NOIP2016普及组复赛解题报告

    提高组萌新,DAY1DAY2加起来骗分不到300,写写普及组的题目聊以自慰. (附:洛谷题目链接 T1:https://www.luogu.org/problem/show?pid=1909 T2:h ...

  3. [题解]noip2016普及组题解和心得

    [前言] 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. 第一题可以说的内 ...

  4. NOIP2016普及组

    普及组.代码有空发. 第一题就是买铅笔.暴力模拟绝对可取. 第二题就是回文日期.从t1的年份到t2的年份枚举每一年.头尾要特判. 第三题就是海港.骗了40分. 第四题就是魔法阵.不太好优化. 完.

  5. noip2016普及组题解和心得

    前言 感觉稍微有些滑稽吧,毕竟每次练的题都是提高组难度的,结果最后的主要任务是普及组抱一个一等奖回来.至于我的分数嘛..还是在你看完题解后写在[后记]里面.废话不多说,开始题解. (其实这篇博客只有题 ...

  6. 【做题记录】[NOIP2016 普及组] 魔法阵

    P2119 魔法阵 2016年普及组T4 题意: 给定一系列元素 \(\{X_i\}\) ,求满足以下不等式的每一个元素作为 \(a,b,c,d\) 的出现次数 . \[\begin{cases}X_ ...

  7. noip2016普及组 题解

    T1 大水题,不解释 上考场代码 #include <algorithm> #include <cstdio> using namespace std; int main() ...

  8. [NOIP2016普及组]魔法阵

    题目:洛谷P2119.Vijos P2012.codevs5624. 题目大意:有n件物品,每件物品有个魔法值.要求组成魔法阵(Xa,Xb,Xc,Xd),该魔法阵要满足Xa<Xb<Xc&l ...

  9. 【NOIP2016普及组复赛】魔法阵

    题目 分析 设xd-xc为i,那么xb-xa=2i, 又因为xb-xa<(xc-xb)/3, 那么c>6i+b. 于是,先枚举i, 再分别枚举xa和xd, 根据之间的关系,用前缀和求出每一 ...

随机推荐

  1. linux安装oracle远程客户端

    文章参考:http://blog.csdn.net/caomiao2006/article/details/11901123 感谢博友分享O(∩_∩)O~ 安装oracle 远程客户端(一般情况下本地 ...

  2. What to do when Enterprise Manager is not able to connect to the database instance (ORA-28001)

    摘自:http://dbtricks.com/?p=34 If you are trying to connect to the Oracle enterprise Manger and you ge ...

  3. 用gradle编译任意结构的Android项目

    ## 需求 * 继续用`Eclipse`项目的结构,但是使用`gradle`编译,或者说任意的项目结构进行编译. ## 解决方案 1. Android studio的项目结构 1. Android S ...

  4. Wannafly挑战赛21:C - 大水题

    链接:Wannafly挑战赛21:C - 大水题 题意: 现在给你N个正整数ai,每个数给出一“好数程度” gi(数值相同但位置不同的数之间可能有不同的好数程度).对于在 i 位置的数,如果有一在j位 ...

  5. 问题 A: 分数矩阵

    题目描述 我们定义如下矩阵:1/1 1/2 1/31/2 1/1 1/21/3 1/2 1/1矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增.请求出这个矩阵的总和. 输入 输入包含多组测 ...

  6. Fast-RCNN论文总结整理

    此篇博客写作思路是一边翻译英文原文一边总结博主在阅读过程中遇到的问题及一些思考,因为博主本人阅读英文论文水平不高,所以还请大家在看此篇博客的过程中带着批判的眼神阅读!小墨镜带好,有什么不对的地方请在留 ...

  7. CentOS7安装配置SonarQube

    一.SonarQubeServer 1.前提 安装好mysql5.7和jdk1.8. (1)安装Mysql create user 'sonar'@'localhost' identified by ...

  8. 文件名的查找——find

    查找文件!!! 命令格式:find [PATH] [option] [action] 一.参数1——与时间有关的参数 -atime.-ctime.-mtime -mtime n:在n天之前的“一天之内 ...

  9. vim字符编码

    今天我在用vim新建中文文件的时候遇到保存好出现乱码的问题,经过一波百度, :set encoding=utf-8 :set fileencodings=ucs-bom,utf-8,cp936 :se ...

  10. chm文件空白如何解决

    解决办法:http://jingyan.baidu.com/article/8275fc86b5fb6646a03cf6b0.html