点击题目即可查看原题
这次的题目都是经典题,
我是个猪吧?
这题dp
把这一串字符串分成若干个回文串,问切割的次数
也就是问最少能分几串
因为 n < = 1000 n<=1000 n<=1000,所以想应该可以 O ( n 2 ) O(n^2) O(n2)
刚开始我是直接找这个串的回文串有多少个,WA, 我又反着找,求最小的,还是wa。就是没有想到dp
令dp[i]表示从字符串从位置1到位置 i ,最少要切割多少次
#include
#include
#include
#include
using namespace std;
const int MAXN = 1e3+7;
int dp[MAXN];
char s[MAXN];
bool check(char *s,int l,int r) {
while(l<=r) {
if(s[l]!=s[r])
return false;
l++;
r--;
}
return true;
}
int main() {
// freopen("../in.txt","r",stdin);
int t;
scanf("%d",&t);
while(t--) {
scanf("%s",s+1);
int len = strlen(s+1);
memset(dp,0,sizeof(dp));
for(int i=1;i<=len;++i) {
dp[i] = MAXN;
for(int j=1;j<=i;++j) {
if(check(s,j,i)) {
if(j==1)
dp[i] = 1;
else
dp[i] = min(dp[i],dp[j-1]+1);
}
}
}
printf("%d\n",dp[len]-1);
}
return 0;
}
这题二分
// #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define lp rt<<1
#define rp rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std;
typedef long long ll;
typedef pair<int ,int> P;
const int INF = 0x3f3f3f3f;
const int MAXN = 2e4+7;
int a[MAXN];
int l,r;
int total,num;
int n,k;
bool judge(int x) {
for(int i=0;i<n;++i) {
if(total+a[i]<=x) total += a[i];
else total = a[i], num++;
}
return num>=k;
}
int main(){
// freopen("../in.txt","r",stdin);
// freopen("../out.txt","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
while(cin>>n>>k) {
l = r = 0;
for(int i=0;i<n;++i) {
cin>>a[i];
r += a[i];
l = max(l,a[i]);
}
while(l<=r) {
int mid = (l+r)>>1;
total = num = 0;
if(judge(mid)) l = mid+1;
else r = mid-1;
}
cout<<l<<endl;
}
return 0;
}
这题水
// #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define lp rt<<1
#define rp rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std;
typedef long long ll;
typedef pair<int ,int> P;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e6+7;
int main(){
// freopen("../in.txt","r",stdin);
// freopen("../out.txt","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
string str;
while(getline(cin,str)) {
// cout<
string s="";
s+=toupper(str[0]);
for(int i=1;i<str.length();++i) {
if(str[i-1]==' ') {
s += toupper(str[i]);
// cout<
}
}
cout<<s<<endl;
}
return 0;
}
这题费马小定理
// #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define lp rt<<1
#define rp rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std;
typedef long long ll;
typedef pair<int ,int> P;
typedef unsigned long long ull;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e6+7;
int main(){
// freopen("../in.txt","r",stdin);
// freopen("../out.txt","w",stdout);
// ios::sync_with_stdio(0);
// cin.tie(0);
ll t;
ll a,b;
ull p;
scanf("%lld",&t);
// cin>>t;
while(t--) {
scanf("%lld %lld %llu",&a,&b,&p);
// printf("%lld %lld %llu\n",a,b,p);
printf("%lld\n",((a+b)%p+p)%p);;
// cin>>a>>b>>p;
// cout<<((a+b)%p+p)%p<
}
return 0;
}
这题思维,我做过原题
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
typedef pair<int ,int> P;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e5+7;
ll p[MAXN];
int main(){
// freopen("../in.txt","r",stdin);
// freopen("../out.txt","w",stdout);
ll n,t;
while(~scanf("%lld %lld",&n,&t)){
for(int i=0;i<n;++i){
ll x,y;
scanf("%lld %lld",&x,&y);
p[i] = x + y * t;
}
ll num = n;
for(int i=n-1;i>0;--i){
if(p[i-1]>=p[i]){
p[i-1] = p[i];
num--;
}
}
printf("%lld\n",num);
}
return 0;
}
/**************************************************************
Problem: 1530
User: 311709001223
Language: C++
Result: 正确
Time:34 ms
Memory:2432 kb
****************************************************************/
这题…,我傻逼
// #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define lp rt<<1
#define rp rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std;
typedef long long ll;
typedef pair<int ,int> P;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e6+7;
int a[MAXN];
ll sum[MAXN];
int p[MAXN];
int main(){
// freopen("../in.txt","r",stdin);
// freopen("../out.txt","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
int n,k;
while(~scanf("%d %d",&n,&k)) {
sum[0] = 0;
int ans = 0;
memset(p,0,sizeof(p));
for(int i=0;i<n;++i) {
scanf("%d",&a[i]);
sum[i+1] = sum[i]+a[i];
sum[i+1] %= k;
if(sum[i+1]==0) {
ans = max(ans,i+1);
continue;
}
if(p[sum[i+1]]==0) p[sum[i+1]] = i+1;
ans = max(ans, i+1-p[sum[i+1]]);
}
printf("%d\n",ans);
}
return 0;
}
/**************************************************************
Problem: 1531
User: 311709001223
Language: C++
Result: 正确
Time:8 ms
Memory:17276 kb
****************************************************************/
这题傻逼
// #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define lp rt<<1
#define rp rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std;
typedef long long ll;
typedef pair<int ,int> P;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e6+7;
ll x[MAXN];
ll m,a,c,n,g;
int main(){
// freopen("../in.txt","r",stdin);
// freopen("../out.txt","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
while(cin>>m>>a>>c>>x[0]>>n>>g) {
for(int i=1;i<=n;++i)
x[i] = (a*x[i-1]+c)%m;
cout<<x[n]%g<<endl;
}
return 0;
}
/**************************************************************
Problem: 1532
User: 311709001223
Language: C++
Result: 正确
Time:30 ms
Memory:9456 kb
****************************************************************/
这题傻逼
// #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define lp rt<<1
#define rp rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std;
typedef long long ll;
// typedef pair P;
const int INF = 0x3f3f3f3f;
const int MAXN = 222;
int x[MAXN],y[MAXN];
double P[MAXN*MAXN];
double p(int i,int j) {
int dx = x[i] - x[j];
int dy = y[i] - y[j];
if(dx)
return 1.0*dy/dx;
else
return INF;
}
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;++i)
scanf("%d %d",&x[i],&y[i]);
int cnt = 0;
for(int i=0;i<n;++i)
for(int j=i+1;j<n;++j)
P[cnt++] = p(i,j);
sort(P,P+cnt);
cnt = unique(P,P+cnt)-P;
printf("%d\n",cnt);
return 0;
}
/**************************************************************
Problem: 1533
User: 311709001223
Language: C++
Result: 正确
Time:4 ms
Memory:2040 kb
****************************************************************/
这题傻逼
// #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define lp rt<<1
#define rp rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std;
typedef long long ll;
typedef pair<int ,int> P;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e6+7;
int main(){
// freopen("../in.txt","r",stdin);
// freopen("../out.txt","w",stdout);
// ios::sync_with_stdio(0);
// cin.tie(0);
int a;
scanf("%d",&a);
if(a%8==0) {
int h,l,area;
h = a/8;
l = h*3;
area = h*l;
printf("%d %d %d\n",l,h,area);
}
else {
double h,l,area;
h = 1.0*a/8.0;
l = h*3.0;
area = h*l;
printf("%.3lf %.3lf %.3lf\n",l,h,area);
}
return 0;
}
/**************************************************************
Problem: 1534
User: 311709001223
Language: C++
Result: 正确
Time:2 ms
Memory:1648 kb
****************************************************************/