HDU6095——Rikka with Competition

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6095

题目意思:抱歉虽然是签到题,现场真的没做出来,因为题目没看懂,题目说明现在给出n个选手的能力值,现在举办n-1场比赛,如果每场比赛中选出的两名选手之间能力的差大于k,则能力高的人获胜,否则两个人都获胜,问最后有多少人获胜了。(注:如果他如果有人可以击败他,则就不算获胜)

代码:从代码里面我们看出,先对n个选手的能力值排序,然后ct=1,然后从大到小两两相邻比较。如果有一组相邻的差大于k,则说明前面的所有选手都会被击败,获胜的人就是当前ct的值,否则ct++。

 //Author: xiaowuga
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <ctime>
#include <map>
#include <bitset>
#include <cctype>
#define maxx INT_MAX
#define minn INT_MIN
#define inf 0x3f3f3f3f
#define mem(s,ch) memset(s,ch,sizeof(s))
#define nc cout<<"nc"<<endl
#define sp " "
const long long N=;
using namespace std;
typedef long long LL;
typedef int II;
int main() {
ios::sync_with_stdio(false);cin.tie();
II T;
II a[N];
cin>>T;
while(T--){
II n,k;
cin>>n>>k;
for(II i=;i<n;i++) cin>>a[i];
sort(a,a+n);
II ct=;
for(II i=n-;i>=;i--){
if(a[i]-a[i-]<=k) ct++;
else break;
}
cout<<ct<<endl;
}
return ;
}

HDU6090——Rikka with Graph

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6090

题目意思:给出n个点,m条边,构成一个无向图,使得任意两个点之间的之间的距离之和,两个联通的点之间距离等于他们之间需要经过的边数,两个不连通的点之间的距离是n,求这个距离和的最小值。

思路:首先明确一点可以联通的两个点之间的距离要么是1,要么是2,我也不知道怎么说,反正就是xjb贪心,我们思考一个问题如果m==n-1,那么刚好是一棵树,这个时候最小的距离一定是形成一棵一个根连着n-1个点的数。我们根据这一点分成以下这四种情况

1.n*(n-1)/2<=m:这种情况下,m的数量足以形成一个完全图。

2.m>n-1&&m<n*(n-1)/2:这种情况下,足以形成一棵树,但是不足以形成一个完全图。

3.m==n-1:这种情况下刚好形成一棵树

4.m<n-1:这种情况下不够形成一棵树,我们可肯定在边够的范围内先构造一个树,剩下的之间距离是n,xjb往上加就好了。

代码:

 //Author: xiaowuga
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <ctime>
#include <map>
#include <bitset>
#include <cctype>
#define maxx INT_MAX
#define minn INT_MIN
#define inf 0x3f3f3f3f
#define mem(s,ch) memset(s,ch,sizeof(s))
#define nc cout<<"nc"<<endl
#define sp " "
const long long N=;
using namespace std;
typedef long long LL;
typedef int II;
int main() {
ios::sync_with_stdio(false);cin.tie();
LL n,m;
II T;
cin>>T;
while(T--){
cin>>n>>m;
if(n*(n-)/<=m){
cout<<n*(n-)<<endl;
}
else if(m>n-&&m<n*(n-)/){
cout<<(+*(n-))*(n-)-(m-n+)*<<endl;
}
else if(m==n-){
cout<<(+*(n-))*(n-)<<endl;
}
else if(m<n-){
LL p=m+;
LL q=n-p;
cout<<(+*(p-))*(p-)+p*q*n*+q*(q-)*n<<endl;
}
}
return ;
}

HDU6092——Rikka with Subset

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6092

题目意思:给出n,m,n表示A数组元素的数量,m表示A数组的元素之和,给出一个B数组,下标从0-m,代表原来A数组(具有n个数)中和为i(代表B数组中的下标)的子集数量,现在要还原A数组,将A数组的元素从小到大输出。

思路:比赛的时候没想出来,看了题解说是一个反向背包,于是反向推了一下。我们假设A数组的第i个是x,那么对于B数组的影响就是所有 B[i]都增加了B[i-x],表示原来集合和等于i-x的因为多了A中的第i个数x,使得集合和为i的数量怎么加了原来B数组中B[i-x]的数量。然后我们想当与反向推,就像题解里面说的每次对于A数组中的每一个数,我们都把B数组从1扫到m,发现的第一个不等于0的数就是,就是当前剩余的元素里面最小的一项,具体看代码吧!

