2017 icpc 西安网络赛

F. Trig Function

样例输入

2 0
2 1
2 2

样例输出

998244352
0
2

找啊找啊找数列和论文。cosnx可以用切比雪夫多项式弄成(cosx)的多项式,然后去找到了相关的公式:

然后写个快速幂预处理啥的,很快就解决了~

 1 #include<bits/stdc++.h>
 2 #define clr(x) memset(x,0,sizeof(x))
 3 #define clr_1(x) memset(x,-1,sizeof(x))
 4 #define LL long long
 5 #define mod 998244353
 6 using namespace std;
 7 LL jc[10010],djc[10010];
 8 LL n,m,k,ans;
 9 LL quick_pow(LL x,LL n)
10 {
11     LL res=1;
12     x=(x%mod+mod)%mod;
13     while(n)
14     {
15         if(n&1)
16             res=res*x%mod;
17         x=x*x%mod;
18         n>>=1;
19     }
20     return res;
21 }
22
23 void init()
24 {
25     jc[1]=jc[0]=1;
26     for(int i=2;i<=10000;i++)
27         jc[i]=(jc[i-1]*i)%mod;
28     djc[10000]=quick_pow(jc[10000],mod-2);
29     for(int i=9999;i>=1;i--)
30         djc[i]=djc[i+1]*(i+1)%mod;
31     djc[0]=1;
32     return ;
33 }
34 int main()
35 {
36     init();
37     while(scanf("%lld%lld",&n,&m)!=EOF)
38     {
39         if(m>n || m<0 || (n-m)%2!=0)
40         {
41             printf("0\n");
42             continue;
43         }
44         ans=(n-m)/2%2==1?-1:1;
45         ans=(ans*djc[m]*n%mod+mod)%mod;
46         if(n-m<=n+m-2)
47             for(LL i=n-m+2;i<=n+m-2;i+=2)
48                 ans=ans*(i%mod)%mod;
49         else
50             for(LL i=n-m;i>n+m-2;i-=2)
51                 ans=ans*quick_pow(i,mod-2)%mod;
52         printf("%lld\n",ans);
53     }
54     return 0;
55 }

E。 Maximum Flow

样例输入

2

样例输出

1


这题可以用最大流最小割推推,但我~找规律的2333。

首先是2^k的n(默认n--了),那么所有的从0出来的流都能到达终点,也就是流量为(n+1)*n/2。然后写个最大流打个表,然后将i和i-1作差。可以发现在2^k~2^(k+1)的数中,差为2(2^0+1)每隔2个出现,差为5(2^2+1)每隔4个出现,17(2^4+1)每隔8个出现。。。依此类推。然后你懂得~。

 1 #include<bits/stdc++.h>
 2 #define clr(x) memset(x,0,sizeof(x))
 3 #define LL long long
 4 #define mod 1000000007
 5 using namespace std;
 6 LL quick_pow(LL x, LL n) {
 7     LL res = 1;
 8     x=(x%mod+mod)%mod;
 9     while(n) {
10         if(n&1)
11             res=res*x% mod;
12         n >>=1;
13         x =x*x% mod;
14     }
15     return res;
16 }
17 int main()
18 {
19     LL n,m,q,l,ans,k,kk;
20     int t;
21     while(scanf("%lld",&n)!=EOF)
22     {
23         t=0;
24         n--;
25         m=n;
26         while(m)
27         {
28             t++;
29             m>>=1;
30         }
31         q=1;
32         m=(q<<(t-1));
33         ans=(m%mod)*((1+m)%mod)%mod;
34         ans=ans*quick_pow(2,mod-2)%mod;
35         n-=m;
36         kk=1;
37         k=2;
38         while(k<=n+kk)
39         {
40             ans=(ans%mod+(((n+kk)/k)%mod)*((kk%mod)*(kk%mod)%mod+1)%mod)%mod;
41             if(k==LLONG_MAX)
42                 break;
43             kk=k;
44             k<<=1;
45         }
46         printf("%lld\n",ans);
47     }
48     return 0;
49 }

C.Sum

样例输入

1
1

样例输出

89999999999999999999999999

输入啥都输出233个9就行了。k个9无论乘多少数位和仍是k*9。

 1 #include<bits/stdc++.h>
 2 #define clr(x) memset(x,0,sizeof(x))
 3 #define clr_1(x) memset(x,-1,sizeof(x))
 4 #define LL long long
 5 using namespace std;
 6 int main()
 7 {
 8     LL n,m,k;
 9     int T;
10     scanf("%d",&T);
11     while(T--)
12     {
13         scanf("%lld",&n);
14         for(int i=1;i<=233;i++)
15             printf("9");
16         printf("\n");
17     }
18     return 0;
19 }

B.Coin

样例输入

2
2 1 1
3 1 2

样例输出

500000004
555555560

23333,n重伯努利实验概率分布题。设q=1-p,p为事件概率。Y为出现偶数次的概率。

所以Y=(1+(q-p)^n)/2,求个逆元啥的,快速幂啥的就能做出来了。

 1 #include<bits/stdc++.h>
 2 #define LL long long
 3 #define mod 1000000007
 4 using namespace std;
 5 LL quick_pow(LL x, LL n) {
 6     LL res = 1;
 7     x=(x%mod+mod)%mod;
 8     while(n) {
 9         if(n&1)
10             res=res*x% mod;
11         n >>=1;
12         x =x*x% mod;
13     }
14     return res;
15 }
16 int main()
17 {
18     LL p, q;
19     LL n;
20     int t;
21     scanf("%d", &t);
22     while(t --) {
23         scanf("%lld%lld%lld",&p, &q, &n);
24         LL a=quick_pow(p,mod-2);
25         a=(a*2*q)%mod;
26         a=(1-a+mod)%mod;
27         a=quick_pow(a,n)%mod;
28         a=(a+1)%mod;
29         LL b=quick_pow(2,mod-2)%mod;
30         a=(a*b)%mod;
31         printf("%lld\n", (a%mod+mod)%mod);
32     }
33 }



				
时间: 2024-10-27 13:08:01

