HDU6098 Inversion

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

题目意思:题目很短,给出一个数组,下标从1开始,现在输出一个数组,下标为j的数为表示原来的数组中下标j%i(当前数组中的下标)!=0中最大的数。

思路:很简单,将原来的一个数组的值带下标组成一个结构体,按照值得大小从大到小排序,然后对于每次询问从头扫第一个符合j%i!=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;
struct node{
LL val,pos;
bool operator <(const node& m) const{
return val>m.val;
}
}a[N];
II n;
int main() {
ios::sync_with_stdio(false);cin.tie();
II T;
cin>>T;
while(T--){
cin>>n;
for(II i=;i<=n;i++){
cin>>a[i].val;
a[i].pos=i;
}
sort(a+,a+n+);
II flag=;
for(II i=;i<=n;i++){
for(II j=;j<=n;j++){
if(a[j].pos%i!=){
if(flag) {cout<<a[j].val;flag=;}
else cout<<sp<<a[j].val;
break;
}
}
}
cout<<endl;
}
return ;
}

HDU6106 Classes

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

题目意思:有n个班级,给出一个班选a课程,选b课程,选c课程的,选ab课程的,选ac课程的,选bc课程的人数。有的班数据可能有错(比如给出的数据导致选某个课的人数为负数),我们直接忽略。找出班级人数最大的班级,并输出人数。

思路:这里说明一下带有o前缀代表只选了选某个课程的人数,我们可以画一个ven图。发现存在以下关系

oab=ab-abc;  oa=a-ab-ac+abc;
oac=ac-abc;  ob=b-ab-bc+abc;
obc=bc-abc;  oc=c-ac-bc+abc;

以上所有的算出来否不能为负数才是合法的数据,否则忽略直接计算下一组数据。

如果是合法,oa+ob+oc+oab+obc+oac+abc就是这个班的人数,在数据是合法的班里面找出人数最多的班输出他们的人数。

代码:

 //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;
II n,a,b,c,ab,ac,bc,abc;
int main() {
ios::sync_with_stdio(false);cin.tie();
II T;
cin>>T;
while(T--){
II ans=;
cin>>n;
for(II i=;i<n;i++){
cin>>a>>b>>c>>ab>>bc>>ac>>abc;
II oab=ab-abc;
II oac=ac-abc;
II obc=bc-abc;
if(oab<||obc<||oac<) continue;
II oa=a-ab-ac+abc;
II ob=b-ab-bc+abc;
II oc=c-ac-bc+abc;
if(oa<||ob<||oc<) continue;
ans=max(ans,oa+ob+oc+oab+obc+oac+abc);
}
cout<<ans<<endl;
}
return ;
}

HDU6103 Kirinriki

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

题目意思:在一个字符串S里面找出两个不重叠且长度相等的长度为n的子串,使得两个子串的dist不大于m,问n的最大值是多少?

思路:比赛的时候智障,没想到枚举中心,尽然没有写出来,这里说下为什么枚举中心。因为作为答案两个字符串一定关于某一个中心对称。我们以某个中心,从两边两个指针,往里面缩进,从而找到dist最近m的边界值。然后头尾指针缩进一格,减去头尾指针的贡献。然后继续直到下一次接近m的边界值。过程中记录长度的最大值。这里注意奇数中心和偶数中心的问题,我因此wa了一发。orz

代码:

 //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;
char q[N];
int main() {
II T;
scanf("%d",&T);
II ct,sum;
while(T--){
II m;
scanf("%d",&m);
getchar();
scanf("%s",q);
II ans=,ct,sum;
II len=strlen(q);
for(II i=;i<len-;i++){
II lim=min(i+,len-i-);
II l=i-lim+,r=i+lim;
II x=l,y=r;
sum=ct=;
for(II k=;k<lim;){
II t=abs(q[x+k]-q[y-k]);
if(sum+t<=m){
sum+=t;
ct++;
ans=max(ans,ct);
k++;
}
else{
sum-=abs(q[l]-q[r]);
l++;r--;
ct--;
}
}
lim=min(i,len-i-);
x=l=i-lim;y=r=i+lim;
sum=ct=;
for(II k=;k<lim;){
II t=abs(q[x+k]-q[y-k]);
if(sum+t<=m){
sum+=t;
ct++;
ans=max(ans,ct);
k++;
}
else{
sum-=abs(q[l]-q[r]);
l++;r--;
ct--;
}
}
}
cout<<ans<<endl;
}
return ;
}

2017 Multi-University Training Contest - Team 6—HDU6098&&HDU6106&&HDU6103的更多相关文章

  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. 根据返回值动态加载select

    // 路由 if (return_routeChoice != null && return_routeChoice != "") { for (var i = 0 ...

  2. FreeRtos——多任务

    官方资料整理测试: 多任务和单任务几乎没有差别.只用多创建一个或多个任务,其他地方和单任务时相同. static void AppTaskCreate(void) { xTaskCreate(vTas ...

  3. dp之多重背包hdu1059

    题意:价值为1,2,3,4,5,6. 分别有n[1],n[2],n[3],n[4],n[5],n[6]个.求能否找到满足价值刚好是所有的一半的方案. 思路:简单的多重背包,我建议多重背包都用二进制拆分 ...

  4. Ecshop安装的坑,建议不要使用!

    最近因为工作的需要,安装了下ecshop,这个曾经的火爆开源程序,现在也呈现出疲态. 1.请看官方的运行环境推荐: 服务器端运行环境推荐·php版本5.0以上5.3以下的版本(推荐使用5.2系列版本) ...

  5. 匈牙利命名法、骆驼命名法、帕斯卡(pascal)命名法 C#命名规范

    匈牙利命名法.骆驼命名法.帕斯卡(pascal)命名法 C#命名规范 一.匈牙利命名法:广泛应用于象Microsoft Windows这样的环境中. Windows 编程中用到的变量(还包括宏)的命名 ...

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

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

  7. 基于vitamio的网络电视直播源代码

    这个项目是基于vitamio的网络电视直播源代码.也是一个使用了vitamio的基于安卓的网络直播项目源代码,可能如今网上已经有非常多类似这种视频播放应用了.只是这个还是相对来说比較完整的,希望这个案 ...

  8. C语言 · 冒泡法排序

    算法提高 冒泡法排序   时间限制:1.0s   内存限制:512.0MB      输入10个数,用“冒泡法”对10个数排序(由小到大)这10个数字在100以内. 样例输入 1 3 6 8 2 7 ...

  9. Linux上的free命令简介

    每次使用free时都比较迷惑,对于上面的内容一直都不是很清楚,今天仔细查了以下,和大家一起分享以下: 先看一下free的运行结果: free打印出的内存信息主要分为两种,一种是安装的内存,一种是用磁盘 ...

  10. hdu 1201:18岁生日(水题,闰年)

    18岁生日 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...