2015-01-24 03:16:28

思路:仅div2场,4000+人....

  为了模拟div1气氛,先开了C,发现就是找规律乱搞....不幸细节写错wa两发,30+min才过的。。之后快速搞定了A、B。

  E题的话...知道就是个双权最短路...硬是被我写成记忆化搜索...后来才发现不是DAG,不能用DP求最短路!!!(太逗比了...)。。。赛后用Spfa搞掉了QAQ。。

  D题是个数位DP...

A:结构体排序

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cstdlib>
 4 #include <cmath>
 5 #include <vector>
 6 #include <map>
 7 #include <set>
 8 #include <stack>
 9 #include <queue>
10 #include <string>
11 #include <iostream>
12 #include <algorithm>
13 using namespace std;
14 
15 #define MEM(a,b) memset(a,b,sizeof(a))
16 #define REP(i,n) for(int i=1;i<=(n);++i)
17 #define REV(i,n) for(int i=(n);i>=1;--i)
18 #define FOR(i,a,b) for(int i=(a);i<=(b);++i)
19 #define RFOR(i,a,b) for(int i=(a);i>=(b);--i)
20 #define MP(a,b) make_pair(a,b)
21 
22 typedef long long ll;
23 typedef pair<int,int> pii;
24 const int INF = (1 << 30) - 1;
25 
26 int n,k,an[1000];
27 struct node{
28     int a,id;
29 }no[1000];
30 
31 bool cmp(node aa,node bb){
32     return aa.a < bb.a;
33 }
34 
35 int main(){
36     scanf("%d%d",&n,&k);
37     REP(i,n){
38         scanf("%d",&no[i].a);
39         no[i].id = i;
40     }
41     sort(no + 1,no + n + 1,cmp);
42     int ans = 0;
43     REP(i,n){
44         k -= no[i].a;
45         if(k < 0) break;
46         ans++;
47         an[i] = no[i].id;
48     }
49     printf("%d\n",ans);
50     if(ans == 0) return 0;
51     REP(i,ans - 1) printf("%d ",an[i]);
52     printf("%d\n",an[ans]);
53     return 0;
54 }
View Code

相关文章:

  • 2022-12-23
  • 2021-06-05
  • 2021-05-30
  • 2022-02-09
  • 2021-08-12
  • 2021-06-13
  • 2021-07-01
  • 2022-01-01
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案