$ x= \int v_x {\rm d}t $
$ y= \int v_y {\rm d}t $
$ \left|v \right|= \sqrt{x^2 + y^2} = v_1 $

【160718】ACM俱乐部暑期交流

  • C++兼容C,但C++不是C的超集。

  • gcc与Visual C++分别代表两种编译器套装,各自都包含C编译器和C++编译器。

  • gcc或Visual C++都根据源代码文件的扩展名*.c/*.cpp选择语言,但评测时的语言选项并非如此。
    提交代码时如需选择语言或编译器,(GNU) gcc=C语言,g++=C++;
    (Microsoft) C=C语言,(Microsoft) C++=C++.

  • 可以把C语言代码当做C++代码提交。

C语言标准 gcc编译选项
ANSI C(C89) -ansi
C99 -std=c99
C11 -std=c11

评测环境、选项会在OJ、正式比赛的文件上说明。

  • 64位整数的输入输出
    __int64类型只能在Visual C++中使用。
    long long的输入输出格式符为%I64d%lld,会出错?
    unsigned long long的输入输出格式符为%I64u%llu,会出错?

  • 输入若干组数据?
    利用scanf函数的返回值。
    利用gets函数的返回值。

  • 变量的内存空间分配

    静态区: 保存自动全局变量和 static 变量(包括 static 全局和局部变量)。静态区的内容在总个程序的生命周期内都存在,由编译器在编译的时候分配。

    堆: 由 malloc 系列函数或 new 操作符分配的内存,其生命周期由 free 或 delete 决定。在没有释放之前一直存在,直到程序结束,其特点是使用灵活,空间比较大,但容易出错

    栈: 保存局部变量,栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁,其特点是效率高,但空间大小有限

【160713】服务器管理记录

uname -a

py编写blog爬虫初步

教程指导

urllib2.HTTPError: HTTP Error 403: Forbidden

需添加header以伪装成浏览器访问。

UnicodeEncodeError: ‘gbk’ codec can’t encode character u’\u200e’ in position 43: illegal multibyte sequence

应在编码转换时略去无关紧要的不可见字符。参见

import urllib
import urllib2
import re
import os

def mkdir(path):
    path = path.strip()

    isExists=os.path.exists(path)

    if not isExists:
        os.makedirs(path)
        return True
    else:
        return False

def output_file(dir,name,content,charset):
    fileName = dir + "/" + name#.encode('utf-8','ignore')
    f = open(fileName,"w+")
    f.write(content.encode(charset,'ignore'))
    print "Output file",fileName

def scan_article(host,link,dir,charset):
    url=host+link

    request = urllib2.Request(url)
    # disguising web browser headers
    request.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36')

    response=urllib2.urlopen(request)

    html= response.read().decode('utf-8','ignore')

    # print html

    pattern=re.compile(r'\s*([\s\S]*?)\s*')

    matches=re.findall(pattern,html)

    if matches:
        title=matches[0]
        # filename=re.sub("\s+","_",title)
        filename=re.sub(r'[\s\\\\\\/:\\*\\?"<>\\|]+',"_",title)
        #print title,"[",filename,"]"
    else:
        print "No title matches"
        return

    pattern=re.compile(r'
\s*([\s\S]*?)\s*
\s*
') matches=re.findall(pattern,html) if matches: html=matches[0] # print html else: print "No contents" return # print "Output file",filename+'.html' try: output_file(dir,filename+'.html',html,charset); except Exception as e: print str(e) return def scan_page(id,host,url,dir,charset): request = urllib2.Request(host+url+str(id)) # disguising web browser headers request.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36') response=urllib2.urlopen(request) html= response.read().decode('utf-8','ignore') # print html; pattern=re.compile(r'([\s\S]*?)',re.I|re.M) items=re.findall(pattern,html) if items: # print items for item in items: next=re.match(re.compile(r'\s*([\s\S]+\S)\s*'),item) if next: href=next.group(1) title=next.group(2) scan_article(host,href,dir,charset) # print href,"->",title,"[",filename,"]" else: print "Invalid item" return else: print "No title matches" return dir='data/csdn_utf-8'; host="http://blog.csdn.net" url="/u013491262/article/list/" charset='utf-8' mkdir(dir) # scan_article(host,"/u013491262/article/details/20783371",dir,'utf-8') for i in range(28,31): print "page ",str(i),":" dir='data/csdn_utf-8'+"/"+str(i).zfill(2) mkdir(dir) scan_page(i,host,url,dir,charset)

2016年上半年写前端的点滴汇总

其实只做了一件事情:写异步回调函数。

附带的成就是知道了如何调用cdn资源,如何使用bootstrap框架,如何jquery.

解决jdbc连接SQL Server常见连接错误

错误信息:
通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“connect timed out。请验证连接属性。确保 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接,还要确保防火墙没有阻止到此端口的 TCP 连接。”。

重要前提:

  • 确保数据库允许远程连接
  • 确保登录名允许远程连接

检查错误:
打开Sql Server Configuration Manager,选中左栏SQL Server网络配置=>< 服务名>的协议,双击TCP/IP以弹出对话框。


特别注意最下方IPAll项的端口设置。
按图设置,重启SQL Server服务后生效。

telnet 127.0.0.1 1433 可供测试端口。

2016江南大学ACM俱乐部招新赛

匆忙而简捷地办完了年度招新活动,实现了第一次JNUOJ线上赛

Ranklist

  • 搭建OJ时不能实现预期中的多服务器并行处理,但评测效率已满足需求

  • VJ始终无法使用,不知原BNUOJ开发者是否会继续维护

  • 命题未免太强调难度了


A. 篱笆和人

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
const int N=100005;
const int mod=1e9+7;
typedef struct node
{
    int x,y;
    bool operator < (const node &other) const
    {
        if(x!=other.x)
         return y 



B. Water Problem

面向新人的提示:不必使用循环结构……

#include 
#include 
#include 
using namespace std;
int main()
{
    long long  t;
    while(scanf("%lld",&t)!=EOF)
    {
       if(!(t%2))
       {
           printf("%lld\n",((t/2-1)/2));
       }
       else
       {
           printf("0\n");
       }
    }
    return 0;
}

C. 交点

已知不存在三线交于一点的情况。圆内一个交点就可由两条线段决定,两条线段又由圆上的四个不同点决定。从圆上选取4个点的组合, $ C^4_n = \frac{n(n-1)(n-2)(n-3)}{24}$。另还有圆上的n个点要计算。

T=int(input())

while T>0:
    T-=1
    n=int(input())
    print n+n*(n-1)*(n-2)*(n-3)/24

D. 食物处理器

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
const int N=100005;
const int mod=1e9+7;
int val[N];
int main()
{
    int k,n,h,c;
    long long time=0;
    while(scanf("%d %d %d",&n,&h,&k)!=EOF)
    {
        c=0,time=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&val[i]);
        }
        for(int i=1;i<=n;i++)
        {
            while(c+val[i]>h)
            {
                if(c>k)
                {
                    int qwe=c;
                    qwe/=k;
                    time+=qwe;
                    c=c%k;
                }
                else
                {
                    c-=k;
                    if(c<0)
                        c=0;
                    time++;
                }
            }
            c+=val[i];
        }
        time+=c/k;
        if(c%k!=0)
        {
            time++;
        }
        cout< 


E. 最大计算值

#include
#include
#include
using namespace std;
char s[111];
int num[111];
int dp[111][111];
char cal[111];
int calu(int a,int b,char c)
{
    if(c=='*')
        return a*b;
    else if(c=='+')
        return a+b;
    else if(c=='-')
        return a-b;
}
int main()
{
    int T;
    scanf("%d",&T);
    for(int i=0;i='0'&&s[i]<='9')
            {
                k*=10;
                k+=s[i]-'0';
                i++;
            }
            dp[len++][len-1]=k;
            cal[len-1]=s[i];
        }
        for(int i=2;i<=len;i++)
        {
            for(int l=0;l=len)break;
                for(int k=l;k 


F. 有趣的字符串

#include
using namespace std;
const int maxn=100005;

char s[maxn];
int a[maxn];
int n,k;

int work(){
    int s=0,t=0,ans=0;
    int cnt=0;
    while( s<=t ){
        while( cnt<=k &&t 

稍暴力些的做法也可:

#include
using namespace std;
const int maxn=100005;

char s[maxn];
int a[maxn];
int n,k;
int dp[maxn];

int work(){
    int ans=0;
    for(int i=1;i<=n;i++){
        for(int j=i;j<=n;j++){
            int tmp=dp[j]-dp[i-1];
            if(tmp<=k)
            ans=max(ans,j-i+1);
        }
    }

    return ans;
}


int main()
{
     int t;
     scanf("%d",&t);
     while(t--){
        scanf("%d%d",&n,&k);
        scanf("%s",s);
        //cout<<"haha"< 


G. 我的世界

/** Sep 19, 2015 7:12:36 PM
 * PrjName:Bc56-01
 * @author Semprathlon
 */