2017 icpc 西安网络赛的相关文章

2017年icpc西安网络赛 Maximum Flow (找规律+数位dp)

题目 https://nanti.jisuanke.com/t/17118 题意 有n个点0,1,2...n-1,对于一个点对(i,j)满足i<j,那么连一条边,边权为i xor j,求0到n-1的最大流,结果取模,n<=1e18 分析 可以写个最大流对数据找规律,但没找出来…… 然后只能取分析了,首先最大流等价于最小割 明确一定,0->n-1这个要先割掉 然后我们贪心,希望有一些点割掉与0相连的边,一些点割掉与n-1相连的边 我们去观察每个点与0相连和与n-1相连的两条边权值,容易发现

2017 ICPC西安区域赛 A - XOR (线段树并线性基)

链接:https://nanti.jisuanke.com/t/A1607 题面: Consider an array AA with n elements . Each of its element is A[i]A[i] (1 \le i \le n)(1≤i≤n) . Then gives two integers QQ, KK, and QQ queries follow . Each query , give you LL, RR, you can get ZZ by the foll

2017 ACM-ICPC 西安网络赛 F.Trig Function Chebyshev多项式

自己太菜,数学基础太差,这场比赛做的很糟糕.本来想吐槽出题人怎么都出很数学的题,现在回过头来想还是因为自己太垃圾,竞赛就是要多了解点东西. 找$f(cos(x))=cos(nx)$中$x^m$的系数模998244353. wolfram alpha查了这个函数无果,得到了一堆sinx和cosx以及一个复指数的方程,其实应该推个几项再用数列查询查查看的,然后就会知道是Chebyshev polynomials 查WIKI直接就有通项公式了.然后就比较简单的了. 连方程都看不出来就别想着推导公式了.

2017 icpc 南宁网络赛

2000年台湾大专题...英语阅读输入输出专场..我只能说很强势.. M. Frequent Subsets Problem The frequent subset problem is defined as follows. Suppose UU={1, 2,\ldots-,N} is the universe, and S_{1}S?1??, S_{2}S?2??,\ldots-,S_{M}S?M?? are MM sets over UU. Given a positive constan

hdu5017:补题系列之西安网络赛1011

补题系列之西安网络赛1011 题目大意:给定一个椭球: 求它到原点的最短距离. 思路: 对于一个椭球的标准方程 x^2/a^2 + y^2/b^2 +z^2/c^2=1 来说,它到原点的最短距离即为min(a,b,c) 所以我们需要把原方程化为标准型. 这时候线代就排上用场了,注意到原方程是一个二次型. 化为标准型 1/(k1)*x^2+1/(k2)*y^2+1/(k3)*z^2=1 后  min(k1,k2,k3)即为答案 而这里的1/k1,1/k2,1/k3 就是二次型矩阵的特征值 如何求特

2018 ICPC 徐州网络赛

2018 ICPC 徐州网络赛 A. Hard to prepare 题目描述:\(n\)个数围成一个环,每个数是\(0\)~\(2^k-1\),相邻两个数的同或值不为零,问方案数. solution 将环变成链,设\(f[i][0\)~\(2]\),分别表示与第一个数相同,与第一个数不同,与第一个数相同,与第一个数的反相同.然后\(dp\)即可. 时间复杂度:\(O(n)\) B. BE, GE or NE solution 根据题目描述\(dp\)即可. 时间复杂度:\(O(nm)\) C.

2019 ICPC 南昌网络赛

2019 ICPC 南昌网络赛 比赛时间:2019.9.8 比赛链接:The 2019 Asia Nanchang First Round Online Programming Contest 总结 // 史上排名最高一次,开场不到两小时队友各A一题加水题共四题,排名瞬间升至三四十名 // 然后后三小时就自闭了,一题都没有突破...最后排名211 hhhh ? ? B. Fire-Fighting Hero 题意 队友做的,待补. ? AC代码 #include<cstdio> #includ

HDU 5008西安网络赛B题:后缀数组求第k小子串

思路:尼玛,这题搞了一天了,比赛的时候用了n^2的方法绝对T了,然后今天看别人代码看了一天才知道.后面感觉也挺容易的,就是没想到,之前做过SPOJ 694 705求过不同子串了,知道怎么求不同子串个数了,但是比赛的时候这个技巧竟然抛在脑后了,然后就不会了. 但是今天自己用了自己的两个后缀数组的模板(倍增和DC3)的都WA了,搞得自己真想跳楼去了!! 到现在都不知道到底是哪里错了,处理的方法和标准做法都一样,但是就是WA,然后用了别人的模板,再用自己的处理方法就过了,怀疑自己的两个模板是不是哪里错

2017西安网络赛 计蒜客 Trig Function 切比雪夫多项式

http://www.docin.com/p-385138324.html 用以表示cosnx的关于cosx的多项式的通项公式 http://www.docin.com/p-232710665.html?docfrom=rrela 数列通项公式的求法(论文) 问答里说这个是切比雪夫多项式 我查了一下哇.. 第一类切比雪夫多项式 #include <stdio.h> #include <cstring> #include <iostream> #include <m