| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 42026 人关注过本帖, 47 人收藏
标题:C论坛算法团队 首战 西安电子科技大学OJ
只看楼主 加入收藏
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
位运算是计算机最基础的运算方式,其它运算都是基于此的。一定要好好掌握。

重剑无锋,大巧不工
2012-12-11 15:26
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
回复 98楼 beyondyf
有没有专门介绍位运算的书籍之类的东西呀,我现在对它很感兴趣。

编程之路定要走完……
2012-12-11 15:31
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
专门的书还真不知道,一般语言教程的前几章都会讲的。离散数学和数电也都有。

这段代码,不是我不想讲,是我真不知道该怎么讲才好。

这样吧,你先理解一下下面的例子

清零
f = 1 << x; //形成第x位为1,其它位都是0的位串

f = ~f; //对f取反,作用是反转位串中的0和1

a = a & f; //将a中第x位清0

置1
f = 1 << x;
a = a | f; //将a中第x位置1


重剑无锋,大巧不工
2012-12-11 15:52
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
回复 100楼 beyondyf
非常感谢杨大哥,我现在清楚许多了。
一直以来对于位运算抱有敬畏的心理。

r=r&(~(1<<x))&(~(1<<y-2))|(1<<y)|(1<<y-1);


[ 本帖最后由 C_戴忠意 于 2012-12-11 19:41 编辑 ]

编程之路定要走完……
2012-12-11 18:57
chenliyangmy
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-12-11
收藏
得分:0 
使用高斯-赛德尔迭代法求内部各节点的温度

一各向同性的方形物体,尺寸80cm*80cm,导热系数30w/m.k,密度8000kg/m^3,比容5000j/kg.k,已知边界条件如图
图片附件: 游客没有浏览图片的权限,请 登录注册


求C语言高手,和传热学高手,急急急!!!!
问题补充:
用C语言编程,求解,节点自己划分


2012-12-11 19:35
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
Problem 1178 - 角划分平面
Time Limit: 1000MS   Memory Limit: 65536KB   Difficulty:
Total Submit: 574  Accepted: 344  Special Judge: No
Description
好了,相信你一定很快解决了直线划分平面吧,那如果是n个角最多能划分多少平面呢?
注意一下:一个角就是由一个定点,和从这个定点引出两条不重合的直线组成的。
请仔细考虑角跟直线有什么关系呢?
 
Input
有多组数据,每行一个n,n<=1000;
Output
每行输出n个个角最多能划分多少平面
Sample Input
1
2
3
Sample Output
2
7
16
Hint
Source

http://zhidao.baidu.com/question/152265151.html

程序代码:
#include <iostream>
using namespace std;

int main()
{
    int n;
    while(cin>>n)
        cout<<n*(n+1)/2+1<<endl;
    return 0;
}

编程之路定要走完……
2012-12-12 10:57
zhangsi1
Rank: 2
来 自:安徽芜湖
等 级:论坛游民
帖 子:38
专家分:87
注 册:2012-10-4
收藏
得分:0 
看热闹来了
2012-12-12 12:45
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
Problem 1037 - 智破机枪阵
二分图最大匹配,但是有个蛋疼的设定是机枪自己可以打自己= =

匈牙利算法即可


程序代码:
#include <iostream>
using namespace std;

int n,x[100],y[100],s[100],p[100];
int v[100],l[100],map[100][100],ans;

int find(int p)
{
    for (int i=0; i<n; i++)
    if (map[p][i] && !v[i])
    {
                  v[i]=1;
                  if (l[i]==-1 || find(l[i]))
                  {
                              l[i]=p; return 1; break;
                  }
    }
    return 0;
}
    
int main()
{
    int T;
    cin>>T;
    
    while (T--)
    {
          cin>>n;
          for (int i=0; i<n; i++) cin>>x[i]>>y[i]>>s[i]>>p[i];
          for (int i=0; i<n; i++)
            for (int j=0; j<n; j++)
            {
                int way=(y[j]-y[i])*(y[j]-y[i])+(x[j]-x[i])*(x[j]-x[i]);
                if (way>=s[i]*s[i] && way<=p[i]*p[i]) map[i][j]=1; else map[i][j]=0;
            }
          ans=0;
          for (int i=0; i<n; i++) l[i]=-1;
          for (int i=0; i<n; i++)
          {
              for (int j=0; j<n; j++) v[j]=0;
              if (find(i)) ans++;
          }
          cout<<ans<<endl;
    }
}
2012-12-12 14:38
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
Problem 1038 - Qinz大牛猜想
这题验证哥赫巴德猜想,先筛选,再模拟

程序代码:
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int flag[33000],N=32768,p,q;
    
    for (int i=0; i<=N; i++) flag[i]=0;
    for (int i=2; i<=sqrt(N); i++)
    if (!flag[i])
    {
        int j=i+i;
        while (j<=N)
        {
              flag[j]=1; j+=i;
        }
    }
    
    cin>>p;
    while (cin>>p)
    {
          q=0;
          if (p%2==0)
          for (int i=3; i<=p/2; i++)
            if (!flag[i] && !flag[p-i]) q++;
          cout<<q<<endl;
    }
}
2012-12-12 14:47
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
Problem 1039 - Qinz`s Game
模拟题,通过模拟每天能占领的城堡,直到全部占领或者某一天占领不了了结束

程序代码:
#include <iostream>
using namespace std;

const int way[4][2]={1,0,-1,0,0,1,0,-1};
int a[52][52],n,m,x,y;
int day,castle,ability,v[52][52];

void visit(int x,int y)
{
     for (int i=0; i<4; i++)
     {
         int xx=x+way[i][0],yy=y+way[i][1];
         if (xx<1 || xx>n || yy<1 || yy>m) continue;
         if (v[xx][yy]==0) v[xx][yy]=1;
     }
}

int main()
{
    int T;
    cin>>T;
    
    while (T--)
    {
          cin>>n>>m;
          for (int i=1; i<=n; i++)
            for (int j=1; j<=m; j++) cin>>a[i][j];
          cin>>x>>y;
          
          for (int i=1; i<=n; i++)
            for (int j=1; j<=m; j++) v[i][j]=0;
          v[x][y]=2;
          castle=1; day=0;
          ability=a[x][y];
          visit(x,y);
          
          while (castle<n*m)
          {
                day++;
                int flag=1;
                for (int i=1; i<=n; i++)
                  for (int j=1; j<=m; j++)
                  if (v[i][j]==1 && ability>a[i][j])
                  {
                                  v[i][j]=3;
                                  castle++;
                                  flag=0;
                  }
                for (int i=1; i<=n; i++)
                  for (int j=1; j<=m; j++) 
                    if (v[i][j]==3) 
                    {
                                    v[i][j]=2;
                                    ability++;
                                    visit(i,j);
                    }
                if (flag) break;
          }
          if (castle==n*m) cout<<"YES "<<day<<endl;
                      else cout<<"NO "<<castle<<endl;
    }
}
                       
                                  
2012-12-12 15:15
快速回复:C论坛算法团队 首战 西安电子科技大学OJ
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020068 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved