A:水

B:求两个三角形之间的位置关系:相交 相离 内含

①用三个点是否在三角形内外判断    计算MA*MB、MB*MC、MC*MA的大小 若这三个值同号,那么在三角形的内部,异号在外部

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define INF 2139062143
#define inf -2139062144
#define ll long long
using namespace std;
int x[],y[];
int dian(int a,int i,int j) {
return (x[a] - x[i])*(x[a]-x[j]) + (y[a] - y[i]) * (y[a] - y[j]);
}
bool pan(int a,int b,int c) {
int zheng = ,fu = ;
if(a>) zheng++;
if(b>) zheng++;
if(c>) zheng++;
fu = - zheng;
if(fu == || fu == ) return true;
else return false;
}
int main() {
int t;
int i;
scanf("%d",&t);
bool xx[];
while(t--) {
for(i=; i<; i++) {
scanf("%d%d",&x[i],&y[i]);
}
for(i=; i<; i++) {
xx[i] = pan(dian(i,,),dian(i,,),dian(i,,));
// printf("fuck:%d %d %d\n",dian(i,3,4),dian(i,4,5),dian(i,3,5));
}
for(i=; i<; i++) {
xx[i] = pan(dian(i,,),dian(i,,),dian(i,,));
// printf("fuck:%d %d %d\n",dian(i,0,1),dian(i,0,2),dian(i,1,2));
}
// for(i=0; i<6; i++) printf("%d ",xx[i]);
if(xx[] == true && xx[] == true && xx[] == true) {
printf("contain\n");
continue;
}
if(xx[] == true && xx[] == true && xx[] == true) {
printf("contain\n");
continue;
}
if(xx[] == false && xx[] == false && xx[] == false && xx[] == false && xx[] == false && xx[] == false) {
printf("disjoint\n");
continue;
}
printf("intersect\n");
}
return ;
}

D:KMP加上特殊情况判断

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define INF 2139062143
#define inf -2139062144
#define MOD 1000000007
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define pb push_back
#define pai pair<int,int>
using namespace std;
string ori,pat;
int n,nxt[],ans=;
int GetNext()
{
nxt[]=nxt[]=;
for(int i=;i<pat.size();i++)
{
int j=nxt[i];
while(j&&pat[i]!=pat[j])j=nxt[j];
nxt[i+]=((pat[i]==pat[j])?j+:);
}
}
int Kmp()
{
memset(nxt,,sizeof(nxt));
GetNext();
int j=;
for(int i=;i<ori.size();i++)
{
while(j&&ori[i]!=pat[j])j=nxt[j];
if(ori[i]==pat[j])j++;
if(j==pat.size())ans++;
}
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
cin>>ori>>pat;
if(pat.size()>ori.size())
{
cout<<"Bob"<<endl;
}else
{
int flag1=,flag2=;
ans=;Kmp();
if(ans)flag1=;
reverse(pat.begin(),pat.end());
string t="";
int j;
for(j=;j<pat.size();j++)
{
if(pat[j]!='')break;
}
for(;j<pat.size();j++)
{
t+=pat[j];
}
pat=t;
ans=;Kmp();
if(ans)flag2=;
if(flag1||flag2)cout<<"Alice"<<endl;else cout<<"Bob"<<endl;
}
}
return ;
}

G:猜公式(JAVA)

import java.math.BigInteger;
import java.util.Scanner; public class Main { public static void main(String[] args) {
int t;
Scanner input = new Scanner(System.in);
t = input.nextInt();
while (t-- > ) {
// BigInteger n = input.nextBigInteger();
int n = input.nextInt();
BigInteger flag = BigInteger.valueOf();
for(int i = ;i<=n;i++){
flag = flag.multiply(BigInteger.valueOf(i));
}
BigInteger ans = BigInteger.valueOf();
for(int i = ;i<=n;i++){
ans = ans.add(flag.divide(BigInteger.valueOf(i)));
}
System.out.println(ans + ".0");
}
}
}

F:DFS序加树状数组  子节点增加的值为x+dep[v]∗k−dep[s]∗k,那么维护两个值x+dep[v]*k与-k,用两个树状数组维护这两个值,做到区间修改,单点查询

I:哈希加暴力 或者直接用strcmp函数判

