博文

欧拉函数(2006-07-29 22:00:00)

摘要:是一个定义在整数集的函数,的值等于序列 中与互素的数的个数.   当为素数时,   当为合数时,   若 则 //为什么?   下面将给出计算的一般公式和的一些性质.
定理:设 ,则
   
证明:由的定义知,的值等于序列中与
   互素的数的个数    的值等于序列中与互素的数的个数.     的值等于从减去中与不互素的数
     的个数.    是素数  若 则      即是的倍数    中与不互素的数的个数等于中是
     的倍数的数的个数. 即       又 为素数,                             ......

阅读全文(3733) | 评论:0

Zju 2180 City Game(2006-07-28 22:15:00)

摘要:事实上和1985一摸一样。 #include <cstdio>
#include <string> /* state: 0.34s, 404kb  */ int n, a, b;
int m[1000], r[1000], l[1000]; void pm()
{
 for(int i = 0; i < b; i ++)
 {
  printf("%d ", m[i]);
 }
 printf("\n");
} int main()
{
 //freopen("in.txt", "r", stdin);
 int i, k, j;
 scanf("%d", &n);
 for(i = 0; i < n; i ++)
 {
  memset(m, 0, sizeof(m));
  scanf("%d %d ", &a, &b);
  //pm();
  int max = 0;
  //dp(n^2......)
  for(k = 0; k < a; k ++)
  {
   for(j = 0; j < b; j ++)
   {
    char tc; scanf("%c ", &tc);
    if(tc == 'R')
     m[j] = 0;
    else
     m[j] ++;
   }
......

阅读全文(4354) | 评论:0

ZJU 1008 Gnome Tetravex (2006-07-27 00:13:00)

摘要:这注释是我写的么?忘记了....... /* source:  zju 1008 */
/* describe: dfs   */
/* status:  6.83s-_- */
/* author:  sqc2936  */ #include <stdio.h> int g=0;         //Game index
int n=0;         //Puzzle size
int q=0;         //How many different types of squares
int square[25][4];   //Source squares
int count[25];      //Quantity of a certain type of squares
int table[25];      //Solution int place(int pos)
{
   int i;    if(pos==n*n)
      return 1;    for(i=0; i<q; i++)
   {
      if(count[i]==0)
         continue;......

阅读全文(5576) | 评论:3

ZOJ 1221 Risk(2006-07-27 00:10:00)

摘要:/* source:  zju 1221 */
/* algo:  floyd  */
/* author:  St.Crux  */
#include <cstdio> int m[20][20]; int main()
{
 //freopen("in.txt", "r", stdin);
 int i, k, j, n, a, t = 0;
 while(scanf("%d", &a) != EOF)
 {  
  for(i = 0; i < 20; i ++)
  {
   for(k = 0; k < 20; k ++)
   {
    m[i][k] = ((i == k) ? 0 : 100);
   }
  }
  for(k = 0; k < a; k ++)
  {
   scanf("%d", &j);
   m[0][j - 1] = 1;
   m[j - 1][0] = 1;
  }
  for(i = 1; i < 19; i ++)
  {
   scanf("%d", &a);
   for(k = 0; k < a; k ++)
   {
    scanf("%d", &j);
&n......

阅读全文(4047) | 评论:0

Zju 1985 Largest Rectangle in a Histogra(2006-07-27 00:11:00)

摘要:tle了我几个月.......谢谢cqf大牛的算法。 //State: 0.22s 1512kb //用l,r两个数组保存当前元素向左向右访问能够达到的最大下标,因此可用dp //另:此题甚bt,数据量大的惊人,而且有陷阱,必须用scanf。我用cin的时候起码读了10s......... #include <cstdio> int a[100000], l[100000], r[100000], n; int main()
{
 freopen("in.txt", "r", stdin);
 while(scanf("%d", &n) && n)
 {
  int i;
  double max = 0.00;
  for(i = 0; i < n; i ++)
  {
   scanf("%d", &a[i]);     
  }
  for(i = 0; i < n; i ++)
  {
   l[i] = i;
   while(l[i] > 0 && a[i] <= a[l[i] - 1])
   {
    l[i] = l[l[i] - 1];
   }   
  }
  //pl();
  for(i = n - 1; i >= 0; i --)
  {
   r[i] = i;
   while(r[i] < n - 1 &&am......

阅读全文(4212) | 评论:2