NOIP2017赛前模拟10月30日总结
题目1:
n个人参赛(n<=100000),每个人有一个权值··已知两个人权值绝对值之差小于等于K时,两个人都有可能赢,若大于则权值大的人赢···比赛为淘汰制,进行n-1轮·问最后可能赢的人有多少个?
考点:简单分析
直接将权值排序,从大到小扫一遍直到num[i+1]-num[i]>k停止··此时答案等于n-i
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<cctype>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+;
inline int R()
{
char c;int f=;
for(c=getchar();c<''||c>'';c=getchar());
for(;c<=''&&c>='';c=getchar()) f=(f<<)+(f<<)+c-'';
return f;
}
int n,k,T,num[N];
int main()
{
T=R();
while(T--)
{
n=R(),k=R();
for(int i=;i<=n;i++) num[i]=R();
sort(num+,num+n+);
int ans=;
for(int i=n-;i>=;i--)
{
if(num[i+]-num[i]<=k) ans++;
else break;
}
cout<<ans<<"\n";
}
return ;
}
题目2:
有n个数从左到右排列··豆豆和豆沙从左到右交替取,豆豆第一次可以取1个或2个数,之后若前一个人拿了K个数··则后面的人只能拿K或K+1个数··n<=20000,若每次两人拿的时候都采用最优策略,那么豆豆会比豆沙多拿总和多大的数?
考点:dp
和第一次NOIP总结中的T2很像··我们用f[i][j]表示先手从i开始拿j个之后能最多比后手多拿多大,得出转移方程:
f[i][j]=sum[i+j-1]-sum[i-1]-max(f[i+j][j],f[i+j][j+1]);
sum为数的前缀和,最后比较f[1][1]和f[1][2]即可,由于j每次枚举最大不会超过根号n,复杂度为n^3/2;
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<cctype>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=2e4+;
int T,n,f[N][],num[N],sum[N];
inline int R(){
char c;int f=,i=;
for(c=getchar();(c<''||c>'')&&c!='-';c=getchar());
if(c=='-') i=-,c=getchar();
for(;c<=''&&c>='';c=getchar()) f=(f<<)+(f<<)+c-'';
return f*i;
}
int main()
{
T=R();
while(T--){
memset(sum,,sizeof(sum));memset(f,,sizeof(f));
n=R();
for(int i=;i<=n;i++) sum[i]=num[i]=R(),sum[i]+=sum[i-];
for(int i=n;i>=;i--)
for(int j=;i+j-<=n&&j<=&&j<=i+;j++)
f[i][j]=sum[i+j-]-sum[i-]-max(f[i+j][j],f[i+j][j+]);
cout<<max(f[][],f[][])<<endl;
}
return ;
}
题目3:
给定一个无向图,问图中共边三元环有多少对,点数n<=100000,m<=200000;
考点:图论
很妙的一道题···我们枚举每一个点u··然后找到与该点相连且度数比该点小的点v··然后找既与v相连由于u相连的点的数量计算对答案贡献即可··复杂度为m^3/2次方
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<cctype>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
const int M=2e5+;
const int N=1e5+;
vector<int>ed[N];
inline int R(){
char c;int f=;
for(c=getchar();c<''||c>'';c=getchar());
for(;c<=''&&c>='';c=getchar()) f=(f<<)+(f<<)+c-'';
return f;
}
int T,n,m,du[N],tag[N],tim;
long long ans=;
inline void pre(){
for(int i=;i<=n;i++) ed[i].clear();
memset(du,,sizeof(du));tim=;ans=;
memset(tag,,sizeof(tag));
}
inline void getans(){
for(int i=;i<=n;i++){
tim++;
for(int j=;j<ed[i].size();j++)
{
int v=ed[i][j];tag[v]=tim;
}
for(int j=;j<ed[i].size();j++){
int v=ed[i][j];
if(du[v]<du[i]||(du[v]==du[i]&&v<i)){
int cnt=;
for(int k=;k<ed[v].size();k++) if(tag[ed[v][k]]==tim) cnt++;
ans+=(long long)cnt*(cnt-)/;
}
}
}
}
int main()
{
T=R();
while(T--){
n=R(),m=R();pre();int a,b;
for(int i=;i<=m;i++) a=R(),b=R(),du[a]++,du[b]++,ed[a].push_back(b),ed[b].push_back(a);
getans();cout<<ans<<endl;
} }
NOIP2017赛前模拟10月30日总结的更多相关文章
- NOIP2017赛前模拟11月4日总结:
第一次挂0·····有点感伤···主要是因为时间分配太不合理了··花2个半小时搞第一题最后还wa完了··第二题很简单花了30分钟打完但没打对拍结果wa完···第三题暴力可以拿20分的但没时间打了··· ...
- NOIP2017赛前模拟11月6日—7日总结
收获颇丰的两天··· 题目1:序列操作 给定n个非负整数,进行m次操作,每次操作给出c,要求找出c个正整数数并将它们减去1,问最多能进行多少操作?n,m<=1000000 首先暴力贪心肯定是每次 ...
- NOIP2017赛前模拟11月2日总结
分数爆炸的一天··但也学了很多 题目1:活动安排 给定n个活动的开始时间与结束时间··只有一个场地··要求保留尽量多的活动且时间不冲突···场地数n<=100000 考点:贪心 直接将结束时间按 ...
- 2016年10月30日 星期日 --出埃及记 Exodus 19:15
2016年10月30日 星期日 --出埃及记 Exodus 19:15 Then he said to the people, "Prepare yourselves for the thi ...
- 10 月 30 日新款 Mac mini 有望与新款 iPad Pro 一起发布
苹果最新款的 Mac mini 是在 2014 年 10 月推出的版本,到现在已经过了 4 年.分析师郭明錤和彭博社的 Mark Gurman 都表示苹果会在今年晚些时候发布新款 Mac mini. ...
- 10 月 30 日 北京 LiveVideoStack 阿里云视频云专场限量赠票 100 张
10 月 30 日 | 北京 LiveVideoStack 将携手阿里云共邀 4 位技术大咖,一同探讨从上云到创新,视频云的新技术与新场景.阿里云视频云依托阿里云服务数百万开发者的卓越服务能力与实践, ...
- 18年10月30日 NOIP模拟赛
T1 jkl 题解 显然每次都取a[i]的最大值/最小值,并更新a[i]即可 用数据结构维护这一操作..得分看常数 事实上用v[i]记录权值为i的个数,然后for乱搞就可以了... 其它乱搞做法能获得 ...
- 10月30日下午 PHP精确查询(模糊查询、模糊+关键字共同查询)
1.一个条件的模糊查询 <body> <br /> <form action="main.php" method="post"&g ...
- 10月30日上午MySQL数据库的修改(从网页上实现对数据库的更改)
从网页页面上对数据库进行更改,连接着之前做的增加.删除.查询. 1.先做一个修改页面 <body> <!--这个页面需要让用户看到一些数据,所以不是一个纯php页面,页面效果和增加页 ...
随机推荐
- cuda api查询问题
在查询CUDA运行时API的时候,我用360极速浏览器的时候搜索结果一直不出来,但是用火狐的话就很流畅,所以建议大家在开发时还是用火狐浏览器.
- iOS开发遇到的坑之七--上传app Stroe被拒绝:The app references non-public symbols in : _UICreateCGImageFromIOSurface
这是上学期遇到的问题了,突然查阅邮箱的时候发现了,遂在这里记录下来,希望大家以后注意这个问题 我上传App Store的时候,apple给我发的邮件原文: Dear developer, We hav ...
- 第十五篇、OC_同一个View实现两个手势响应
#pragma mark-UIGestureRecognizerDelegate Methods // 只要实现这个方法,就可以实现两个手势同时响应 - (BOOL)gestureRecognizer ...
- 使用git stash命令保存和恢复进度
使用git stash命令保存和恢复进度 git stash 保存当前工作进度,会把暂存区和工作区的改动保存起来.执行完这个命令后,在运行git status命令,就会发现当前是一个干净的工作区,没有 ...
- ABAP读取长文本的方法
SAP中所有的项目文本都存在以下两张数据表中: 1. STXH 抬头项目文本 透明表 2. STXL 明细项目文本 透明表 长文本读取方法 首先在STXH和STXL中根据OBJECT NAME ...
- 十二、MySQL 查询数据
MySQL 查询数据 MySQL 数据库使用SQL SELECT语句来查询数据. 你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据. 语法 以下为在MyS ...
- 4.在Cisco Packet Tracerl里路由器密码重置
在路由器的特权模式的密码忘记的情况下,关闭路由器的电源,在接通电源,在路由器载入的时候,按ctrl+c,直接进入monitor模式 输入:confreg 0x2142 reset 重新进入后 enab ...
- Vue -computed传参数
vue 中computed想传递参数怎么办? 闭包在这里起到的重要的作用 <input v-model="newItem(key,val)" type="text& ...
- Python 正则表达式 利用括号分组
如果想把区号从匹配的电话号码中分离,可以添加括号在正则表达式中创建分组,再使用group()方法,从一个分组中获取匹配的文本 正则表达式字符串中,第一个括号是第一组,第二个括号是第二组.向group( ...
- 04vim的使用
linux常用命令 workon 查看已经安装的虚拟环境 deactivate 退出虚拟环境 whoami 查看用户 sudo bash install.sh 添加权限 pwd 查看在那个路径下 cd ...