K:错排加逆元加快速幂

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define INF 2139062143
#define inf -2139062144
#define MOD 1000000007
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define pb push_back
#define pai pair<int,int>
//using ll = long long;
//using ull= unsigned long long;
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pai1;
const double EPS=1e-;
const double PI=acos(-);
ll mod=;
const int maxn=;
ll cuo[maxn];
ll ni[maxn];
ll jie[maxn];
ll quick_pow(ll a,ll n)
{
ll result=;
while(n>)
{
if(n&)
result=(result*a)%mod;
a=(a*a)%mod;
n/=;
}
return result;
}
void init()
{
cuo[]=;
cuo[]=;
for(int i=;i<=;i++)
cuo[i]=(i-)*(cuo[i-]+cuo[i-])%mod;
ni[]=jie[]=;
jie[]=ni[]=ni[]=jie[]=;
for(int i=;i<=;i++)
{
jie[i]=i*jie[i-]%mod;
ni[i]=quick_pow(jie[i],mod-);
}
}
int main()
{
//freopen("input.txt","r",stdin);
//freopen("out.txt","w",stdout);
init();
int t;
cin>>t ;
ll anser=;
while(t--)
{
anser=;
int n,k;
cin >> n >> k;
int now=n-k;
if(now==||now==)
{
if(now==)
{
printf("1\n");
continue;
}
else
{
printf("0\n");
continue;
}
}
anser++;
ll cur=;
for(int i=now;i>=;i--)
{
anser+=(((jie[n]*ni[i]%mod)*ni[n-i]%mod)*cuo[i])%mod;
}
cout<<anser%mod<<endl;
}
return ;
}

L:爆搜

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define INF 2139062143
#define inf -2139062144
#define ll long long
using namespace std;
int qi[][];
bool flag;
int ini;
bool pan(int des) {
if(qi[][] == qi[][] && qi[][] == qi[][] && qi[][] == des) return true;
if(qi[][] == qi[][] && qi[][] == qi[][] && qi[][] == des) return true;
if(qi[][] == qi[][] && qi[][] == qi[][] && qi[][] == des) return true; if(qi[][] == qi[][] && qi[][] == qi[][] && qi[][] == des) return true;
if(qi[][] == qi[][] && qi[][] == qi[][] && qi[][] == des) return true;
if(qi[][] == qi[][] && qi[][] == qi[][] && qi[][] == des) return true; if(qi[][] == qi[][] && qi[][] == qi[][] && qi[][] == des) return true;
if(qi[][] == qi[][] && qi[][] == qi[][] && qi[][] == des) return true;
return false;
}
bool dfs(int now,int step) {
int i,j;
if(step == ) {
if(pan(ini)) flag = true;
for(i=; i<; i++) {
for(j=; j<; j++) {
// printf("fuck:%d %d %d\n",i,j,qi[i][j]);
if(qi[i][j] == ) {
qi[i][j] = ini;
if(pan(ini) == true) flag = true;
if(dfs(now * (-),) == true) flag = true;
qi[i][j] = ;
}
}
}
} else {
if(step == ) {
bool temp = true;
for(i=; i<; i++) {
for(j=; j<; j++) {
if(qi[i][j] == ) {
qi[i][j] = (ini*-);
if(pan(ini*-)) temp = false;
if(dfs(ini,) == false) temp = false;
qi[i][j] = ;
}
}
}
return temp;
} else {
if(step == ) {
bool tt = false;
for(i=; i<; i++) {
for(j=; j<; j++) {
if(qi[i][j] == ) {
qi[i][j] = ini;
if(pan(ini)) tt = true;
qi[i][j] = ;
}
}
}
return tt;
}
}
}
}
int main() {
int t;
scanf("%d",&t);
while(t--) {
int i,j;
getchar();
for(i=; i<; i++) {
for(j=; j<; j++) {
char x[];
scanf("%s",x);
char te = x[];
if(te == '.') qi[i][j] = ;
if(te == 'o') qi[i][j] = ;
if(te == 'x') qi[i][j] = -;
}
} char x[];
scanf("%s",x);
char te = x[];
int now;
if(te == 'o') now = ;
if(te == 'x') now = -;
ini = now;
flag = false; if(pan(ini * -) == true) {
printf("Cannot win!\n");
} else {
// for(i=0; i<3; i++) {
// for(j=0; j<3; j++)
// printf("%d ",qi[i][j]);
// printf("\n");
// }
dfs(now,);
if(flag) printf("Kim win!\n");
else printf("Cannot win!\n");
}
}
return ;
}

