zoukankan      html  css  js  c++  java
  • DAY 1

    DAY 1 morning

    立方数(cubic)

    Time Limit:1000ms Memory Limit:128MB

    题目描述

    LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方数,例如1,8,27就是最小的3个立方数。
    现在给定一个数P,LYK想要知道这个数是不是立方数。
    当然你有可能随机输出一些莫名其妙的东西来骗分,因此LYK有T次询问~

    输入格式(cubic.in)

    第一行一个数T,表示有T组数据。
    接下来T行,每行一个数P。
    

    输出格式(cubic.out)

    输出T行,对于每个数如果是立方数,输出“YES”,否则输出“NO”。
    

    输入样例

    3
    8
    27
    28
    

    输出样例

    YES
    YES
    NO
    

    数据范围

    对于30%的数据p<=100。
    对于60%的数据p<=10^6。
    对于100%的数据p<=10^18,T<=100。
    



    立方数2(cubicp)

    Time Limit:1000ms Memory Limit:128MB

    题目描述

    LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方数,例如1,8,27就是最小的3个立方数。
    LYK还定义了一个数叫“立方差数”,若一个数可以被写作是两个立方数的差,则这个数就是“立方差数”,例如7(8-1),26(27-1),19(27-8)都是立方差数。
    现在给定一个数P,LYK想要知道这个数是不是立方差数。
    当然你有可能随机输出一些莫名其妙的东西,因此LYK有T次询问~
    这个问题可能太难了…… 因此LYK规定P是个质数!

    输入格式(cubicp.in)

    第一行一个数T,表示有T组数据。
    接下来T行,每行一个数P。
    

    输出格式(cubicp.out)

    输出T行,对于每个数如果是立方差数,输出“YES”,否则输出“NO”。
    

    输入样例

    5
    2
    3
    5
    7
    11
    

    输出样例

    NO
    NO
    NO
    YES
    NO
    

    数据范围

    对于30%的数据p<=100。
    对于60%的数据p<=10^6。
    对于100%的数据p<=10^12,T<=100。
    



    猜数字(number)

    Time Limit:1000ms Memory Limit:128MB

    题目描述

    LYK在玩猜数字游戏。
    总共有n个互不相同的正整数,LYK每次猜一段区间的最小值。形如[li,ri]这段区间的数字的最小值一定等于xi。
    我们总能构造出一种方案使得LYK满意。直到…… LYK自己猜的就是矛盾的!
    例如LYK猜[1,3]的最小值是2,[1,4]的最小值是3,这显然就是矛盾的。
    你需要告诉LYK,它第几次猜数字开始就已经矛盾了。
    

    输入格式(number.in)

    第一行两个数n和T,表示有n个数字,LYK猜了T次。
    接下来T行,每行三个数分别表示li,ri和xi。
    

    输出格式(number.out)

    输出一个数表示第几次开始出现矛盾,如果一直没出现矛盾输出T+1。
    

    输入样例

    20 4
    1 10 7
    5 19 7
    3 12 8
    1 20 1
    

    输出样例

    3
    

    数据范围

    对于50%的数据n<=8,T<=10。
    对于80%的数据n<=1000,T<=1000。
    对于100%的数据1<=n,T<=1000000,1<=li<=ri<=n,1<=xi<=n(但并不保证一开始的所有数都是1~n的)。
    

    Hint

    建议使用读入优化

    inline int read()
    {
    	int x = 0, f = 1;
    	char ch = getchar();
    	for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
    	for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
    	return x * f;
    }
    





    DAY 1 Afternoon

    水题(water)

    Time Limit:1000ms Memory Limit:128MB

    题目描述

    LYK出了道水题。
    这个水题是这样的:有两副牌,每副牌都有n张。
    对于第一副牌的每张牌长和宽分别是xi和yi。对于第二副牌的每张牌长和宽分别是aj和bj。第一副牌的第i张牌能覆盖第二副牌的第j张牌当且仅当xi>=aj并且yi>=bj。(注意牌不能翻转)当然一张牌只能去覆盖最多一张牌,而不能覆盖好多张。
    LYK想让两副牌的各n张一一对应叠起来。它想知道第二副牌最多有几张能被第一副牌所覆盖。

    输入格式(water.in)

    第一行一个数n。
    接下来n行,每行两个数xi,yi。
    接下来n行,每行两个数aj,bj。
    

    输出格式(water.out)

    输出一个数表示答案。
    

    输入样例

    3
    2 3
    5 7
    6 8
    4 1
    2 5
    3 4
    

    输出样例

    2
    

    数据范围

    对于50%的数据n<=10。
    对于80%的数据n<=1000。
    对于100%的数据1<=n<=100000,1<=xi,yi,aj,bj<=10^9。
    



    梦境(dream)

    Time Limit:1000ms Memory Limit:128MB

    题目描述

    LYK做了一个梦。
    这个梦是这样的,LYK是一个财主,有一个仆人在为LYK打工。
    不幸的是,又到了月末,到了给仆人发工资的时间。但这个仆人很奇怪,它可能想要至少x块钱,并且当LYK凑不出恰好x块钱时,它不会找零钱给LYK。
    LYK知道这个x一定是1~n之间的正整数。当然抠门的LYK只想付给它的仆人恰好x块钱。但LYK只有若干的金币,每个金币都价值一定数量的钱(注意任意两枚金币所代表的钱一定是不同的,且这个钱的个数一定是正整数)。LYK想带最少的金币,使得对于任意x,都能恰好拼出这么多钱。并且LYK想知道有多少携带金币的方案总数。
    具体可以看样例。

    输入格式(dream.in)

    第一行一个数n,如题意所示。
    

    输出格式(dream.out)

    输出两个数,第一个数表示LYK至少携带的金币个数,第二数表示方案总数。 
    

    输入样例

    6
    

    输出样例

    3 2
    

    样例解释

    LYK需要至少带3枚金币,有两种方案,分别是{1,2,3},{1,2,4}来恰好得到任意的1~n之间的x。
    

    输入样例2

    10
    

    输出样例2

    4 8
    

    数据范围

    对于30%的数据n<=10。
    对于60%的数据n<=100。
    对于100%的数据n<=1000。
    



    动态规划(dp)

    Time Limit:1000ms Memory Limit:128MB

    题目描述

    LYK在学习dp,有一天它看到了一道关于dp的题目。
    这个题目是这个样子的:一开始有n个数,一段区间的价值为这段区间相同的数的对数。我们想把这n个数切成恰好k段区间。之后这n个数的价值为这k段区间的价值和。我们想让最终这n个数的价值和尽可能少。
    例如6个数1,1,2,2,3,3要切成3段,一个好方法是切成[1],[1,2],[2,3,3],这样只有第三个区间有1的价值。因此这6个数的价值为1。
    LYK并不会做,丢给了你。

    输入格式(dp.in)

    第一行两个数n,k。
    接下来一行n个数ai表示这n个数。
    

    输出格式(dp.out)

    一个数表示答案。 
    

    输入样例

    10 2
    1 2 1 2 1 2 1 2 1 2
    

    输出样例

    8
    

    数据范围

    对于30%的数据n<=10。
    对于60%的数据n<=1000。
    对于100%的数据1<=n<=100000,1<=k<=min(n,20),1<=ai<=n。
    其中有30%的数据满足ai完全相同均匀分布在所有数据中。
    




    预计得分 100+60--100+20 60--80+30+0

    实际得分 0 + 0 + 0 0 +10+0

    morning

    三个文件错误

    将一份错误的文件复制了3遍

    其中一份还注释了

    	freopen("cubic.in","r",stdout);
    	freopen("cubic.in","w",stdin);
    	freopen("number.in","r",stdout);
    	freopen("number.in","w",stdin);
    //	freopen("cubicp.in","r",stdout);
    //	freopen("cubicp.in","w",stdin);
    

    于是乎全部Good Game!
    第三题手推了几个规律

    //如果两段区间拥有相同的最小值
    //那么最小值一定存在于两区间的交集,如果没有交集则错误
    //如果一段区间[l1,r1]拥有一个最小值s_1,另一段区间[l2,r2]存在一个最小值s_2,且s_2>s_1,且 [l1,r1]in [l2,r2]那么一定错误
    //如果两个有交集的区间分别存在最小值s_1,s2,若区间1拥有较大的最小值,区间[r1+1,r2]拥有较小的最小值 
    //当某区间最小值为s_1,且他的一个子集最小值为大于s_1的一个数,则…… 
    

    然后利用第一、二个规律手造了1组数据卡掉了姜箫睿,zzlzk(xjjppm),ZlycerQan学长的程序

    6 3
    1 6 6
    4 5 7
    1 6 6

    afternoon

    第一题最大流dinic

    N^2枚举建图时使用了错误的break;
    然后GG

    同样的错误还出现在旁边的ZlycerQan学长上

    剪枝错误,GG

    第二题

    手玩(30\%,nleq 10)的数据

    结果玩错了,得了10分

    搜索和写的好看的dp能A这道题

    不是不会写,就是不想写搜索而且dp状态并没有想到怎么表示状态

    第三题

    rand()

  • 相关阅读:
    Java遍历Map、List、Array
    自签名SSL生成
    oracle_round
    Timestamp_时间戳
    oracle_substr
    eval
    orcale_聚合函数
    oracle_decode
    js_JSON
    sql拼接
  • 原文地址:https://www.cnblogs.com/qdscwyy/p/7748104.html
Copyright © 2011-2022 走看看