#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue> #define N 2001 using namespace std;
int n,m,ans,cnt;
int vis[N],w[N],x[N],deep[N];
int e[N][N];
queue<int>q; inline 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;
} void bfs(int now)
{
while(!q.empty()) q.pop();
memset(vis,,sizeof vis);
memset(deep,,sizeof deep);
q.push(now);
while(!q.empty())
{
int u=q.front();q.pop();
ans=max(ans,deep[u]+);
for(int i=;i<=n;i++)
{
if(u==now&&e[i][now])
{
deep[i]=deep[now]+;
q.push(i);
}
else if(deep[i]==deep[u] && e[u][i])
{
deep[i]=deep[u]+;
q.push(i);
}
}
}
} int main()
{
freopen("clique.in","r",stdin);
freopen("clique.out","w",stdout);
int tmp;
n=read();
for(int i=;i<=n;i++) x[i]=read(),w[i]=read();
for(int i=;i<=n;i++) for(int j=;j<=n;j++)
{
if(i==j) continue;
tmp=x[i]-x[j];
if(tmp<) tmp=-tmp;
if(tmp>=w[i]+w[j]) e[i][j]=e[j][i]=;
}
for(int i=;i<=n;i++)
bfs(i);
printf("%d\n",ans);
return ;
}

20暴力23333

