給出n個人的身高和體重
要求按身高排序後
奇數序號的人一隊,偶數序號的人一隊
體重大的一隊獲勝
水題,考察點是結構體的排序
要注意的是變數的初始化以及資料型別的精度和輸入
struct給出n種操作,每種操作都由字母表示,當輸入為b時,輸入乙個整數x,代表顧客對產品的出價,當輸入為c是,輸入乙個整數x,代表取消之前**為x的出價,當輸入為q是,詢問當前對產品的出價中只出現過一次的最小的**,如果存在,輸出該最小值,如果不存在,輸出none。node a[
110];
bool
cmp (node a, node b)
intmain()
sort(a, a+n, cmp);
double
s1, s2;
s1 = s2 = 0
;
for (int i = 0; i < n; i++)
else
}if (s1 >s2)
else
if (s1
else
}return0;
}
開闢乙個陣列,用下標表示**,該下標下元素的值代表該**的出價次數,每當顧客出價時,將元素加一,並記錄下當前出價的最大值max,若操作為取消之前的**,就將陣列減一即可;最後詢問最小值的之後只要從一開始遍歷到出價的最大值,找到第乙個值為一的元素即可;
#includeintc - game!main()
,max=0
,x;
char
c; scanf("%d
",&n);
getchar();
for(int i=0;i)
if(c=='c'
)
if(c=='q'
)
if(flag==1
) printf(
"%d\n
",t);
else
printf(
"none\n");
}getchar();}}
return0;
}
博弈現有n個石頭圍成一圈
兩個人輪流拿石頭,可以拿乙個或連續的兩個
拿走最後石頭的獲勝
環形博弈
對於先手只可能在他能拿石子個數的範圍內取勝,否則後手贏。
當石子個數多於兩個的時候
對手只需要拿走先手所選擇石子對面的石子就一定可以獲勝
int三個人(三個人分別為1,2,3)站在三角形的三個頂點(1站在a上,2站在b上,3站在c上)上,另有乙個人站在三角形內部(可以站在內部的任意位置),之後站在頂點上的三個人按照頂點順序開始向相鄰頂點跑動(1->b,2->c,3->a),當三個人中的任意乙個人跑到另乙個頂點的時候,遊戲結束。給定三個人跑向相鄰頂點所需要的時間,問站在三角形內部的那個人能否找到乙個時刻,可以擋住視線(1->c,2->a,3->b),如果有,那就輸出yes和這個時刻,輸出到小數點後四位。如果沒有,輸出no。main()
else
}return0;
}
塞瓦定理:塞瓦定理是指在△abc內任取一點o,延長ao、bo、co分別交對邊於d、e、f,則 (bd/dc)×(ce/ea)×(af/fb)=1
通過塞瓦定理,用二分求解方程即可。如果判斷迴圈條件為low<=high時,會超時,題意要求精確到小數點後四位,所以判斷條件可以改成fabs(n)>1e-5(n為方程的結果)。
#include#include平方數:某個整數的平方;#include
#include
#include
#include
#define n 1000+10
#define inf 0x3f3f3f3f
#define ll long long
using
namespace
std;
intmain()
}while(fabs(n)>1e-5
);
if((int)n==0
) printf(
"yes %.4lf\n
",mid);
else
printf(
"no\n");
}return0;
}
給定一串整數(a1,a2........an),求有多少對整數的乘積(ai*aj),使得這個乘積為平方數。
任何的平方數都可以分解成若干素數的偶次冪,先打表將所有素數的平方全部打出來,之後可以將每乙個數先分解成若干素數的平方次冪,將分解後剩餘的部分存入陣列中,最後只需要找剩餘部分相同的數兩兩匹配即可。
#include#include給兩個數n,m(0<=n,m<=10^1000),代表n個男人和m個 女人,問能否將其分成11組,使得每組男的數量等於女的數量。#include
#include
#include
#include
#define n 10000000+10
#define ll long long
using
namespace
std;
inta[n],b[n],flag[n];
intmain()
}while(t--)
flag[x]++;
}ll ans=0
;
for(int i=1;i)
ans+=flag[i]*(flag[i]-1)/2
; printf(
"%lld\n
",ans);
}return0;
}
因為給的數太大,所以採用字串處理。
同餘定理:
(a+b)%c=(a%c+b%c)%c;
(a*b)%c=(a%c*b%c)%c;
比如:846%c=((8*10+4)*10+6)%c=(((8%c*10*c)%c+4%c)%c*10%c)%c+6%c)%c;
所以通過將字串的每個字元轉換成數字取餘最後判斷即可;
#include#include#include
#include
#define n 10000000
using
namespace
std;
char
n[n],m[n];
intmain()
if(a==0
) printf(
"yes\n");
else
printf(
"no\n");
}else
printf(
"no\n");
}return0;
}
山東省第六屆省賽K題
題意描述 題目原型來自lol遊戲,乙個人和一座塔,共同打n個怪,每個怪都有一定的血量,塔和人都有無限血。每一 擊都是塔先打,而且塔只按順序打怪物,人後打,但人可以選擇任意乙個攻擊,但是人在每一輪可以攻擊也可以不攻擊。求人最多可以給幾個怪物以最後一擊。1 n 1000,塔,人的每次攻擊力x y 在 0...
第四屆山東省省賽題解
幾何 給你等邊三角形的兩個點a和b,求第三個點c的座標 且abc是逆時針的 因為要求abc是逆時針的,所以可以直接用b繞a逆時針旋轉60 這裡有個通用的公式,證明稍微複雜,可以加到模板裡以備不時之需 點 x1,y1 繞點 x2,y2 逆時針旋轉a角度後新的座標 x,y 為 x x1 x2 cos a...
sdut 3258 第六屆山東省ACM省賽H題
題意 乙個數可以表示為另乙個數的平方叫做square number,像3 3 9,9是乙個square number。給定n個數,求有多少對 ai,bi 滿足ai bi為乙個square number,其中i j。思路 除1之外的任何乙個整數都可分解為有限個質數的乘積,所以可以推得兩個數分解為質因數...