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. Bootstrap4用法

    #Bootstrap4 ## 网格系统- .col- 针对所有设备- .col-sm- 平板 - 屏幕宽度等于或大于 576px- .col-md- 桌面显示器 - 屏幕宽度等于或大于 768px)- ...

  2. 3招搞定APP注册作弊

    在说如何应对之前,易盾先给各位盾友梳理移动端APP可能遇到哪些作弊风险.1. 渠道商刷量,伪造大量的下载量和装机量,但没有新用户注册:2. 对于电商.P2P.外卖等平台,会面临散户或者团队刷子的注册- ...

  3. 26、js阶段性复习

    1.一元运算符 Operator + 可用于将变量转换为数字: <!DOCTYPE html> <html> <body> <p> typeof 操作符 ...

  4. 关于相对布局RelativeLayout的各种属性介绍

    RelativeLayout相对布局是个人觉得在android布局中比较常用且好用的一个,当然如果想让布局更漂亮是需要多种布局混合搭建的,这里就需要更深入的学习了,在这只介绍下有关相对布局的东西. 相 ...

  5. 解决EasyUI DataGrid删除行失败的方法

    笔者最近在做一个项目的后台,用到了EasyUI的datagrid控件,并开启了行内编辑功能,实际上也就是使用了edatagird这个空间,引用了edatagrid.js,一切似乎都做的顺风顺水,添加数 ...

  6. 并查集——poj2236(带权并查集)

    题目:Wireless Network 题意:给定n台已损坏计算机的位置和计算机最远通信距离d,然后分别根据命令执行以下两种操作: "O p" (1 <= p <= N ...

  7. windows下连接hadoop运行eclipse报错Permission denied:

    这是权限问题,试了一下同时也不能在hdfs创建文件夹. 解决: 修改如下hadoop的配置文件:etc/hadoop/hdfs-site.xml,如没有的话可以添加上. <property> ...

  8. 软工实践Beta冲刺(6/7)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 1.界面的修改与完善 展示GitHub当日代码/文档签入记 ...

  9. 剑指offer:正则表达式匹配

    目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:正则表达式匹配 题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符.表示任意一个字符,而*表示它前面的字符可以 ...

  10. PokeCats开发者日志(四)

      现在是PokeCats游戏开发的第八天的上午,感觉游戏做得差不多了,来写一下开发者日志吧!   (1)增加闯关模式,一共30关.   (2)更改了最后一关的主题,更换了背景,将树桩改为礼物盒.   ...