import java.io.*;
import java.util.*;
public class Main {

    /**
     * @param args
     */
    final static int maxn=110;
    static int cnt;
    static int[] w;
    static HashMap mp=new HashMap();
    public static void main(String[] args){
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        PrintWriter out=new PrintWriter(System.out);
        int T=in.nextInt();
        //h=new int[maxn];
        w=new int[maxn];
        while(T-->0){
            int n=in.nextInt();
            cnt=0;
            mp.clear();
            Arrays.fill(w, 0);
            for(int i=1;i<=n;i++){
                int k=in.nextInt();
                if (mp.containsKey(k))
                    w[mp.get(k)]+=in.nextInt();
                else{
                    w[cnt]+=in.nextInt();
                    mp.put(k, cnt++);
                }
            }
            int sum=0;
            for(int i=0;i 


H. 尼古拉斯和数组

#include 
#include
#include
#include
#include
using namespace std;
const int maxn=105;
int num[maxn];
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        memset(num,0,sizeof(num));
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&num[i]);
        }
        int minpos=0;
        int maxpos=0;
        for(int i=1;i<=n;i++)
        {
            if(num[i]==1)
            {
                minpos=i;
            }
            if(num[i]==n)
            {
                maxpos=i;
            }
        }
        int len=0;
        len=abs(maxpos-minpos);
        int ans=0;
        if(len==n-1)
        {
            ans=n-1;
        }
        else
        {
            ans=max(ans,abs(maxpos-1));
            ans=max(ans,abs(n-maxpos));
            ans=max(ans,abs(minpos-1));
            ans=max(ans,abs(minpos-n));
        }
        cout << ans << endl;
    }
    return 0;
}