Summer training round2 #1的更多相关文章

  1. Summer training round2 #3

    A!:                    GTY系列题 B!:莫队加分块  GTY系列题 C!:线段树模拟拓扑排序(把普通的拓扑排序的栈操作改成线段树区间减一,查询区间最右侧的0的位置即可.注意一 ...

  2. Summer training round2 #8(Training26)

    A:贪心DFS 先从最远的搜起 如果一个点的value>=2 就ans++ D:并查集 E:大模拟 F:快速幂 #include <bits/stdc++.h> using name ...

  3. Summer training round2 #9(Training28)

    A:签到题 C:模拟搜索题 #include <bits/stdc++.h> #include <cstring> #include <iostream> #inc ...

  4. Summer training round2 #10(Training 30)

    A:签到题 B!:搜索+DP #include<bits/stdc++.h> #define mp make_pair #define pi pair<int,int> usi ...

  5. Summer training round2 #7 (Training #23)

    A:约瑟夫环 套公式 B:线性筛素数 C:投骰子 概率DP F:有权无向图的生成树(边最大值和最小值只差最小) 直接kruskal G:状压BFS或者双向BFS H:模拟题 I:几何题 J:高斯消元

  6. Summer training round2 #6 (Training #22)

    A:二分答案 如果中位数比目前的大就right=mid-1 else left=mid+1 C!:几何 G:优先队列贪心 #include <bits/stdc++.h> using na ...

  7. Summer training round2 #5 (Training #21)

    A:正着DFS一次处理出每个节点有多少个优先级比他低的(包括自己)作为值v[i] 求A B 再反着DFS求优先级比自己高的求C #include <bits/stdc++.h> #incl ...

  8. Summer training round2 #4 (Training #20)

    A!:UESTC1752 B!:找区间内L到R之间内的数的个数  权值分块加莫队 C!:给你一个哈斯图 去掉其中的几条边 要求输出字典序最大的拓扑排序:线段树模拟拓扑排序 D!:要求你找到最短路树并输 ...

  9. hdu 4946 2014 Multi-University Training Contest 8

    Area of Mushroom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

随机推荐

  1. debian系统中添加sudo权限

    刚安装好的Debian默认还没有sudo功能.1.安装sudo# apt-get install sudo2.修改 /etc/sudoers 文件属性为可写# chmod +w /etc/sudoer ...

  2. Vim常用操作集合

    基本上 vi/vim 共分为三种模式,分别是一般命令模式(Command mode),编辑模式(Insert mode)和命令行模式(Last line mode). 命令模式: 用户刚刚启动 vi/ ...

  3. "在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配" 问题总结

    最近C#连接ODBC数据源时,总是提示"[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配",百度查询之后才知道原来是 ...

  4. Leetcode之动态规划(DP)专题-392. 判断子序列(Is Subsequence)

    Leetcode之动态规划(DP)专题-392. 判断子序列(Is Subsequence) 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 你可以认为 s 和 t 中仅包含英文小写字母. ...

  5. ctf网址,工具 汇总 组会

    @双系统装kali,专门渗透的,ubantu要自己下工具,但是娱乐性比较好 @做题 i春秋 https://www.ichunqiu.com/battalion @网站 xctf近期赛事https:/ ...

  6. EL表达式的11隐含对象

    EL表达式在不同范围如何取值: <% pageContext.setAttribute("book", "红楼梦"); request.setAttrib ...

  7. mapreduce运行的bug收录

    在8088端口可以看到日志文件(主要看error),操作如下: 1.window jdk版本最好和linux jdk 版本一致,不然容易出现莫名奇妙的bug 之前出现一个bug: Unsupporte ...

  8. Hadoop简介及架构

    狭义上来说,hadoop就是单独指代hadoop这个软件, 广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件 2.hadoop的历史版本介绍 0.x系列版本:hadoop当中最早的一 ...

  9. Codeforces 817+818(A~C)

    (点击题目即可查看原题) 817A Treasure Hunt 题意:给出起点和终点,每次移动只能从 (a,b)移动至(a+x,b+y) , (a+x,b-y) , (a-x,b+y) , (a-x, ...

  10. Sigma (化简)牛客多校第一场 -- Integration

    思路: 可以裂项化简,类似找规律,可以两项.三项代进去试试看. #define IOS ios_base::sync_with_stdio(0); cin.tie(0); #include <c ...