关闭

Codeforces_43C_Lucky Tickets(贪心)

标签: Codeforces数论
591人阅读 评论(0) 收藏 举报
分类:

题型:数论


题意

      有n个纸片,每张纸片上有一个数,两张纸片拼接起来形成一个新的数,如歌这个数能够被3整除,那么就称这个数是Lucky Tickets。现在问最多拼出多少个Lucky Tickets。(拼过的纸片不能再拼)。


分析

根据性质,当一个数各个位上的数之和能够被3整除,则这个数能被3整除。

此题用贪心求解可过,下面证明贪心的正确性。

设有四个数a,b,c,d,若(a+b)%3=0,(a+c)%3=0,(c+d)%3=0,那么(b+d)%3=0。

证明:                             (a+b)%3=0                               ①

                                        (a+c)%3=0                               ②

                                        (c+d)%3=0                               ③

           ②合并得:       ((a+b)%3+(a+c)%3)%3=0

                                   → (2a+b+c)%3=0                         ④

           合并得:       ((a+c)%3+(c+d)%3)%3=0

                                   → (2c+a+d)%3=0                         ⑤

           ⑤合并的:       (3(a+c)+b+d)%3=0

                                   → (3(a+c)%3+(b+d)%3)%3=0

                                   ∵ 3(a+c)%3=0

                                   ∴ (b+d)%3=0

           得证。

上述证明说明:选ab拼接和cd拼接,与选ac拼接和bd拼接是一样的,所以只需贪心拼接即可。


代码

#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#define INF 0x7f7f7f7f
using namespace std;

struct Number {
    char str[10];
    int sum;
} a[12345];
bool vis[12345];
int n;

int main() {
    while(~scanf("%d",&n)) {
        for(int i=0; i<n; i++) {
            scanf("%s",a[i].str);
            a[i].sum=0;
            int len=strlen(a[i].str);
            for(int j=0; j<len; j++) {
                a[i].sum+=a[i].str[j]-'0';
            }
        }
        memset(vis,true,sizeof(vis));
        bool find=false;
        int ans=0;
        for(int i=0; i<n-1; i++) {
            if(vis[i]==false) continue;
            for(int j=i+1; j<n; j++) {
                if(vis[j]==false) continue;
                if((a[i].sum+a[j].sum)%3==0) {
                    ans++;
                    vis[i]=false;
                    vis[j]=false;
                    find=true;
                    break;
                }
            }
            if(find) continue;
        }
        printf("%d\n",ans);
    }
    return 0;
}


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

贪心算法(二)——一般背包问题

题目 有一个背包,最多放M kg的物体(物体大小不限); 有n个物体,每个物体的重量为Wi,每个物体完全放入背包后可获得收益Pi。问:如何放置能获得最大的收益? 注:背包问题分为两种,若每个...
  • u010425776
  • u010425776
  • 2017-04-05 21:19
  • 1735

【贪心算法】区间调度问题总结

1. 单区间调度问题问题定义:存在单一资源,有一组以时间区间形式表示的资源请求reqs={req-1, req-2, …, req-n},第i个请求希望占用资源一段时间来完成某些任务,这段时间开始于b...
  • hongchh
  • hongchh
  • 2016-08-11 16:07
  • 1861

0-1背包问题、贪心算法、动态规划

0-1背包问题
  • songshiMVP1
  • songshiMVP1
  • 2016-08-29 18:32
  • 4035

Codeforces 70C Lucky Tickets(数学+机智)

题意:给你一个maxx和maxy,让你选择一个上限x和y是的对于每一个a<=x, 在b=w的个数总和最大,并且 x*y最小(具体的看题目意思吧)。 这个题首先要知道一个性质,那就是x越大,符合条件的越...
  • CQUWEL
  • CQUWEL
  • 2016-02-01 22:41
  • 478

【数位DP】Codeforces Gym 100418J Lucky tickets

题意:设性质P:一个数能够整除它二进制表示下的1的个数。求[1,N]中满足性质P的数的个数。N<=10^19。思路:数位DP。首先这个数最多有64位,我们可以枚举1的个数x,然后求可以整除x的数的个数...
  • wu704035hai
  • wu704035hai
  • 2015-08-09 21:59
  • 551

CF64 C. Lucky Tickets

一做CF发现自己太水了,这题想了很久,想过几次无果后终究是看了watashi的程序,。。。不懂的太多了,要加紧学习了。      如果a*b=rev(a)*rev(b)(其中rev(b)为b的逆序,从...
  • ahero_happy
  • ahero_happy
  • 2011-04-04 17:36
  • 517

codeforces 121C C. Lucky Permutation(数论+构造)

题目链接:codeforces 121C题目大意:问字典序第k大的1~n的排列中的只由4和7组成的数为位置上具有相同性质的数的个数。题目分析: 首先因为k≤109k \leq 10^9,所以需要变化的...
  • qq_24451605
  • qq_24451605
  • 2015-08-26 20:17
  • 503

URAL1036Lucky Tickets(DP+高精度)

You are given a number 1 ≤ N ≤ 50. Every ticket has its 2N-digit number. We call a ticket lucky, if ...
  • mowayao
  • mowayao
  • 2013-11-11 13:20
  • 510

寒假集训.Lucky Tickets. Easy!

Lucky Tickets. Easy! Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %...
  • a576699534
  • a576699534
  • 2015-02-01 13:18
  • 451

POJ 2346 Lucky tickets(数位dp求前几位数字和)

Lucky tickets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3376 Accepted: 22...
  • yiya_eryi
  • yiya_eryi
  • 2017-07-24 16:59
  • 88
    个人资料
    • 访问:120901次
    • 积分:3197
    • 等级:
    • 排名:第12383名
    • 原创:207篇
    • 转载:1篇
    • 译文:0篇
    • 评论:27条
    文章分类
    最新评论