I. 奇妙的&操作

#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const ll mod=1000000007;
char s[111111];
int cal(int num)
{
    int res=6;
    for(int i=0; i<6; i++)
        if((1<='0'&&s[i]<='9')
                num=s[i]-'0';
            else if(s[i]>='a'&&s[i]<='z')
                num=s[i]-'a'+36;
            else if(s[i]>='A'&&s[i]<='Z')
                num=s[i]-'A'+10;
            else if(s[i]=='-')
                num=62;
            else
                num=63;
            int k=cal(num);
            while(k--)
            {
                ans*=3;
                ans%=mod;
            }
            ans%=mod;
        }
        //cout< 


J. 推箱子

【题意存疑】
怎样在单个地读入字符时排除换行符的影响?

#include 
#include 
#include 
#include 
#include 

using namespace std;

int main()
{
    char y,x;
    int n;
    while(scanf(" %c ",&y)!=EOF)
    {
        scanf("%d",&n);
        if(n&1)
        {
            if(y=='A')
                printf("B\n");
            else
                printf("A\n");
        }
        else
        {
            printf("%c\n",y);
        }
    }
    return 0;
}

【160610】服务器管理记录

  • Ubuntu查看运行中的进程及其id、监听端口

    sudo netstat -anp

  • 查询进程id

    pidof

  • 安全终止某个进程

    kill -15

  • 后台运行某个进程

    nohup&

内存空间不足的临时解决办法
How To Create A Swap File In Linux

linux下由于内存不足造成的 virtual memory exhausted: Cannot allocate memory, qt **.o文件 file not found

configure-apache-to-listen-on-port-other-than-80

http://askubuntu.com/questions/256013/could-not-reliably-determine-the-servers-fully-qualified-domain-name