题目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日总结的更多相关文章

  1. NOIP2017赛前模拟11月4日总结:

    第一次挂0·····有点感伤···主要是因为时间分配太不合理了··花2个半小时搞第一题最后还wa完了··第二题很简单花了30分钟打完但没打对拍结果wa完···第三题暴力可以拿20分的但没时间打了··· ...

  2. NOIP2017赛前模拟11月6日—7日总结

    收获颇丰的两天··· 题目1:序列操作 给定n个非负整数,进行m次操作,每次操作给出c,要求找出c个正整数数并将它们减去1,问最多能进行多少操作?n,m<=1000000 首先暴力贪心肯定是每次 ...

  3. NOIP2017赛前模拟11月2日总结

    分数爆炸的一天··但也学了很多 题目1:活动安排 给定n个活动的开始时间与结束时间··只有一个场地··要求保留尽量多的活动且时间不冲突···场地数n<=100000 考点:贪心 直接将结束时间按 ...

  4. 2016年10月30日 星期日 --出埃及记 Exodus 19:15

    2016年10月30日 星期日 --出埃及记 Exodus 19:15 Then he said to the people, "Prepare yourselves for the thi ...

  5. 10 月 30 日新款 Mac mini 有望与新款 iPad Pro 一起发布

    苹果最新款的 Mac mini 是在 2014 年 10 月推出的版本,到现在已经过了 4 年.分析师郭明錤和彭博社的 Mark Gurman 都表示苹果会在今年晚些时候发布新款 Mac mini. ...

  6. 10 月 30 日 北京 LiveVideoStack 阿里云视频云专场限量赠票 100 张

    10 月 30 日 | 北京 LiveVideoStack 将携手阿里云共邀 4 位技术大咖,一同探讨从上云到创新,视频云的新技术与新场景.阿里云视频云依托阿里云服务数百万开发者的卓越服务能力与实践, ...

  7. 18年10月30日 NOIP模拟赛

    T1 jkl 题解 显然每次都取a[i]的最大值/最小值,并更新a[i]即可 用数据结构维护这一操作..得分看常数 事实上用v[i]记录权值为i的个数,然后for乱搞就可以了... 其它乱搞做法能获得 ...

  8. 10月30日下午 PHP精确查询(模糊查询、模糊+关键字共同查询)

    1.一个条件的模糊查询 <body> <br /> <form action="main.php" method="post"&g ...

  9. 10月30日上午MySQL数据库的修改(从网页上实现对数据库的更改)

    从网页页面上对数据库进行更改,连接着之前做的增加.删除.查询. 1.先做一个修改页面 <body> <!--这个页面需要让用户看到一些数据,所以不是一个纯php页面,页面效果和增加页 ...

随机推荐

  1. CYUSB

    /*Summary The application cydesc is used to open the device with cypress GUID and get the device des ...

  2. ES6 Promise用法详解

    What is Promise? Promise是一个构造函数,接受一个参数(Function),并且该参数接受两个参数resolve和reject(分别表示异步操作执行成功后的回调函数.执行失败后的 ...

  3. python读取txt写入txt

    http://www.cnblogs.com/allenblogs/archive/2010/09/13/1824842.html

  4. C#逻辑运算符

    一.C#逻辑运算符 C#语言的逻辑运算符是对变量的值.表达式的运算结果进行比较,基比较结果为True或False. 二.示例 using System;using System.Collections ...

  5. C#继承机制 访问与隐藏基类成员

    (1) 访问基类成员 通过base 关键字访问基类的成员:   调用基类上已被其他方法重写的方法.  指定创建派生类实例时应调用的基类构造函数.  基类访问只能在构造函数.实例方法或实例属性访问器中进 ...

  6. 搭建mock服务器(微信小程序)

    搭建mock服务器(微信小程序) 如何在微信小程序使用mock.js实在是个问题,为了完全模拟访问路由和数据,选择在搭建本地mock服务器是一个不错的选择. 以下示例了一个mock服务器的搭建过程以及 ...

  7. Http请求 GET和POST,405错误

    我就简单说吧,在用SringMVC时,我们通常会用到 @RequestMapping(value="/test",method=RequestMethod.GET) public ...

  8. thinkphp 3.2.3 - Route.class.php 解析(路由匹配)

    class Route { public static function check(){ $depr = C('URL_PATHINFO_DEPR'); // '/' $regx = preg_re ...

  9. php扩展开发-实现一个简易的哈希表

    从一个简易的哈希表入手,会让你更好的理解php的哈希表,他们的本质是一样的,只是php的哈希表做了更多的功能扩展,php的哈希表是php语言的一个重要核心,大量的内核代码使用到哈希表. #includ ...

  10. Memory loss【记忆缺失】

    Memory Loss Losing your ability to think and remember is pretty scary. We know the risk of dementia ...