T1.金币

题目链接

 #include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int k;
long long ans;
int main()
{
scanf("%d",&k);
int cnt=;
while(k)
{
for(int i=;i<=cnt;i++)
{
if(k==)break;
ans+=cnt;k--;
}
cnt++;
if(k==)break;
}
printf("%lld",ans);
return ;
}

T2.扫雷游戏

题目链接

 #include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int xx[]={-,,,-,,-,,},yy[]={-,-,-,,,,,};
int n,m;
char s[][];
int count(int x,int y)
{
int num=;
for(int i=;i<;i++)
{
int xi=x+xx[i],yi=y+yy[i];
if(xi<||xi>=n||yi<||yi>=m)continue;
if(s[xi][yi]=='*')num++;
}
return num;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<n;i++)scanf("%s",s[i]);
for(int i=;i<n;i++,printf("\n"))
for(int j=;j<m;j++)
{
if(s[i][j]=='*')printf("*");
else printf("%d",count(i,j));
}
return ;
}

T3.求和

题目链接

仔细读题之后我们会发现,我们枚举的过程其实跟y没什么关系……

但因为题目限定了x+z=2*y,即x+z为偶数,所以x和z必须同奇或同偶。

所以分颜色分奇偶存一下就好了✔

 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
const int N=;
long long ans;
int n,m,siz,color,num[N];
vector<int>a[N][];
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<=n;i++)num[i]=read();
for(int i=;i<=n;i++)
{
color=read();
a[color][i%].push_back(i);
}
for(int i=;i<=m;i++)
{
for(int t=;t<;t++)
{
siz=a[i][t].size();
for(int j=;j<siz;j++)
for(int k=j+;k<siz;k++)
{
int x=a[i][t][j],z=a[i][t][k];
ans=(ans+(long long)(x+z)*(num[x]+num[z]))%;
}
}
}
printf("%lld",ans);
return ;
}

T4.推销员

题目链接

维护两个大根堆,一个存各个住户的距离*2+疲劳值,另一个存各个住户的疲劳值;每次取出堆顶元素,将较大的那一个累加进答案里。

注意判断是否合法:假设当前走到的距离最远的住户为x;则直接累加住户i的疲劳值需要满足的条件为:s[i]<=s[x];累加住户i的距离*2+疲劳值需要满足的条件为:s[i]>s[x],且累加时记得减去s[x]*2

 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int N=;
struct node
{
int w,pos;
bool operator <(const node& a)const{return w<a.w;}
}q2[N],r1,r2;
priority_queue<node>q1;
int n,cnt,cut,tail,s[N],t[N];
bool f[N];
long long 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 main()
{
n=read();cnt=n;tail=n;
for(int i=;i<=n;i++)s[i]=read();
for(int i=;i<=n;i++)
{
t[i]=read();
q2[i].w=s[i]*+t[i];q2[i].pos=i;
}
sort(q2+,q2+n+);
while(cnt)
{
if(tail)r2=q2[tail],tail--;
else r2=(node){,n+};
if(r2.pos<=cut)continue;
if(!q1.empty())r1=q1.top(),q1.pop();
else r1=(node){,};
if(r1.w>r2.w-*s[cut])
{
ans+=r1.w;
if(r2.pos!=n+)tail++;
}
else
{
ans+=r2.w-*s[cut];
for(int i=cut+;i<r2.pos;i++)q1.push((node){t[i],i});
if(r1.pos!=)q1.push(r1);
cut=r2.pos;
}
printf("%lld\n",ans);cnt--;
}
return ;
}

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

  1. NOIP 2015普及组复赛Day1 T1 == Codevs4510 神奇的幻方

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold  题目描述 Description: 幻方是一种很神奇的N∗N矩阵:它由数字 1,2,3, … … ,N∗N构成, ...

  2. NOIP 2018 普及组 解题报告

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

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

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

  4. NOIP 2015提高组复赛

    神奇的幻方 题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第 ...

  5. NOIP 2015 提高组 Day2

    期望得分:100+10+60=170 实际得分:100+10+35=145 http://www.cogs.pro/cogs/page/page.php?aid=16 T1 跳石头 时间限制:1 s  ...

  6. NOIP 2015 提高组 Day1

    期望得分:100+100+100=300 实际得分:100+100+45=245 T3 相似的代码 复制过去 没有改全,痛失55分 http://www.cogs.pro/cogs/page/page ...

  7. 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) 条件:矩阵的分值定义为每 ...

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

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

  9. noip 2015 提高组

    算是填个坑吧 , QwQ Day 1 第一题很水,就是考代码能力 ,直接贴代码. #include <iostream> #include <cstdlib> #include ...

  10. 开心的金明 NOIP 2006 普及组

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就 ...

随机推荐

  1. BZOJ5093图的价值(斯特林数)

    题目描述 “简单无向图”是指无重边.无自环的无向图(不一定连通). 一个带标号的图的价值定义为每个点度数的k次方的和. 给定n和k,请计算所有n个点的带标号的简单无向图的价值之和. 因为答案很大,请对 ...

  2. 点击a标签不跳转的办法

    方法1: <a href="http://www.baidu.com" onclick="return false"></a> 方法2: ...

  3. poj2054 Color a Tree

    神题.这题是巨毒瘤... 自己写真可谓是: 排空驭气奔如电,上天入地求之遍 上穷碧落下黄泉,两处茫茫皆不见 由于我们知道:不是树形时,不停选值最大的节点可以得到最小代价. 那么我们就能想出一个错误的贪 ...

  4. 利用twilio进行手机短信验证

    首先要注册 twilio 账号但是由于twilio人机验证用的是Goole所有注册需要FQ 完成后去免费获取15元使用 然后 pip install twilio 注册完成后会在个人首页显示你的免费金 ...

  5. (转)java中引用传递和值传递

    https://blog.csdn.net/javazejian/article/details/51192130 https://www.cnblogs.com/perfy/archive/2012 ...

  6. 第六篇 - bs4爬取校花网

    环境:python3  pycharm 模块:requests  bs4  urlretrieve  os  time 第一步:获取网页源代码 import requests from bs4 imp ...

  7. Freemarker 的 Eclipse 插件 安装

    clipse版本(目前最新oxygen) 如果你的eclipse版本为Oxygen "Help" ---> "Eclipse Marketplace..." ...

  8. Android Studio 签名 安全图片

    apk 输出地址: /Users/houzhibin/javaself/android/SpgApp/app/build/outputs/apk 上图是debug版的: 发布版的需要在终端输入命令行: ...

  9. 高级组件——文件选择器JFileChooser

    1.创建文件选择器 JFileChooser 2.设置选择模式 setFileSelectionMode(int mode) JFileChooser.FILES_ONLY 只能选择文件(默认) JF ...

  10. linux c 编程 ------ 通过设备节点调用驱动

    驱动程序如下,加载驱动后,会在/dev文件夹下生成一个文件hello_device_node,是此驱动的设备节点 #include <linux/init.h> #include < ...