2014/4/28 多校第九次

C:快速求N以内因数和,N以内互质数的和。

容斥版:

  1 #include <iostream>
2 #include <stdio.h>
3 #include <string.h>
4 #define maxn 1100000
5 #define LL long long
6 //N以内gcd(i,N)==1的i的和
7 using namespace std;
8 bool flag[maxn];
9 int prim[maxn/3],cnt;
10 int pri[209],exp[209],count;
11
12 void built(){
13 cnt=0;
14 memset(flag,0,sizeof(flag));
15 for(int i=2;i<maxn;i++){
16 if(!flag[i]){
17 prim[cnt++]=i;
18 for(int j=2;j*i<maxn;j++) flag[j*i]=true;
19 }
20 }
21 // for(int i=0;i<100;i++) cout<<prim[i]<<" ";cout<<endl;
22 }
23 void toprim(LL n){
24 int i=0;
25 count=0;
26 memset(exp,0,sizeof(exp));
27 while(i<cnt && prim[i]<=n){
28 if(n%prim[i]==0){
29 pri[count]=prim[i];
30 while(n%prim[i]==0) {
31 n=n/prim[i];
32 exp[count]++;
33 }
34 count++;
35 }
36 i++;
37 }
38 if (n>1) {
39 exp[count]=1;
40 pri[count++]=n;
41 }
42 // cout<<"count="<<count<<endl;
43 }
44 LL sigm(LL x){
45 return (1+x)*x/2;
46 }
47 LL Z(LL x,LL n){
48 return x*sigm(n/x);
49 }
50 LL solveB(LL n){
51 LL ans=0;
52 for(int i=1;i<(LL)(1<<count);i++){
53 int times=0;
54 LL mul=1;
55 for(int j=0;j<count;j++){
56 if(i&((LL)(1<<j))) {
57 times++;mul*=pri[j];
58 }
59 }
60 if (times%2) {
61 ans+=Z(mul,n);
62 }else {
63 ans-=Z(mul,n);
64 }
65 }
66 return ans;
67 }
68 LL ans=0;
69 LL getexp(LL p,int k){
70 LL ans=1;
71 while(k--) ans*=p;
72 return ans;
73 }
74 void dfs(LL n,LL t,int k){
75 if (k==count) {
76 if (t<=n) ans+=t;
77 return ;
78 }
79 for (int i=0;i<=exp[k];i++){
80 dfs(n,t*getexp((LL)pri[k],i),k+1);
81 }
82 return ;
83 }
84 LL solveA(LL n){//返回k*i==n,i<=n,sigm(i)
85 ans=0;
86 dfs(n,1,0);
87 return ans;
88 }
89 int N;
90 int main()
91 {
92 // freopen("out.txt","w",stdout);
93 built();
94 while(cin>>N){
95 // for(LL N=1;N<=300;N++){
96 toprim(N);
97 LL A=solveA(N);
98 LL B=sigm(N)-solveB(N);
99 printf("%lld\n",A-B);
100 }
101 return 0;
102 }

公式版:

H:

 1 #include <iostream>
2 #include <string.h>
3 #include <stdio.h>
4 #include <math.h>
5 #include <algorithm>
6 #include <stack>
7 #include <vector>
8 #include <map>
9 #include <queue>
10 #include <stdlib.h>
11 #define LL long long
12 #define INF 999999999
13 #define eps 0.00000001
14 #define maxn 1010
15 using namespace std;
16 int mat[maxn][maxn],up[maxn][maxn],lef[maxn][maxn],rig[maxn][maxn];
17 int main(){
18 int N,M;
19 while(~scanf("%d%d",&M,&N)){
20 swap(N,M);
21 for(int i=0;i<M;i++)
22 for(int j=0;j<N;j++)
23 scanf("%d",&mat[i][j]);
24 LL ans=0;
25 for(int i=0;i<M;i++){
26 int lo=-1,ro=N;
27 for(int j=0;j<N;j++){
28 if (mat[i][j]==0) {
29 up[i][j]=lef[i][j]=0;
30 lo=j;
31 }
32 else {
33 if (i==0) up[i][j]=1;else up[i][j]=up[i-1][j]+1;
34 if (i==0) lef[i][j]=lo+1;else lef[i][j]=max(lef[i-1][j],lo+1);
35 }
36 }
37 for(int j=N-1;j>=0;j--){
38 if (mat[i][j]==0){
39 rig[i][j]=N;
40 ro=j;
41 }else{
42
43 if (i==0) rig[i][j]=ro-1;else rig[i][j]=min(rig[i-1][j], ro-1);
44 int m=min(up[i][j],(rig[i][j]-lef[i][j]+1));
45 if (m<=0) continue;
46 ans=max(ans,(LL)m*(LL)m);
47 }
48 }
49 }
50
51 printf("%lld\n",ans);
52 }
53 return 0;
54 }

2014/4/28 多校第九次,码迷,mamicode.com