代码:

 //Author: xiaowuga
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <ctime>
#include <map>
#include <bitset>
#include <cctype>
#define maxx INT_MAX
#define minn INT_MIN
#define inf 0x3f3f3f3f
#define mem(s,ch) memset(s,ch,sizeof(s))
#define nc cout<<"nc"<<endl
#define sp " "
const long long N=;
using namespace std;
typedef long long LL;
typedef int II;
LL n,m;
LL B[N];
LL ans[N];
int main() {
ios::sync_with_stdio(false);cin.tie();
II T;
cin>>T;
while(T--){
cin>>n>>m;
mem(B,);
mem(ans,);
for(II i=;i<=m;i++) cin>>B[i];
for(II i=;i<=n;i++){
for(II j=;j<=m;j++){
if(B[j]!=){
ans[i]=j;
for(II k=j;k<=m;k++){
B[k]-=B[k-j];
}
break;
}
}
}
int flag=;
sort(ans+,ans++n);
for(II i=;i<=n;i++){
if(flag){ cout<<ans[i];flag=;}
else cout<<" "<<ans[i];
}
cout<<endl;
}
return ;
}

2017 Multi-University Training Contest - Team 5——HDU6095&&HDU6090&&HDU的更多相关文章

  1. 2017 Multi-University Training Contest - Team 9 1005&&HDU 6165 FFF at Valentine【强联通缩点+拓扑排序】

    FFF at Valentine Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  2. 2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】

    Dying Light Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  3. 2017 Multi-University Training Contest - Team 9 1003&&HDU 6163 CSGO【计算几何】

    CSGO Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  4. 2017 Multi-University Training Contest - Team 9 1002&&HDU 6162 Ch’s gift【树链部分+线段树】

    Ch’s gift Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  5. 2017 Multi-University Training Contest - Team 9 1001&&HDU 6161 Big binary tree【树形dp+hash】

    Big binary tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  6. 2017 Multi-University Training Contest - Team 1 1003&&HDU 6035 Colorful Tree【树形dp】

    Colorful Tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  7. 2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】

    Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  8. 2017 Multi-University Training Contest - Team 1 1002&&HDU 6034 Balala Power!【字符串,贪心+排序】

    Balala Power! Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  9. 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】

    KazaQ's Socks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

随机推荐

  1. [svc]ssh生成key不交互

    ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "" 首次执行不交互 第二次再次执行会让输入y

  2. Vim-复制选中内容至系统剪贴板,光标移动到指定行的行首和行尾

    1.全选并复制到系统剪贴板 ggVG或ggvG 然后 "+y gg 让光标移到首行,在vim才有效,vi中无效 V 是进入Visual(可视)模式 G 光标移到最后一行 "+y 复 ...

  3. tornado部署

    1.为什么要运行多个tornado实例同步请求时,在应用处理过程中(如数据库查询,磁盘访问),服务器进程不能接受新请求.所以需要运行多个服务器进程实例.异步请求时,在应用处理时,服务器进程是非阻塞的, ...

  4. yii2中的事件和行为

    Event 事件 事件是为了解耦... 注册事件 使用"on add"添加属性,注册事件 使用on方法注册事件. 第三个参数$data是监听函数使用的参数, 第四个$append参 ...

  5. 10个Python 统计报表/图表图形类库

    matplotlib,官网:http://matplotlib.sourceforge.net/,Matplotlib 是一个由 John Hunter 等开发的,用以绘制二维图形的 Python 模 ...

  6. session监听器HttpSessionBindingListener

    首先我在网上查了一下session的真正销毁条件: 1调用 session.invalidate();方法 2 session到了设置或者默认的超时时间,自动销毁(关闭浏览器此session还未销毁, ...

  7. oracle 数据库中,应用程序里的连接探測语句的正确使用

    oracle 数据库中,应用程序里的连接探測语句的正确使用 本文为原创文章.转载请注明出处:http://blog.csdn.net/msdnchina/article/details/3851376 ...

  8. sama5d3 环境检测 gpio--yk测试

    说明: gpio的MAP关系 yk0--pioA7  yk1--pioA5   yk2--pioA9   yk3--pioA3   yk4--pioA1  yk5--pioA8    (端子从左--& ...

  9. C++中变量做数组长度

    在Java中,这是完全可以的,比如我们运行如下程序: package cn.darrenchan.storm; import java.util.Arrays; public class Test { ...

  10. 由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端,或打开对每个 Microsoft .NET Framework SDK 文档的跟踪并检查服务器跟踪日志。

    客户端调用WCF的时候报上面的错误,WCF只能序列化基础的数据类型,不能直接序列化SqlParameter类型,需要使用自定义类,然后在WCF服务端转换的方式解决: 自定义类代码如下: using S ...