/*
将点(xi,wi)看成区间(xi-wi,xi+wi),绝对值去掉移项
那么两个点有连边当且仅当两个区间没有公共点
最多的不重合的区间数就是最大团的点数
删去所有包含其它区间的区间,在剩下的区间中每次贪心取一个能取的坐标最小的区间。
*/
#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=;
int n;
struct zhw{
int l,r;
friend bool operator <(zhw a,zhw b)
{
return a.r<b.r||(a.r==b.r&&a.l>b.l);
}
}a[maxn];
int x,w,l,r;
int main()
{
freopen("clique.in","r",stdin);
freopen("clique.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;++i)
{
scanf("%d%d",&x,&w);
a[i].l=x-w,a[i].r=x+w;
}
sort(a+,a+n+);
int pos=a[].r,ans=;
for(int i=;i<=n;++i)
{
if(a[i].l>=pos)ans++,pos=a[i].r;
}
printf("%d",ans);
fclose(stdin);fclose(stdout);
return ;
}

/*
可以对硬币的编号取模k,这样就分成了k组
每一组中,若有偶数堆硬币那这一组硬币可以全部拿走。
若有奇数堆硬币那一定会有一堆剩余
而且剩余的一定是编号为奇数的那一堆(自己写一下就能发现一定是编号为奇数的剩余)
同样把这一组的所有硬币价值加起来,再减去这一堆中编号为奇数,并且价值最小的那一堆即可。
*/
#include <cstdio>
#include <iostream> #define ll long long using namespace std;
int n,k;
ll a[]; int main()
{
freopen("coin.in","r",stdin);
freopen("coin.out","w",stdout); scanf("%d%d",&n,&k);k--;
for (int i=;i<n;i++) scanf("%lld",&a[i]); ll ret=;
for (int i=;i<=k;i++)
{
ll mini=1e9,tot=;
for (int j=i;j<n;j+=k+)
{
tot^=;
if (tot) mini=min(mini,a[j]);
ret+=a[j];
}
ret-=tot*mini;
}
cout<<ret;
}

/*
水水的dp
*/
#include<iostream>
#include<cstring>
#include<cstdio> #define N 1007 using namespace std;
int n,t;
int v[N],sum[N];
int f[N]; int main()
{
freopen("cherry.in","r",stdin);
freopen("cherry.out","w",stdout);
scanf("%d%d",&n,&t);
for(int i=;i<=n;++i)
scanf("%d",&v[i]),sum[i]=sum[i-]+v[i];
memset(f,/,sizeof(f));
f[]=;
for(int i=;i<=n;++i)
for(int j=;j<=i;j++)
f[i]=min(f[i],f[j-]+(sum[i]-sum[j-]-t)*(sum[i]-sum[j-]-t));
printf("%d",f[n]);
return ;
}

10.12NOIP模拟题(1)的更多相关文章

  1. 10.12NOIP模拟题(2)

    /* 有谁知道这道题结论是怎么来的? 晚上问问学数学的孩子23333 */ #include<iostream> #include<cstdio> #include<cs ...

  2. 9.12NOIP模拟题

    NOIP 2017 全假模拟冲刺                                               hkd 题目名称 Spfa 走楼梯缩小版 滑稽 题目类型 传统 传统 传统 ...

  3. 10.13NOIP模拟题

    /* 容斥原理 考虑到a[i]要么不会太大,要么就对答案贡献很小 dfs即可 */ #include<bits/stdc++.h> #define ll long long #define ...

  4. 10.23NOIP模拟题

    叉叉题目描述现在有一个字符串,每个字母出现的次数均为偶数.接下来我们把第一次出现的字母 a 和第二次出现的 a 连一条线,第三次出现的和四次出现的字母 a 连一条线,第五次出现的和六次出现的字母 a ...

  5. 10.9NOIP模拟题

    /* big模拟 细节不少 remove表示这个玩意儿在这一秒有没有移动 注意在一秒内所有小葱一起移动,所以如果一个一个处理 别忘了“错位”这种情况 */ #include<iostream&g ...

  6. 10.11NOIP模拟题(3)

    /* 可以看出,对于一段区间[L,R]如果统计了答案 若a[L]<a[R],那么当右端点往左移时答案不会更优,a[R]>a[L]同理 所以两个指针分别从头尾往中间扫那边小移哪边即可. */ ...

  7. 10.11NOIP模拟题(2)

    /* string水过 */ #include<bits/stdc++.h> #define N 1001 using namespace std; int n,x,y,m,pre; st ...

  8. poj 1008:Maya Calendar(模拟题,玛雅日历转换)

    Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 64795   Accepted: 19978 D ...

  9. poj 1888 Crossword Answers 模拟题

    Crossword Answers Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 869   Accepted: 405 D ...

随机推荐

  1. 用java实现二分搜索<算法分析>

    实验目的:1.复习java编程:2.掌握二分搜索技术的基本原理:3.掌握使用java程序进行二分搜索的方法.实验步骤:1.由用户输入5个以上的整数:2.利用二分搜索算法完成对数组的搜索. packag ...

  2. 从一个简单的组件化封装写优化DOM操作

    /* *缺点 * 1. 还需要我们自己手工维护dom状态,以数据的思想去思考 *2. 数据改变后,还需要我们自己手动改变dom *3. * */ class LikeButton{ construct ...

  3. 【HDOJ6148】Valley Numer(数位DP)

    题意: 1≤T≤200 ● 1≤length(N)≤100 思路: 设f[i,j,k,l]为第i位为j,前i位是否贴上限(0/1),递减或递增(0/1)方案数 g[i,j,k]为不到n位,第i位为j, ...

  4. 【BZOJ2142】礼物(扩展lucas定理,中国剩余定理合并方程)

    题意:有n件礼物,m个人,每个人分别需要w[i]件礼物,求分礼物的不同方案数 mod P 提示:设P=p1^c1 * p2^c2 * p3^c3 * … *pt ^ ct,pi为质数. 1≤n≤10^ ...

  5. 【进击后端】ubuntu 快速安装node mongodb express

    安装软件:node,mongo,express 1.apt install node 2.node -v 3.apt install mongodb 4.mongo -version 5.apt in ...

  6. springboot+idea+maven学习第一天(springboot入门,idea整合maven)

    1.springboot简介 简化Spring 用用开发的一个框架: 真个S僻壤技术栈的一个大整合 j2ee开发的一站式解决方案 2.微服务 微服务:是一种架构风格 一个应用应该是一组小型服务:可以通 ...

  7. 洛谷 P1081 开车旅行(70)

    P1081 开车旅行 题目描述 小AA 和小BB 决定利用假期外出旅行,他们将想去的城市从 11到 NN 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 ii的海 ...

  8. Ubuntu16.04安装deb文件时提示:此软件来自第三方且可能包含非自由组件

    解决方式: 1.在Ubuntu软件中心安装GDebi. 2.安装好之后,选择这个要安装的deb文件右键,打开方式选择GDebi,然后输入管理员密码等待安装,期间如果不行需要重试几次. 3.另外的方法, ...

  9. mkswap,swapon, swapoff命令:创建交换分区

    linux支持虚拟内存,用作虚拟内存的硬盘部分被称为交互空间(swap space),虚拟内存是指使用磁盘当作内存的扩展,这样可用内存的大小就相应的增大了.内核会将暂时不用的内存块的内容写到硬盘上,从 ...

  10. tomcat8.5.20配置https

    一.使用cmd下生成证书: d: cd d:/java/jdk/jdk1.8 keytool -v -genkey -alias tomcat -keyalg RSA -keystore D:\jav ...