hdu 1789 小想法题

思路: 因为每天只能做一种作业  对每个作业都是均等的(不看分数)  有点贪心思想(尽量先写分数大的作业   且尽量在快到截止日期时写 )   理解这点就差不多了

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;

struct node
{
    int deal;
    int gard;
}num[1100];
int cmp(node a,node b)
{
    return a.gard>b.gard;
}
int main()
{
    int T,n,i,j,mark[1010];
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        scanf("%d",&num[i].deal);
        for(i=1;i<=n;i++)
        scanf("%d",&num[i].gard);
        memset(mark,0,sizeof(mark));
        int sum=0;
        sort(num+1,num+1+n,cmp);
        for(i=1;i<=n;i++)
        {
            int flash=0;
            for(j=num[i].deal;j>=1;j--)
            {
                if(mark[j]==0) {mark[j]=1;flash=1;break;}
            }
            if(flash==0) sum+=num[i].gard;
        }
        printf("%d\n",sum);
    }
    return 0;
}
时间: 2024-10-29 00:45:38

hdu 1789 小想法题的相关文章

hdu 4970小想法题

不要局限于线段树    超时的活,  还以为是自己写矬了       仔细想想    题目只是要你求出i到n的攻击和 就行了   没有别的    O(n)时间复杂度 #include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> using namespace std; __int64 add[100010],del[100010]; __int64 sum[100010

hdu 5063 小想法

题意给出最多不超过50次询问   顾对每次询问倒着去找起始位置 中间标记平方了多少次    然后用找到的数去平方就行 #include<stdio.h> #include<string.h> #include<iostream> using namespace std; int main() { int T,n,m,i,j; int num[100010],power; char str[5]; __int64 a; scanf("%d",&

HDU 2410 Barbara Bennett&#39;s Wild Numbers (想法题)

题目链接:HDU 2410 Barbara Bennett's Wild Numbers 题意:给出两串数w,s(长度相同),第一串中有"?",问"?"取的值使w对应的数大于s对应的数 的最大方案数. 思路:W,S一一对应比较: 遇到第一个'?'之前比较情况 1.w[i]<s[i] 方案数0种:break: 2.w[i]>s[i] break.之后有n个''?' 方案数就有10的n次方种. 3.w[i]=s[i] 继续比较,重复1.2两个条件. 遇到'?

HDU 2410 Barbara Bennett&amp;#39;s Wild Numbers (想法题)

题目链接:HDU 2410 Barbara Bennett's Wild Numbers 题意:给出两串数w,s(长度同样),第一串中有"?",问"?"取的值使w相应的数大于s相应的数 的最慷慨案数. 思路:W,S一一相应比較: 遇到第一个'?'之前比較情况 1.w[i]<s[i] 方案数0种:break: 2.w[i]>s[i] break. 之后有n个''?' 方案数就有10的n次方种. 3.w[i]=s[i] 继续比較.反复1.2两个条件. 遇到'

HDU - 5806 NanoApe Loves Sequence Ⅱ 想法题

http://acm.hdu.edu.cn/showproblem.php?pid=5806 题意:给你一个n元素序列,求第k大的数大于等于m的子序列的个数. 题解:题目要求很奇怪,很多头绪但写不出,选择跳过的题,简称想法题. 首先考虑区间的更新方法:区间左端l不动,右端r滑动, 滑到有k个数>=m时,此区间符合条件,并且发现右端点再往右滑到底,此条件一直符合(因为若加入的数小于"第K大的数",则毫无影响.若不然,加入该数会产生一个新的第k大数,保证>="第K大

HDU 4972 Bisharp and Charizard 想法题

Bisharp and Charizard Time Limit: 1 Sec  Memory Limit: 256 MB Description Dragon is watching NBA. He loves James and Miami Heat. Here's an introduction of basketball game:http://en.wikipedia.org/wiki/Basketball. However the game in Dragon's version i

记录下我曾经那些认为的小想法

每隔一段时间,脑袋瓜子就会冒出一些自认为是小想法. 这篇文章就记录下我以前的一些小想法以及以后的小想法,一种想记录下来,一直也没有机会和时间.直到现在一琢磨,赶紧记录下来吧,也许很多时候的灵光一闪真是一个不错的idea.记录下来前面想起的和现在以及以后的idea,因此这篇文章会不断地实时更新,越来越完善. IDea1 2012年,刚步入高中的时候的第二学期,依稀记得那时候的智能手机还没有想象的普遍,在校门口当时接触了第一台智能机,一个高仿iphone 4s的手机,当时和同学一狠心每人买了一台.当

HDU 4500 小Q系列故事——屌丝的逆袭

腾讯的题目,一条简单的搜索题目,适合初学者练习代码能力,或者是高手休息脑子的题,呵呵,不需要动脑了,只动手打代码就过了. 不过腾讯这故事有点坏啊,给人透露了两个信息: 1 腾讯不拘一格降人才 2 进入腾讯就可以屌丝逆袭了 腾讯是不是还想说腾讯的mm特别多? 呵呵,出题不忘给自己宣传一下. #include <stdio.h> #include <limits.h> const int MAX_NM = 20; int N, M; int matrix[MAX_NM][MAX_NM]

hdu 4932 /bestcoder B题 #4 /思维题

题意:给一个数列(整数),用一些不相交的区间去覆盖(只能是用端点去覆盖,端点可以交).而且区间出度相等.求最大区间长度. 开始一下就敲了,枚举每个区间长度,判断合法,更新最大.但是后来一看小数,感觉不行,改为二分,后来还是挂了... 赛后才知道,二分的时候,答案必需要满足单调性啊,这里小的数据不行,大的数据可以行!如 0 1 5 6 10, 3不行,4行. 后来才知道,枚举时,每个差值的一半也是可以的:仔细想想很容易证明.(水,坑) #include<iostream> #include<