时间: 2024-10-21 03:53:06

2014/4/28 多校第九次的相关文章

HDU 4902 Nice boat 2014杭电多校训练赛第四场F题(线段树区间更新)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4902 解题报告:输入一个序列,然后有q次操作,操作有两种,第一种是把区间 (l,r) 变成x,第二种是把区间 (l,r) 中大于x的数跟 x 做gcd操作. 线段树区间更新的题目,每个节点保存一个最大和最小值,当该节点的最大值和最小值相等的时候表示这个区间所有的数字都是相同的,可以直接对这个区间进行1或2操作, 进行1操作时,当还没有到达要操作的区间但已经出现了节点的最大值跟最小值相等的情况时,说明

多校第九场:贪心+矩阵快速幂中间优化+线性递推&amp;线段树递推

HDU 4968 Improving the GPA 思路:贪心的搞吧!比赛的时候想了好久,然后才发现了点规律,然后乱搞1A. 因为贪心嘛!大的情况就是刚开始每个人的分数都是最大的最小值,即绩点4.0的最低分数85,然后最后一个数设为剩余的分数,然后如果小于60就从第一个分数补到这个分数来,然后最后一个分数还小于60,那就用第二个补--依次往下搞,那时我也不知道这样就搞出答案了,我还没证明这个对不对呢,哈哈. 小的情况:小的情况就是先假设每个人都是绩点最小的最大分数,即绩点2.0的最大分数69,

2014.7.28

技术: db.runCommand( { removeshard: "shardName" } ) 在防火墙开启端口: 在/etc/sysconfig/iptables里添加 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT /etc/init.d/iptables restart 英语: swan 杂项: 黑天鹅事件 2014.7.28,布布扣,bubuko.com

我的福州之行——2014.05.28

在回程的动车上面,感觉这次行程还是让我挺疲惫的. 这次福州比赛只有我们一支外省队伍参赛.我还是挺好奇学院为什么让我们公费过来的,毕竟不同于acm比赛有着悠久的历史和集中式的训练.这应该是我们学校初次以学校名义接触这类比赛. 于我,安全只是一个小兴趣,并没有花太多时间在上面.另外一个师兄也是被另一个队友W召唤过来的,他们俩是真的有在做网络安全的.起初我就类似于陪人过来玩玩的心情. 对于带队老师,我就不吐槽了,人挺好,但是思维跟我不在一个层面上,总的来说,喜欢凑热闹,喜欢形式.按照妹子说:那是参与度

Android应用开发相关下载资源(2014/06/28更新)

Android应用开发相关下载资源(2014/06/28更新) via http://blog.csdn.net/gyming/article/details/8168166/ http://dl.google.com/android/ADT-22.6.3.zip https://dl-ssl.google.com/android/repository/extras/intel/haxm-windows_r04.zip https://dl-ssl.google.com/android/repo

HDU 4970 Killing Monsters 多校第九场1011

Problem Description Kingdom Rush is a popular TD game, in which you should build some towers to protect your kingdom from monsters. And now another wave of monsters is coming and you need again to know whether you can get through it. The path of mons

HDU 4968 Improving the GPA 多校第九场1009

Problem Description Xueba: Using the 4-Point Scale, my GPA is 4.0. In fact, the AVERAGE SCORE of Xueba is calculated by the following formula: AVERAGE SCORE = ∑(Wi * SCOREi) / ∑(Wi) 1<=i<=N where SCOREi represents the scores of the ith course and Wi

工作感悟-2014.6.28

最近发生了太多的事情,也思考了很多.人在一天天变老的过程中是否能及时的总结,吸取经验教训,是否有规划,都决定着你的现在和未来. 当我们小时候,感觉大人真好,有自由,有钱花,还可以管小孩,要听他的,就是因为他是大人,应该懂很多东西.当我们是大人的时候,发现很多东西和道理其实自己也不懂.要不停的学习,但也有很多人随遇而安.每个人都会选择每个人的生活方式,但最重要的是你是否清楚的知道自己需要什么.我这几年一直在找方向--迷茫--找方向--迷茫不停的循环.当然在每个阶段的感悟和想法是不一样的. 两年前我

2014.04.28基于CPLD的LCOS场序彩色视频控制器设计

基于CPLD的LCOS场序彩色视频控制器设计 作者:宋丹娜,代永平,刘艳艳,商广辉 发表刊物:液晶与显示,2009 学习时间:2014.04.28 文章讲述了-- (和上一篇论文有些相似之处) 1. 基于CPLD的彩色场序控制器,采用了乒乓操作. 2. 采用了降低刷新频率的技术,降低了功耗. 从文章中学到了-- 1. 硅基液晶 Liquid-Crystal-on-Silicon,LCOS.它是一种反射式的液晶显示器,尺寸小,分辨率高. 2. 空间混色法:每个彩色像素分成三原色同时混合. 3. 场